@fireproof/core 0.10.0-dev → 0.10.2-dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. package/dist/fireproof.browser.js +2 -3
  2. package/dist/fireproof.browser.js.map +2 -2
  3. package/dist/fireproof.cjs.js +2 -3
  4. package/dist/fireproof.cjs.js.map +2 -2
  5. package/dist/fireproof.esm.js +2 -3
  6. package/dist/fireproof.esm.js.map +2 -2
  7. package/package.json +5 -1
  8. package/.eslintrc.cjs +0 -37
  9. package/.vscode/launch.json +0 -12
  10. package/dist/crdt-helpers.browser.js +0 -4961
  11. package/dist/crdt-helpers.browser.js.map +0 -7
  12. package/dist/crdt-helpers.cjs.js +0 -4823
  13. package/dist/crdt-helpers.cjs.js.map +0 -7
  14. package/dist/crdt-helpers.esm.js +0 -4788
  15. package/dist/crdt-helpers.esm.js.map +0 -7
  16. package/dist/crdt.browser.js +0 -18214
  17. package/dist/crdt.browser.js.map +0 -7
  18. package/dist/crdt.cjs.js +0 -8692
  19. package/dist/crdt.cjs.js.map +0 -7
  20. package/dist/crdt.esm.js +0 -8682
  21. package/dist/crdt.esm.js.map +0 -7
  22. package/dist/database.browser.js +0 -18867
  23. package/dist/database.browser.js.map +0 -7
  24. package/dist/database.cjs.js +0 -9296
  25. package/dist/database.cjs.js.map +0 -7
  26. package/dist/database.esm.js +0 -9288
  27. package/dist/database.esm.js.map +0 -7
  28. package/dist/loader-helpers.browser.js +0 -6943
  29. package/dist/loader-helpers.browser.js.map +0 -7
  30. package/dist/loader-helpers.cjs.js +0 -4419
  31. package/dist/loader-helpers.cjs.js.map +0 -7
  32. package/dist/loader-helpers.esm.js +0 -4408
  33. package/dist/loader-helpers.esm.js.map +0 -7
  34. package/dist/loader.browser.js +0 -15968
  35. package/dist/loader.browser.js.map +0 -7
  36. package/dist/loader.cjs.js +0 -6667
  37. package/dist/loader.cjs.js.map +0 -7
  38. package/dist/loader.esm.js +0 -6657
  39. package/dist/loader.esm.js.map +0 -7
  40. package/dist/store-browser.browser.js +0 -1414
  41. package/dist/store-browser.browser.js.map +0 -7
  42. package/dist/store-browser.cjs.js +0 -1387
  43. package/dist/store-browser.cjs.js.map +0 -7
  44. package/dist/store-browser.esm.js +0 -1358
  45. package/dist/store-browser.esm.js.map +0 -7
  46. package/dist/store-fs.browser.js +0 -16142
  47. package/dist/store-fs.browser.js.map +0 -7
  48. package/dist/store-fs.cjs.js +0 -1171
  49. package/dist/store-fs.cjs.js.map +0 -7
  50. package/dist/store-fs.esm.js +0 -1143
  51. package/dist/store-fs.esm.js.map +0 -7
  52. package/dist/store.browser.js +0 -1113
  53. package/dist/store.browser.js.map +0 -7
  54. package/dist/store.cjs.js +0 -1126
  55. package/dist/store.cjs.js.map +0 -7
  56. package/dist/store.esm.js +0 -1097
  57. package/dist/store.esm.js.map +0 -7
  58. package/dist/transaction.browser.js +0 -17241
  59. package/dist/transaction.browser.js.map +0 -7
  60. package/dist/transaction.cjs.js +0 -7842
  61. package/dist/transaction.cjs.js.map +0 -7
  62. package/dist/transaction.esm.js +0 -7831
  63. package/dist/transaction.esm.js.map +0 -7
  64. package/dist/types.d.browser.js +0 -4
  65. package/dist/types.d.browser.js.map +0 -7
  66. package/dist/types.d.cjs.js +0 -19
  67. package/dist/types.d.cjs.js.map +0 -7
  68. package/dist/types.d.esm.js +0 -1
  69. package/dist/types.d.esm.js.map +0 -7
  70. package/scripts/analyze.js +0 -31
  71. package/scripts/build.js +0 -20
  72. package/scripts/serve.js +0 -20
  73. package/scripts/settings.js +0 -65
  74. package/scripts/test.js +0 -14
  75. package/src/crdt-helpers.ts +0 -89
  76. package/src/crdt.ts +0 -45
  77. package/src/database.ts +0 -61
  78. package/src/fireproof.ts +0 -6
  79. package/src/loader-helpers.ts +0 -53
  80. package/src/loader.ts +0 -66
  81. package/src/store-browser.ts +0 -76
  82. package/src/store-fs.ts +0 -51
  83. package/src/store.ts +0 -32
  84. package/src/transaction.ts +0 -68
  85. package/src/types.d.ts +0 -38
  86. package/test/crdt.test.js +0 -142
  87. package/test/database.test.js +0 -144
  88. package/test/fireproof.test.js +0 -50
  89. package/test/globals.d.ts +0 -4
  90. package/test/hello.test.js +0 -9
  91. package/test/helpers.js +0 -34
  92. package/test/loader.test.js +0 -112
  93. package/test/store-fs.test.js +0 -105
  94. package/test/transaction.test.js +0 -90
  95. package/tsconfig.json +0 -18
  96. package/webpack.config.cjs +0 -17
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js", "../node_modules/@jspm/core/nodelibs/browser/process.js", "../node_modules/esbuild-plugin-polyfill-node/polyfills/process.js", "../node_modules/@jspm/core/nodelibs/browser/buffer.js", "../node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js", "../node_modules/async/internal/onlyOnce.js", "../node_modules/async/internal/setImmediate.js", "../node_modules/async/internal/DoublyLinkedList.js", "../node_modules/async/internal/initialParams.js", "../node_modules/async/asyncify.js", "../node_modules/async/internal/wrapAsync.js", "../node_modules/async/internal/queue.js", "../node_modules/async/cargoQueue.js", "../node_modules/varint/encode.js", "../node_modules/varint/decode.js", "../node_modules/varint/length.js", "../node_modules/varint/index.js", "../src/database.ts", "../src/crdt.ts", "../src/transaction.ts", "../node_modules/@alanshaw/pail/src/block.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/link.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/link/interface.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/cid.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/varint.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/vendor/varint.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/hashes/digest.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/bytes.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/bases/base58.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/bases/base.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/vendor/base-x.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/bases/interface.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/bases/base32.js", "../src/loader.ts", "../node_modules/@ipld/car/src/index.js", "../node_modules/@ipld/car/src/reader-browser.js", "../node_modules/@ipld/car/src/decoder.js", "../node_modules/@ipld/car/node_modules/multiformats/src/cid.js", "../node_modules/@ipld/car/node_modules/multiformats/src/varint.js", "../node_modules/@ipld/car/node_modules/multiformats/vendor/varint.js", "../node_modules/@ipld/car/node_modules/multiformats/src/hashes/digest.js", "../node_modules/@ipld/car/node_modules/multiformats/src/bytes.js", "../node_modules/@ipld/car/node_modules/multiformats/src/bases/base58.js", "../node_modules/@ipld/car/node_modules/multiformats/src/bases/base.js", "../node_modules/@ipld/car/node_modules/multiformats/vendor/base-x.js", "../node_modules/@ipld/car/node_modules/multiformats/src/bases/interface.js", "../node_modules/@ipld/car/node_modules/multiformats/src/bases/base32.js", "../node_modules/@ipld/car/node_modules/multiformats/src/link/interface.js", "../node_modules/@ipld/dag-cbor/src/index.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/cborg.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/encode.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/is.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/token.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/bl.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/byte-utils.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/common.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/jump.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/0uint.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/1negint.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/2bytes.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/3string.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/4array.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/5map.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/6tag.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/7float.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/decode.js", "../node_modules/multiformats/src/cid.js", "../node_modules/multiformats/src/varint.js", "../node_modules/multiformats/vendor/varint.js", "../node_modules/multiformats/src/hashes/digest.js", "../node_modules/multiformats/src/bytes.js", "../node_modules/multiformats/src/bases/base58.js", "../node_modules/multiformats/src/bases/base.js", "../node_modules/multiformats/vendor/base-x.js", "../node_modules/multiformats/src/bases/interface.js", "../node_modules/multiformats/src/bases/base32.js", "../node_modules/multiformats/src/link/interface.js", "../node_modules/@ipld/car/src/header-validator.js", "../node_modules/@ipld/car/src/decoder-common.js", "../node_modules/@ipld/car/src/buffer-reader-browser.js", "../node_modules/@ipld/car/src/buffer-decoder.js", "../node_modules/@ipld/car/src/indexer.js", "../node_modules/@ipld/car/src/iterator.js", "../node_modules/@ipld/car/src/writer-browser.js", "../node_modules/@ipld/car/src/encoder.js", "../node_modules/@ipld/car/src/iterator-channel.js", "../node_modules/@ipld/car/src/indexed-reader.js", "../node_modules/esbuild-plugin-polyfill-node/polyfills/empty.js", "../node_modules/@jspm/core/nodelibs/browser/stream.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-6c718bbe.js", "../node_modules/@jspm/core/nodelibs/browser/events.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-4bd36a8f.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-44e51b61.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-ce0fbc82.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-b4205b57.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-5decc758.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-2eac56ff.js", "../node_modules/@jspm/core/nodelibs/browser/chunk-4ccc3a29.js", "../node_modules/@jspm/core/nodelibs/browser/util.js", "../node_modules/@ipld/car/src/buffer-writer.js", "../node_modules/cborg/esm/cborg.js", "../node_modules/cborg/esm/lib/encode.js", "../node_modules/cborg/esm/lib/is.js", "../node_modules/cborg/esm/lib/token.js", "../node_modules/cborg/esm/lib/bl.js", "../node_modules/cborg/esm/lib/byte-utils.js", "../node_modules/cborg/esm/lib/common.js", "../node_modules/cborg/esm/lib/jump.js", "../node_modules/cborg/esm/lib/0uint.js", "../node_modules/cborg/esm/lib/1negint.js", "../node_modules/cborg/esm/lib/2bytes.js", "../node_modules/cborg/esm/lib/3string.js", "../node_modules/cborg/esm/lib/4array.js", "../node_modules/cborg/esm/lib/5map.js", "../node_modules/cborg/esm/lib/6tag.js", "../node_modules/cborg/esm/lib/7float.js", "../node_modules/cborg/esm/lib/decode.js", "../node_modules/cborg/esm/lib/length.js", "../src/store-browser.ts", "../node_modules/idb/build/index.js", "../node_modules/idb/build/wrap-idb-value.js", "../src/store.ts", "../node_modules/multiformats/src/link.js", "../src/loader-helpers.ts", "../node_modules/multiformats/src/block.js", "../node_modules/multiformats/src/index.js", "../node_modules/multiformats/src/hashes/hasher.js", "../node_modules/multiformats/src/interface.js", "../node_modules/multiformats/src/hashes/sha2-browser.js", "../node_modules/multiformats/src/codecs/raw.js", "../src/crdt-helpers.ts", "../node_modules/@alanshaw/pail/src/crdt.js", "../node_modules/@alanshaw/pail/src/clock.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/block.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/index.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/hashes/hasher.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/interface.js", "../node_modules/@alanshaw/pail/node_modules/multiformats/src/hashes/sha2-browser.js", "../node_modules/@alanshaw/pail/src/index.js", "../node_modules/@alanshaw/pail/src/shard.js"],
4
- "sourcesContent": ["export const __dirname = \"/\";\n", "function unimplemented(name) {\r\n throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n if (!draining || !currentQueue)\r\n return;\r\n draining = false;\r\n if (currentQueue.length) {\r\n queue = currentQueue.concat(queue);\r\n }\r\n else {\r\n queueIndex = -1;\r\n }\r\n if (queue.length)\r\n drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n if (draining)\r\n return;\r\n var timeout = setTimeout(cleanUpNextTick, 0);\r\n draining = true;\r\n\r\n var len = queue.length;\r\n while(len) {\r\n currentQueue = queue;\r\n queue = [];\r\n while (++queueIndex < len) {\r\n if (currentQueue)\r\n currentQueue[queueIndex].run();\r\n }\r\n queueIndex = -1;\r\n len = queue.length;\r\n }\r\n currentQueue = null;\r\n draining = false;\r\n clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n var args = new Array(arguments.length - 1);\r\n if (arguments.length > 1) {\r\n for (var i = 1; i < arguments.length; i++)\r\n args[i - 1] = arguments[i];\r\n }\r\n queue.push(new Item(fun, args));\r\n if (queue.length === 1 && !draining)\r\n setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n this.fun = fun;\r\n this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n PATH: '/usr/bin',\r\n LANG: navigator.language + '.UTF-8',\r\n PWD: '/',\r\n HOME: '/home',\r\n TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n name: 'node',\r\n sourceUrl: '',\r\n headersUrl: '',\r\n libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n inspector: false,\r\n debug: false,\r\n uv: false,\r\n ipv6: false,\r\n tls_alpn: false,\r\n tls_sni: false,\r\n tls_ocsp: false,\r\n tls: false,\r\n cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n var nowOffset = Date.now();\r\n\r\n if (_performance.timing && _performance.timing.navigationStart) {\r\n nowOffset = _performance.timing.navigationStart;\r\n }\r\n _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n var clocktime = _performance.now() * 1e-3;\r\n var seconds = Math.floor(clocktime) + baseNow;\r\n var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n if (previousTimestamp) {\r\n seconds = seconds - previousTimestamp[0];\r\n nanoseconds = nanoseconds - previousTimestamp[1];\r\n if (nanoseconds < 0) {\r\n seconds--;\r\n nanoseconds += nanoPerSec;\r\n }\r\n }\r\n return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n var diff = hrtime(time);\r\n if (typeof BigInt === 'undefined') {\r\n return diff[0] * nanoPerSec + diff[1];\r\n }\r\n return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n version,\r\n versions,\r\n arch,\r\n platform,\r\n release,\r\n _rawDebug,\r\n moduleLoadList,\r\n binding,\r\n _linkedBinding,\r\n _events,\r\n _eventsCount,\r\n _maxListeners,\r\n on,\r\n addListener,\r\n once,\r\n off,\r\n removeListener,\r\n removeAllListeners,\r\n emit,\r\n prependListener,\r\n prependOnceListener,\r\n listeners,\r\n domain,\r\n _exiting,\r\n config,\r\n dlopen,\r\n uptime,\r\n _getActiveRequests,\r\n _getActiveHandles,\r\n reallyExit,\r\n _kill,\r\n cpuUsage,\r\n resourceUsage,\r\n memoryUsage,\r\n kill,\r\n exit,\r\n openStdin,\r\n allowedNodeEnvironmentFlags,\r\n assert,\r\n features,\r\n _fatalExceptions,\r\n setUncaughtExceptionCaptureCallback,\r\n hasUncaughtExceptionCaptureCallback,\r\n emitWarning,\r\n nextTick,\r\n _tickCallback,\r\n _debugProcess,\r\n _debugEnd,\r\n _startProfilerIdleNotifier,\r\n _stopProfilerIdleNotifier,\r\n stdout,\r\n stdin,\r\n stderr,\r\n abort,\r\n umask,\r\n chdir,\r\n cwd,\r\n env,\r\n title,\r\n argv,\r\n execArgv,\r\n pid,\r\n ppid,\r\n execPath,\r\n debugPort,\r\n hrtime,\r\n argv0,\r\n _preload_modules,\r\n setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n", "export * as process from \"process\";\n", "var exports$3 = {},\n _dewExec$2 = false;\nfunction dew$2() {\n if (_dewExec$2) return exports$3;\n _dewExec$2 = true;\n exports$3.byteLength = byteLength;\n exports$3.toByteArray = toByteArray;\n exports$3.fromByteArray = fromByteArray;\n var lookup = [];\n var revLookup = [];\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n } // Support decoding URL-safe base64 strings, as Node.js does.\n // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n\n function getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf(\"=\");\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n } // base64 is 4/3 + up to two characters of the original data\n\n\n function byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n\n function _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n\n function toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 255;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 255;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n\n return arr;\n }\n\n function tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n }\n\n function encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join(\"\");\n }\n\n function fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n }\n\n return parts.join(\"\");\n }\n\n return exports$3;\n}\n\nvar exports$2 = {},\n _dewExec$1 = false;\nfunction dew$1() {\n if (_dewExec$1) return exports$2;\n _dewExec$1 = true;\n\n /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n exports$2.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n };\n\n exports$2.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n };\n\n return exports$2;\n}\n\nvar exports$1 = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports$1;\n _dewExec = true;\n\n const base64 = dew$2();\n\n const ieee754 = dew$1();\n\n const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n : null;\n exports$1.Buffer = Buffer;\n exports$1.SlowBuffer = SlowBuffer;\n exports$1.INSPECT_MAX_BYTES = 50;\n const K_MAX_LENGTH = 2147483647;\n exports$1.kMaxLength = K_MAX_LENGTH;\n /**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\n\n Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n }\n\n function typedArraySupport() {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1);\n const proto = {\n foo: function () {\n return 42;\n }\n };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n }\n\n Object.defineProperty(Buffer.prototype, \"parent\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.buffer;\n }\n });\n Object.defineProperty(Buffer.prototype, \"offset\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.byteOffset;\n }\n });\n\n function createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n } // Return an augmented `Uint8Array` instance\n\n\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n /**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\n function Buffer(arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n }\n\n return allocUnsafe(arg);\n }\n\n return from(arg, encodingOrOffset, length);\n }\n\n Buffer.poolSize = 8192; // not used by this implementation\n\n function from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return fromString(value, encodingOrOffset);\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n\n if (value == null) {\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n\n if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n\n if (typeof value === \"number\") {\n throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n }\n\n const valueOf = value.valueOf && value.valueOf();\n\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n\n const b = fromObject(value);\n if (b) return b;\n\n if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n }\n\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n /**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\n Buffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n }; // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n // https://github.com/feross/buffer/pull/148\n\n\n Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n Object.setPrototypeOf(Buffer, Uint8Array);\n\n function assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n } else if (size < 0) {\n throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n }\n }\n\n function alloc(size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n\n return createBuffer(size);\n }\n /**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\n Buffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n };\n\n function allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n }\n /**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\n Buffer.allocUnsafe = function (size) {\n return allocUnsafe(size);\n };\n /**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\n Buffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n };\n\n function fromString(string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n\n return buf;\n }\n\n function fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n\n return buf;\n }\n\n function fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n\n return fromArrayLike(arrayView);\n }\n\n function fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n }\n\n let buf;\n\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n } // Return an augmented `Uint8Array` instance\n\n\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n\n function fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n\n if (buf.length === 0) {\n return buf;\n }\n\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n\n return fromArrayLike(obj);\n }\n\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n }\n\n function checked(length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n }\n\n return length | 0;\n }\n\n function SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n }\n\n Buffer.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n };\n\n Buffer.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n }\n\n if (a === b) return 0;\n let x = a.length;\n let y = b.length;\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n\n Buffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n\n default:\n return false;\n }\n };\n\n Buffer.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n let i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(buffer, buf, pos);\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n } else {\n buf.copy(buffer, pos);\n }\n\n pos += buf.length;\n }\n\n return buffer;\n };\n\n function byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n }\n\n const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0; // Use a for loop to avoid recursion\n\n let loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n\n case \"utf8\":\n case \"utf-8\":\n return utf8ToBytes(string).length;\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n\n case \"hex\":\n return len >>> 1;\n\n case \"base64\":\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n }\n\n Buffer.byteLength = byteLength;\n\n function slowToString(encoding, start, end) {\n let loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return \"\";\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return \"\";\n } // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return \"\";\n }\n\n if (!encoding) encoding = \"utf8\";\n\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n\n case \"ascii\":\n return asciiSlice(this, start, end);\n\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n\n case \"base64\":\n return base64Slice(this, start, end);\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n } // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n // reliably in a browserify context because there could be multiple different\n // copies of the 'buffer' package in use. This method works even for Buffer\n // instances that were created from another copy of the `buffer` package.\n // See: https://github.com/feross/buffer/issues/154\n\n\n Buffer.prototype._isBuffer = true;\n\n function swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n }\n\n Buffer.prototype.swap16 = function swap16() {\n const len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n };\n\n Buffer.prototype.swap32 = function swap32() {\n const len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n };\n\n Buffer.prototype.swap64 = function swap64() {\n const len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n };\n\n Buffer.prototype.toString = function toString() {\n const length = this.length;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n\n Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n Buffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n };\n\n Buffer.prototype.inspect = function inspect() {\n let str = \"\";\n const max = exports$1.INSPECT_MAX_BYTES;\n str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n if (this.length > max) str += \" ... \";\n return \"<Buffer \" + str + \">\";\n };\n\n if (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n }\n\n Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n }; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n //\n // Arguments:\n // - buffer - a Buffer to search\n // - val - a string, Buffer, or number\n // - byteOffset - an index into `buffer`; will be clamped to an int32\n // - encoding - an optional encoding, relevant is val is a string\n // - dir - true for indexOf, false for lastIndexOf\n\n\n function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === \"string\") {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255; // Search for a byte value [0-255]\n\n if (typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError(\"val must be string, number or Buffer\");\n }\n\n function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n let i;\n\n if (dir) {\n let foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n }\n\n Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n\n Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n\n Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n\n function hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n }\n\n const strLen = string.length;\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n let i;\n\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n }\n\n function utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n }\n\n function asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n }\n\n function base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n }\n\n function ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n }\n\n Buffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = \"utf8\";\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n }\n\n const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n\n if (!encoding) encoding = \"utf8\";\n let loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return asciiWrite(this, string, offset, length);\n\n case \"base64\":\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n\n Buffer.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n\n function base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n }\n\n function utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\n\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\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\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n } // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n // the lowest limit is Chrome, with 0x10000 args.\n // We go 1 magnitude less, for safety\n\n\n const MAX_ARGUMENTS_LENGTH = 4096;\n\n function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n let res = \"\";\n let i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n }\n\n function asciiSlice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n\n return ret;\n }\n\n function latin1Slice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n }\n\n function hexSlice(buf, start, end) {\n const len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n let out = \"\";\n\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n\n return out;\n }\n\n function utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = \"\"; // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n }\n\n Buffer.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n const newBuf = this.subarray(start, end); // Return an augmented `Uint8Array` instance\n\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n };\n /*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\n function checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n }\n\n Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n };\n\n Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n let val = this[offset + --byteLength];\n let mul = 1;\n\n while (byteLength > 0 && (mul *= 256)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n };\n\n Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n\n Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n\n Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n\n Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n\n Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n\n Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n });\n Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n });\n\n Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n\n Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let i = byteLength;\n let mul = 1;\n let val = this[offset + --i];\n\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n\n Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n\n Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n\n Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n\n Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n\n Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n\n Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n });\n Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n });\n\n Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n };\n\n Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n };\n\n Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n };\n\n Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n };\n\n function checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n }\n\n Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let mul = 1;\n let i = 0;\n this[offset] = value & 255;\n\n while (++i < byteLength && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 255;\n\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n this[offset] = value & 255;\n return offset + 1;\n };\n\n Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n\n Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n\n Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n return offset + 4;\n };\n\n Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n\n function wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n }\n\n function wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n }\n\n Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n\n Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 255;\n\n while (++i < byteLength && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 255;\n\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n\n Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n\n Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n\n Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n };\n\n Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n\n Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n\n function checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n }\n\n function writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n }\n\n Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n\n Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n\n function writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n }\n\n Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n\n Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n }; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\n Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n\n if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\"); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n const len = end - start;\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n }\n\n return len;\n }; // Usage:\n // buffer.fill(number[, offset[, end]])\n // buffer.fill(buffer[, offset[, end]])\n // buffer.fill(string[, offset[, end]][, encoding])\n\n\n Buffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n\n if (encoding !== undefined && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n\n if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n\n if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n } else if (typeof val === \"boolean\") {\n val = Number(val);\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\n\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n const len = bytes.length;\n\n if (len === 0) {\n throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n }\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n }; // CUSTOM ERRORS\n // =============\n // Simplified versions from Node, changed for Buffer-only usage\n\n\n const errors = {};\n\n function E(sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor() {\n super();\n Object.defineProperty(this, \"message\", {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n }); // Add the error code to the name to include it in the stack trace.\n\n this.name = `${this.name} [${sym}]`; // Access the stack to generate the error message including the error code\n // from the name.\n\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n\n delete this.name;\n }\n\n get code() {\n return sym;\n }\n\n set code(value) {\n Object.defineProperty(this, \"code\", {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n\n toString() {\n return `${this.name} [${sym}]: ${this.message}`;\n }\n\n };\n }\n\n E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`;\n }\n\n return \"Attempt to access memory outside buffer bounds\";\n }, RangeError);\n E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n }, TypeError);\n E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`;\n let received = input;\n\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === \"bigint\") {\n received = String(input);\n\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n\n received += \"n\";\n }\n\n msg += ` It must be ${range}. Received ${received}`;\n return msg;\n }, RangeError);\n\n function addNumericalSeparator(val) {\n let res = \"\";\n let i = val.length;\n const start = val[0] === \"-\" ? 1 : 0;\n\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n\n return `${val.slice(0, i)}${res}`;\n } // CHECK FUNCTIONS\n // ===============\n\n\n function checkBounds(buf, offset, byteLength) {\n validateNumber(offset, \"offset\");\n\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n }\n\n function checkIntBI(value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === \"bigint\" ? \"n\" : \"\";\n let range;\n\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`;\n }\n\n throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n }\n\n checkBounds(buf, offset, byteLength);\n }\n\n function validateNumber(value, name) {\n if (typeof value !== \"number\") {\n throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n }\n }\n\n function boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || \"offset\", \"an integer\", value);\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || \"offset\", `>= ${type ? 1 : 0} and <= ${length}`, value);\n } // HELPER FUNCTIONS\n // ================\n\n\n const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n function base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split(\"=\")[0]; // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\n str = str.trim().replace(INVALID_BASE64_RE, \"\"); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return \"\"; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n\n return str;\n }\n\n function utf8ToBytes(string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 55295 && codePoint < 57344) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 56319) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) 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\n return bytes;\n }\n\n function asciiToBytes(str) {\n const byteArray = [];\n\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 255);\n }\n\n return byteArray;\n }\n\n function utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\n\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n }\n\n function base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n }\n\n function blitBuffer(src, dst, offset, length) {\n let i;\n\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n } // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n // the `instanceof` check but they should be treated as of that type.\n // See: https://github.com/feross/buffer/issues/166\n\n\n function isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n }\n\n function numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n } // Create lookup table for `toString('hex')`\n // See: https://github.com/feross/buffer/issues/219\n\n\n const hexSliceLookupTable = function () {\n const alphabet = \"0123456789abcdef\";\n const table = new Array(256);\n\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n\n return table;\n }(); // Return not function with Error if BigInt not supported\n\n\n function defineBigIntMethod(fn) {\n return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n }\n\n function BufferBigIntNotDefined() {\n throw new Error(\"BigInt not supported\");\n }\n\n return exports$1;\n}\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n", "export { Buffer } from \"buffer\";\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function (...args) {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n };\n}\nmodule.exports = exports[\"default\"];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\n/* istanbul ignore file */\n\nvar hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasQueueMicrotask) {\n _defer = queueMicrotask;\n} else if (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nexports.default = wrap(_defer);", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n// used for queues. This implementation assumes that the node provided by the user can be modified\n// to adjust the next and last properties. We implement only the minimal functionality\n// for queue support.\nclass DLL {\n constructor() {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n removeLink(node) {\n if (node.prev) node.prev.next = node.next;else this.head = node.next;\n if (node.next) node.next.prev = node.prev;else this.tail = node.prev;\n\n node.prev = node.next = null;\n this.length -= 1;\n return node;\n }\n\n empty() {\n while (this.head) this.shift();\n return this;\n }\n\n insertAfter(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next) node.next.prev = newNode;else this.tail = newNode;\n node.next = newNode;\n this.length += 1;\n }\n\n insertBefore(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev) node.prev.next = newNode;else this.head = newNode;\n node.prev = newNode;\n this.length += 1;\n }\n\n unshift(node) {\n if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);\n }\n\n push(node) {\n if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);\n }\n\n shift() {\n return this.head && this.removeLink(this.head);\n }\n\n pop() {\n return this.tail && this.removeLink(this.tail);\n }\n\n toArray() {\n return [...this];\n }\n\n *[Symbol.iterator]() {\n var cur = this.head;\n while (cur) {\n yield cur.data;\n cur = cur.next;\n }\n }\n\n remove(testFn) {\n var curr = this.head;\n while (curr) {\n var { next } = curr;\n if (testFn(curr)) {\n this.removeLink(curr);\n }\n curr = next;\n }\n return this;\n }\n}\n\nexports.default = DLL;\nfunction setInitial(dll, node) {\n dll.length = 1;\n dll.head = dll.tail = node;\n}\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function (...args /*, callback*/) {\n var callback = args.pop();\n return fn.call(this, args, callback);\n };\n};\n\nmodule.exports = exports[\"default\"];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n if ((0, _wrapAsync.isAsync)(func)) {\n return function (...args /*, callback*/) {\n const callback = args.pop();\n const promise = func.apply(this, args);\n return handlePromise(promise, callback);\n };\n }\n\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (result && typeof result.then === 'function') {\n return handlePromise(result, callback);\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction handlePromise(promise, callback) {\n return promise.then(value => {\n invokeCallback(callback, null, value);\n }, err => {\n invokeCallback(callback, err && err.message ? err : new Error(err));\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (err) {\n (0, _setImmediate2.default)(e => {\n throw e;\n }, err);\n }\n}\nmodule.exports = exports['default'];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify.js');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n if (typeof asyncFn !== 'function') throw new Error('expected a function');\n return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = queue;\n\nvar _onlyOnce = require('./onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _setImmediate = require('./setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _DoublyLinkedList = require('./DoublyLinkedList.js');\n\nvar _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction queue(worker, concurrency, payload) {\n if (concurrency == null) {\n concurrency = 1;\n } else if (concurrency === 0) {\n throw new RangeError('Concurrency must not be zero');\n }\n\n var _worker = (0, _wrapAsync2.default)(worker);\n var numRunning = 0;\n var workersList = [];\n const events = {\n error: [],\n drain: [],\n saturated: [],\n unsaturated: [],\n empty: []\n };\n\n function on(event, handler) {\n events[event].push(handler);\n }\n\n function once(event, handler) {\n const handleAndRemove = (...args) => {\n off(event, handleAndRemove);\n handler(...args);\n };\n events[event].push(handleAndRemove);\n }\n\n function off(event, handler) {\n if (!event) return Object.keys(events).forEach(ev => events[ev] = []);\n if (!handler) return events[event] = [];\n events[event] = events[event].filter(ev => ev !== handler);\n }\n\n function trigger(event, ...args) {\n events[event].forEach(handler => handler(...args));\n }\n\n var processingScheduled = false;\n function _insert(data, insertAtFront, rejectOnError, callback) {\n if (callback != null && typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n\n var res, rej;\n function promiseCallback(err, ...args) {\n // we don't care about the error, let the global error handler\n // deal with it\n if (err) return rejectOnError ? rej(err) : res();\n if (args.length <= 1) return res(args[0]);\n res(args);\n }\n\n var item = q._createTaskItem(data, rejectOnError ? promiseCallback : callback || promiseCallback);\n\n if (insertAtFront) {\n q._tasks.unshift(item);\n } else {\n q._tasks.push(item);\n }\n\n if (!processingScheduled) {\n processingScheduled = true;\n (0, _setImmediate2.default)(() => {\n processingScheduled = false;\n q.process();\n });\n }\n\n if (rejectOnError || !callback) {\n return new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n }\n }\n\n function _createCB(tasks) {\n return function (err, ...args) {\n numRunning -= 1;\n\n for (var i = 0, l = tasks.length; i < l; i++) {\n var task = tasks[i];\n\n var index = workersList.indexOf(task);\n if (index === 0) {\n workersList.shift();\n } else if (index > 0) {\n workersList.splice(index, 1);\n }\n\n task.callback(err, ...args);\n\n if (err != null) {\n trigger('error', err, task.data);\n }\n }\n\n if (numRunning <= q.concurrency - q.buffer) {\n trigger('unsaturated');\n }\n\n if (q.idle()) {\n trigger('drain');\n }\n q.process();\n };\n }\n\n function _maybeDrain(data) {\n if (data.length === 0 && q.idle()) {\n // call drain immediately if there are no tasks\n (0, _setImmediate2.default)(() => trigger('drain'));\n return true;\n }\n return false;\n }\n\n const eventMethod = name => handler => {\n if (!handler) {\n return new Promise((resolve, reject) => {\n once(name, (err, data) => {\n if (err) return reject(err);\n resolve(data);\n });\n });\n }\n off(name);\n on(name, handler);\n };\n\n var isProcessing = false;\n var q = {\n _tasks: new _DoublyLinkedList2.default(),\n _createTaskItem(data, callback) {\n return {\n data,\n callback\n };\n },\n *[Symbol.iterator]() {\n yield* q._tasks[Symbol.iterator]();\n },\n concurrency,\n payload,\n buffer: concurrency / 4,\n started: false,\n paused: false,\n push(data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return;\n return data.map(datum => _insert(datum, false, false, callback));\n }\n return _insert(data, false, false, callback);\n },\n pushAsync(data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return;\n return data.map(datum => _insert(datum, false, true, callback));\n }\n return _insert(data, false, true, callback);\n },\n kill() {\n off();\n q._tasks.empty();\n },\n unshift(data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return;\n return data.map(datum => _insert(datum, true, false, callback));\n }\n return _insert(data, true, false, callback);\n },\n unshiftAsync(data, callback) {\n if (Array.isArray(data)) {\n if (_maybeDrain(data)) return;\n return data.map(datum => _insert(datum, true, true, callback));\n }\n return _insert(data, true, true, callback);\n },\n remove(testFn) {\n q._tasks.remove(testFn);\n },\n process() {\n // Avoid trying to start too many processing operations. This can occur\n // when callbacks resolve synchronously (#1267).\n if (isProcessing) {\n return;\n }\n isProcessing = true;\n while (!q.paused && numRunning < q.concurrency && q._tasks.length) {\n var tasks = [],\n data = [];\n var l = q._tasks.length;\n if (q.payload) l = Math.min(l, q.payload);\n for (var i = 0; i < l; i++) {\n var node = q._tasks.shift();\n tasks.push(node);\n workersList.push(node);\n data.push(node.data);\n }\n\n numRunning += 1;\n\n if (q._tasks.length === 0) {\n trigger('empty');\n }\n\n if (numRunning === q.concurrency) {\n trigger('saturated');\n }\n\n var cb = (0, _onlyOnce2.default)(_createCB(tasks));\n _worker(data, cb);\n }\n isProcessing = false;\n },\n length() {\n return q._tasks.length;\n },\n running() {\n return numRunning;\n },\n workersList() {\n return workersList;\n },\n idle() {\n return q._tasks.length + numRunning === 0;\n },\n pause() {\n q.paused = true;\n },\n resume() {\n if (q.paused === false) {\n return;\n }\n q.paused = false;\n (0, _setImmediate2.default)(q.process);\n }\n };\n // define these as fixed properties, so people get useful errors when updating\n Object.defineProperties(q, {\n saturated: {\n writable: false,\n value: eventMethod('saturated')\n },\n unsaturated: {\n writable: false,\n value: eventMethod('unsaturated')\n },\n empty: {\n writable: false,\n value: eventMethod('empty')\n },\n drain: {\n writable: false,\n value: eventMethod('drain')\n },\n error: {\n writable: false,\n value: eventMethod('error')\n }\n });\n return q;\n}\nmodule.exports = exports['default'];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cargo;\n\nvar _queue = require('./internal/queue.js');\n\nvar _queue2 = _interopRequireDefault(_queue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates a `cargoQueue` object with the specified payload. Tasks added to the\n * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers.\n * If the all `workers` are in progress, the task is queued until one becomes available. Once\n * a `worker` has completed some tasks, each callback of those tasks is\n * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n * for how `cargo` and `queue` work.\n *\n * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker,\n * the cargoQueue passes an array of tasks to multiple parallel workers.\n *\n * @name cargoQueue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @see [async.cargo]{@link module:ControlFLow.cargo}\n * @category Control Flow\n * @param {AsyncFunction} worker - An asynchronous function for processing an array\n * of queued tasks. Invoked with `(tasks, callback)`.\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel. If omitted, the concurrency\n * defaults to `1`. If the concurrency is `0`, an error is thrown.\n * @param {number} [payload=Infinity] - An optional `integer` for determining\n * how many tasks should be processed per round; if omitted, the default is\n * unlimited.\n * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the cargoQueue and inner queue.\n * @example\n *\n * // create a cargoQueue object with payload 2 and concurrency 2\n * var cargoQueue = async.cargoQueue(function(tasks, callback) {\n * for (var i=0; i<tasks.length; i++) {\n * console.log('hello ' + tasks[i].name);\n * }\n * callback();\n * }, 2, 2);\n *\n * // add some items\n * cargoQueue.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * cargoQueue.push({name: 'bar'}, function(err) {\n * console.log('finished processing bar');\n * });\n * cargoQueue.push({name: 'baz'}, function(err) {\n * console.log('finished processing baz');\n * });\n * cargoQueue.push({name: 'boo'}, function(err) {\n * console.log('finished processing boo');\n * });\n */\nfunction cargo(worker, concurrency, payload) {\n return (0, _queue2.default)(worker, concurrency, payload);\n}\nmodule.exports = exports['default'];", "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", "// @ts-ignore\nimport cargoQueue from 'async/cargoQueue'\nimport { CRDT } from './crdt'\nimport { Doc, BulkResult, DocUpdate, DbResponse, ClockHead } from './types'\n\nexport class Database {\n name: string\n config: object\n _crdt: CRDT\n _writeQueue: any\n constructor(name: string, config = {}) {\n this.name = name\n this.config = config\n this._crdt = new CRDT(name)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n this._writeQueue = cargoQueue(async (updates: DocUpdate[]) => {\n return await this._crdt.bulk(updates)\n })\n }\n\n async put(doc: Doc): Promise<DbResponse> {\n const { _id, ...value } = doc\n return await new Promise<DbResponse>((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n this._writeQueue.push({ key: _id, value }, function (err: Error | null, result?: BulkResult) {\n if (err) reject(err)\n resolve({ id: doc._id, clock: result?.head } as DbResponse)\n })\n })\n }\n\n async get(id: string): Promise<Doc> {\n const got = await this._crdt.get(id).catch(e => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n e.message = `Not found: ${id} - ` + e.message\n throw e\n })\n if (!got) throw new Error(`Not found: ${id}`)\n const { doc } = got\n return { _id: id, ...doc }\n }\n\n async del(id: string): Promise<DbResponse> {\n return await new Promise<DbResponse>((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n this._writeQueue.push({ key: id, del: true }, function (err: Error | null, result?: BulkResult) {\n if (err) reject(err)\n resolve({ id, clock: result?.head } as DbResponse)\n })\n })\n }\n\n async changes(since: ClockHead): Promise<{ rows: { key: string; value: Doc }[] }> {\n const { result } = await this._crdt.changes(since)\n const rows = result.map(({ key, value }) => ({\n key,\n value: { _id: key, ...value } as Doc\n }))\n return { rows }\n }\n}\n", "import { TransactionBlockstore as Blockstore } from './transaction'\nimport { DocUpdate, BulkResult, ClockHead } from './types'\nimport { clockChangesSince, applyBulkUpdateToCrdt, getValueFromCrdt } from './crdt-helpers'\n\nexport class CRDT {\n name: string | null\n ready: Promise<void>\n\n private _blocks: Blockstore\n private _head: ClockHead\n\n constructor(name?: string, blocks?: Blockstore) {\n this.name = name || null\n this._blocks = blocks || new Blockstore(name)\n this._head = []\n this.ready = this._blocks.ready.then(({ head }: { head: ClockHead }) => {\n this._head = head // todo multi head support here\n })\n }\n\n async bulk(updates: DocUpdate[], options?: object): Promise<BulkResult> {\n await this.ready\n const tResult: BulkResult = await this._blocks.transaction(async tblocks => {\n const { head } = await applyBulkUpdateToCrdt(tblocks, this._head, updates, options)\n this._head = head // we want multi head support here if allowing calls to bulk in parallel\n return { head }\n })\n return tResult\n }\n\n // async root(): Promise<any> {\n // async eventsSince(since: EventLink<T>): Promise<{clockCIDs: CIDCounter, result: T[]}> {\n // async getAll(rootCache: any = null): Promise<{root: any, cids: CIDCounter, clockCIDs: CIDCounter, result: T[]}> {\n\n async get(key: string) {\n await this.ready\n const result = await getValueFromCrdt(this._blocks, this._head, key)\n if (result.del) return null\n return result\n }\n\n async changes(since: ClockHead) {\n return await clockChangesSince(this._blocks, this._head, since)\n }\n}\n", "import { MemoryBlockstore } from '@alanshaw/pail/block'\nimport { BlockFetcher, AnyBlock, AnyLink, BulkResult, ClockHead } from './types'\nimport { Loader } from './loader'\nimport { CID } from 'multiformats'\n\n/** forked from\n * https://github.com/alanshaw/pail/blob/main/src/block.js\n * thanks Alan\n**/\n\nexport class Transaction extends MemoryBlockstore {\n constructor(private parent: BlockFetcher) {\n super()\n this.parent = parent\n }\n\n async get(cid: AnyLink): Promise<AnyBlock | undefined> {\n return this.parent.get(cid)\n }\n\n async superGet(cid: AnyLink): Promise<AnyBlock | undefined> {\n return super.get(cid)\n }\n}\n\nexport class TransactionBlockstore implements BlockFetcher {\n name: string | null = null\n ready: Promise<{ head: ClockHead }> // todo this will be a map of headers by branch name\n\n private transactions: Set<Transaction> = new Set()\n private loader: Loader | null = null\n\n constructor(name?: string, loader?: Loader) {\n if (name) {\n this.name = name\n this.loader = loader || new Loader(name)\n this.ready = this.loader.ready\n } else {\n this.ready = Promise.resolve({ head: [] })\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async put() {\n throw new Error('use a transaction to put')\n }\n\n async get(cid: AnyLink): Promise<AnyBlock | undefined> {\n for (const f of this.transactions) {\n const v = await f.superGet(cid)\n if (v) return v\n }\n if (!this.loader) return\n return await this.loader.getBlock(cid as CID)\n }\n\n async transaction(fn: (t: Transaction) => Promise<BulkResult>) {\n const t = new Transaction(this)\n this.transactions.add(t)\n const done: BulkResult = await fn(t)\n if (done) { return { ...done, car: await this.commit(t, done) } }\n return done\n }\n\n async commit(t: Transaction, done: BulkResult): Promise<AnyLink | undefined> {\n return await this.loader?.commit(t, done)\n }\n}\n", "import { parse } from 'multiformats/link'\n\n/**\n * @typedef {{ cid: import('./link').AnyLink, bytes: Uint8Array }} AnyBlock\n * @typedef {{ get: (link: import('./link').AnyLink) => Promise<AnyBlock | undefined> }} BlockFetcher\n */\n\n/** @implements {BlockFetcher} */\nexport class MemoryBlockstore {\n /** @type {Map<string, Uint8Array>} */\n #blocks = new Map()\n\n /**\n * @param {Array<AnyBlock>} [blocks]\n */\n constructor (blocks) {\n if (blocks) {\n this.#blocks = new Map(blocks.map(b => [b.cid.toString(), b.bytes]))\n }\n }\n\n /**\n * @param {import('./link').AnyLink} cid\n * @returns {Promise<AnyBlock | undefined>}\n */\n async get (cid) {\n const bytes = this.#blocks.get(cid.toString())\n if (!bytes) return\n return { cid, bytes }\n }\n\n /**\n * @param {import('./link').AnyLink} cid\n * @param {Uint8Array} bytes\n */\n async put (cid, bytes) {\n this.#blocks.set(cid.toString(), bytes)\n }\n\n /**\n * @param {import('./link').AnyLink} cid\n * @param {Uint8Array} bytes\n */\n putSync (cid, bytes) {\n this.#blocks.set(cid.toString(), bytes)\n }\n\n /** @param {import('./link').AnyLink} cid */\n async delete (cid) {\n this.#blocks.delete(cid.toString())\n }\n\n /** @param {import('./link').AnyLink} cid */\n deleteSync (cid) {\n this.#blocks.delete(cid.toString())\n }\n\n * entries () {\n for (const [str, bytes] of this.#blocks) {\n yield { cid: parse(str), bytes }\n }\n }\n}\n\nexport class MultiBlockFetcher {\n /** @type {BlockFetcher[]} */\n #fetchers\n\n /** @param {BlockFetcher[]} fetchers */\n constructor (...fetchers) {\n this.#fetchers = fetchers\n }\n\n /** @param {import('./link').AnyLink} link */\n async get (link) {\n for (const f of this.#fetchers) {\n const v = await f.get(link)\n if (v) return v\n }\n }\n}\n", "// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport { CID, format, toJSON, fromJSON } from './cid.js'\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\nconst DAG_PB_CODE = 0x70\n// eslint-disable-next-line\nconst SHA_256_CODE = 0x12\n\n/**\n * Simplified version of `create` for CIDv0.\n *\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {API.LegacyLink}\n */\nexport const createLegacy = digest => CID.create(0, DAG_PB_CODE, digest)\n\n/**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {API.Link<Data, Code, Alg>}\n */\nexport const create = (code, digest) => CID.create(1, code, digest)\n\n/**\n * Type predicate returns true if value is the link.\n *\n * @template {API.Link<unknown, number, number, 0|1>} L\n * @param {unknown|L} value\n * @returns {value is L & CID}\n */\nexport const isLink = value => {\n if (value == null) {\n return false\n }\n\n const withSlash = /** @type {{'/'?: Uint8Array, bytes: Uint8Array}} */ (value)\n\n if (withSlash['/'] != null && withSlash['/'] === withSlash.bytes) {\n return true\n }\n\n const withAsCID = /** @type {{'asCID'?: unknown}} */ (value)\n\n if (withAsCID.asCID === value) {\n return true\n }\n\n return false\n}\n\n/**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {API.Link<Data, Code, Alg, Ver>}\n */\nexport const parse = (source, base) => CID.parse(source, base)\n\nexport { format, toJSON, fromJSON }\n\n/**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {API.Link<Data, Code, Alg, Ver>}\n */\nexport const decode = bytes => CID.decode(bytes)\n", "// this is dummy module overlayed by interface.ts\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'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n *\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\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 /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\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\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\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\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\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\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\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\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}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\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}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\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}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\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\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 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) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\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\nvar length = 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\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\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\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\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\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) 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}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\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}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\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\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {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}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\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\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\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}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\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) { throw new TypeError(x + ' is ambiguous') }\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); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; 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)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\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 // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\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) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\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) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\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) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "// this is dummy module overlayed by interface.ts\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "import { CarReader } from '@ipld/car'\n\n// import { CarStoreFS, HeaderStoreFS } from './store-fs'\nimport { CarStoreIDB as CarStore, HeaderStoreLS as HeaderStore } from './store-browser'\nimport { makeCarFile, parseCarFile } from './loader-helpers'\nimport { Transaction } from './transaction'\nimport { AnyBlock, AnyLink, BulkResult, ClockHead } from './types'\nimport { CID } from 'multiformats'\n\nexport class Loader {\n name: string\n headerStore: HeaderStore\n carStore: CarStore\n carLog: AnyLink[] = []\n carsReaders: Map<string, CarReader> = new Map()\n ready: Promise<{ head: ClockHead}> // todo this will be a map of headers by branch name\n constructor(name: string) {\n this.name = name\n this.headerStore = new HeaderStore(name)\n this.carStore = new CarStore(name)\n // todo config with multiple branches\n this.ready = this.headerStore.load('main').then(async header => {\n if (!header) return { head: [] }\n const car = await this.carStore.load(header.car)\n return await this.ingestCarHead(header.car, car)\n })\n }\n\n async commit(t: Transaction, done: BulkResult): Promise<AnyLink> {\n const car = await makeCarFile(t, done, this.carLog)\n await this.carStore.save(car)\n this.carLog.push(car.cid)\n await this.headerStore.save(car.cid)\n return car.cid\n }\n\n async loadCar(cid: AnyLink): Promise<CarReader> {\n if (this.carsReaders.has(cid.toString())) return this.carsReaders.get(cid.toString()) as CarReader\n const car = await this.carStore.load(cid)\n if (!car) throw new Error(`missing car file ${cid.toString()}`)\n const reader = await CarReader.fromBytes(car.bytes)\n this.carsReaders.set(cid.toString(), reader)\n return reader\n }\n\n async ingestCarHead(cid: AnyLink, car: AnyBlock): Promise<{ head: ClockHead, cars: AnyLink[]}> {\n const reader = await CarReader.fromBytes(car.bytes)\n this.carsReaders.set(cid.toString(), reader)\n const { head, cars } = await parseCarFile(reader)\n await this.getMoreReaders(cars)\n return { head, cars }\n }\n\n async getMoreReaders(cids: AnyLink[]) {\n for (const cid of cids) {\n await this.loadCar(cid)\n }\n }\n\n async getBlock(cid: CID): Promise<AnyBlock | undefined> {\n for (const [, reader] of [...this.carsReaders].reverse()) { // reverse is faster\n const block = await reader.get(cid)\n if (block) return block\n }\n }\n}\n", "import { CarReader } from './reader.js'\nimport { CarBufferReader } from './buffer-reader.js'\nimport { CarIndexer } from './indexer.js'\nimport { CarBlockIterator, CarCIDIterator } from './iterator.js'\nimport { CarWriter } from './writer.js'\nimport { CarIndexedReader } from './indexed-reader.js'\nimport * as CarBufferWriter from './buffer-writer.js'\n\n// @see https://www.iana.org/assignments/media-types/application/vnd.ipld.car\nexport const contentType = 'application/vnd.ipld.car'\n\nexport {\n CarReader,\n CarBufferReader,\n CarIndexer,\n CarBlockIterator,\n CarCIDIterator,\n CarWriter,\n CarIndexedReader,\n CarBufferWriter\n}\n", "import { asyncIterableReader, bytesReader, createDecoder } from './decoder.js'\n\n/**\n * @typedef {import('multiformats').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').CarReader} CarReaderIface\n * @typedef {import('./coding').BytesReader} BytesReader\n * @typedef {import('./coding').CarHeader} CarHeader\n * @typedef {import('./coding').CarV2Header} CarV2Header\n */\n\n/**\n * Provides blockstore-like access to a CAR.\n *\n * Implements the `RootsReader` interface:\n * {@link CarReader.getRoots `getRoots()`}. And the `BlockReader` interface:\n * {@link CarReader.get `get()`}, {@link CarReader.has `has()`},\n * {@link CarReader.blocks `blocks()`} (defined as a `BlockIterator`) and\n * {@link CarReader.cids `cids()`} (defined as a `CIDIterator`).\n *\n * Load this class with either `import { CarReader } from '@ipld/car/reader'`\n * (`const { CarReader } = require('@ipld/car/reader')`). Or\n * `import { CarReader } from '@ipld/car'` (`const { CarReader } = require('@ipld/car')`).\n * The former will likely result in smaller bundle sizes where this is\n * important.\n *\n * @name CarReader\n * @class\n * @implements {CarReaderIface}\n * @property {number} version The version number of the CAR referenced by this\n * reader (should be `1` or `2`).\n */\nexport class CarReader {\n /**\n * @constructs CarReader\n * @param {CarHeader|CarV2Header} header\n * @param {Block[]} blocks\n */\n constructor (header, blocks) {\n this._header = header\n this._blocks = blocks\n this._keys = blocks.map((b) => b.cid.toString())\n }\n\n /**\n * @property\n * @memberof CarReader\n * @instance\n */\n get version () {\n return this._header.version\n }\n\n /**\n * Get the list of roots defined by the CAR referenced by this reader. May be\n * zero or more `CID`s.\n *\n * @function\n * @memberof CarReader\n * @instance\n * @async\n * @returns {Promise<CID[]>}\n */\n async getRoots () {\n return this._header.roots\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Check whether a given `CID` exists within the CAR referenced by this\n * reader.\n *\n * @function\n * @memberof CarReader\n * @instance\n * @async\n * @param {CID} key\n * @returns {Promise<boolean>}\n */\n async has (key) {\n return this._keys.indexOf(key.toString()) > -1\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Fetch a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) from the CAR\n * referenced by this reader matching the provided `CID`. In the case where\n * the provided `CID` doesn't exist within the CAR, `undefined` will be\n * returned.\n *\n * @function\n * @memberof CarReader\n * @instance\n * @async\n * @param {CID} key\n * @returns {Promise<Block | undefined>}\n */\n async get (key) {\n const index = this._keys.indexOf(key.toString())\n return index > -1 ? this._blocks[index] : undefined\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Returns a `BlockIterator` (`AsyncIterable<Block>`) that iterates over all\n * of the `Block`s (`{ cid:CID, bytes:Uint8Array }` pairs) contained within\n * the CAR referenced by this reader.\n *\n * @function\n * @memberof CarReader\n * @instance\n * @async\n * @generator\n * @returns {AsyncGenerator<Block>}\n */\n async * blocks () {\n for (const block of this._blocks) {\n yield block\n }\n }\n\n /**\n * Returns a `CIDIterator` (`AsyncIterable<CID>`) that iterates over all of\n * the `CID`s contained within the CAR referenced by this reader.\n *\n * @function\n * @memberof CarReader\n * @instance\n * @async\n * @generator\n * @returns {AsyncGenerator<CID>}\n */\n async * cids () {\n for (const block of this._blocks) {\n yield block.cid\n }\n }\n\n /**\n * Instantiate a {@link CarReader} from a `Uint8Array` blob. This performs a\n * decode fully in memory and maintains the decoded state in memory for full\n * access to the data via the `CarReader` API.\n *\n * @async\n * @static\n * @memberof CarReader\n * @param {Uint8Array} bytes\n * @returns {Promise<CarReader>}\n */\n static async fromBytes (bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('fromBytes() requires a Uint8Array')\n }\n return decodeReaderComplete(bytesReader(bytes))\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Instantiate a {@link CarReader} from a `AsyncIterable<Uint8Array>`, such as\n * a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).\n * This performs a decode fully in memory and maintains the decoded state in\n * memory for full access to the data via the `CarReader` API.\n *\n * Care should be taken for large archives; this API may not be appropriate\n * where memory is a concern or the archive is potentially larger than the\n * amount of memory that the runtime can handle.\n *\n * @async\n * @static\n * @memberof CarReader\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {Promise<CarReader>}\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 decodeReaderComplete(asyncIterableReader(asyncIterable))\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * @private\n * @param {BytesReader} reader\n * @returns {Promise<CarReader>}\n */\nexport async function decodeReaderComplete (reader) {\n const decoder = createDecoder(reader)\n const header = await decoder.header()\n const blocks = []\n for await (const block of decoder.blocks()) {\n blocks.push(block)\n }\n\n return new CarReader(header, blocks)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\nexport const __browser = true\n", "import { CID } from 'multiformats/cid'\nimport * as Digest from 'multiformats/hashes/digest'\nimport { decode as decodeDagCbor } from '@ipld/dag-cbor'\nimport { CarHeader as headerValidator } from './header-validator.js'\nimport { CIDV0_BYTES, decodeV2Header, decodeVarint, getMultihashLength, V2_HEADER_LENGTH } from './decoder-common.js'\n\n/**\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').BlockHeader} BlockHeader\n * @typedef {import('./api').BlockIndex} BlockIndex\n * @typedef {import('./coding').BytesReader} BytesReader\n * @typedef {import('./coding').CarHeader} CarHeader\n * @typedef {import('./coding').CarV2Header} CarV2Header\n * @typedef {import('./coding').CarV2FixedHeader} CarV2FixedHeader\n * @typedef {import('./coding').CarDecoder} CarDecoder\n */\n\n/**\n * Reads header data from a `BytesReader`. The header may either be in the form\n * of a `CarHeader` or `CarV2Header` depending on the CAR being read.\n *\n * @name async decoder.readHeader(reader)\n * @param {BytesReader} reader\n * @param {number} [strictVersion]\n * @returns {Promise<CarHeader|CarV2Header>}\n */\nexport async function readHeader (reader, strictVersion) {\n const length = decodeVarint(await reader.upTo(8), reader)\n if (length === 0) {\n throw new Error('Invalid CAR header (zero length)')\n }\n const header = await reader.exactly(length, true)\n const block = decodeDagCbor(header)\n if (!headerValidator(block)) {\n throw new Error('Invalid CAR header format')\n }\n if ((block.version !== 1 && block.version !== 2) || (strictVersion !== undefined && block.version !== strictVersion)) {\n throw new Error(`Invalid CAR version: ${block.version}${strictVersion !== undefined ? ` (expected ${strictVersion})` : ''}`)\n }\n // we've made 'roots' optional in the schema so we can do the version check\n // before rejecting the block as invalid if there is no version\n const hasRoots = Array.isArray(block.roots)\n if ((block.version === 1 && !hasRoots) || (block.version === 2 && hasRoots)) {\n throw new Error('Invalid CAR header format')\n }\n if (block.version === 1) {\n return block\n }\n // version 2\n const v2Header = decodeV2Header(await reader.exactly(V2_HEADER_LENGTH, true))\n reader.seek(v2Header.dataOffset - reader.pos)\n const v1Header = await readHeader(reader, 1)\n return Object.assign(v1Header, v2Header)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * @param {BytesReader} reader\n * @returns {Promise<CID>}\n */\nasync function readCid (reader) {\n const first = await reader.exactly(2, false)\n if (first[0] === CIDV0_BYTES.SHA2_256 && first[1] === CIDV0_BYTES.LENGTH) {\n // cidv0 32-byte sha2-256\n const bytes = await reader.exactly(34, true)\n const multihash = Digest.decode(bytes)\n return CID.create(0, CIDV0_BYTES.DAG_PB, multihash)\n }\n\n const version = decodeVarint(await reader.upTo(8), reader)\n if (version !== 1) {\n throw new Error(`Unexpected CID version (${version})`)\n }\n const codec = decodeVarint(await reader.upTo(8), reader)\n const bytes = await reader.exactly(getMultihashLength(await reader.upTo(8)), true)\n const multihash = Digest.decode(bytes)\n return CID.create(version, codec, multihash)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Reads the leading data of an individual block from CAR data from a\n * `BytesReader`. Returns a `BlockHeader` object which contains\n * `{ cid, length, blockLength }` which can be used to either index the block\n * or read the block binary data.\n *\n * @name async decoder.readBlockHead(reader)\n * @param {BytesReader} reader\n * @returns {Promise<BlockHeader>}\n */\nexport async function readBlockHead (reader) {\n // length includes a CID + Binary, where CID has a variable length\n // we have to deal with\n const start = reader.pos\n let length = decodeVarint(await reader.upTo(8), 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 - Number(reader.pos - start) // subtract CID length\n\n return { cid, length, blockLength }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * @param {BytesReader} reader\n * @returns {Promise<Block>}\n */\nasync function readBlock (reader) {\n const { cid, blockLength } = await readBlockHead(reader)\n const bytes = await reader.exactly(blockLength, true)\n return { bytes, cid }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * @param {BytesReader} reader\n * @returns {Promise<BlockIndex>}\n */\nasync function readBlockIndex (reader) {\n const offset = reader.pos\n const { cid, length, blockLength } = await readBlockHead(reader)\n const index = { cid, length, blockLength, offset, blockOffset: reader.pos }\n reader.seek(index.blockLength)\n return index\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Creates a `CarDecoder` from a `BytesReader`. The `CarDecoder` is as async\n * interface that will consume the bytes from the `BytesReader` to yield a\n * `header()` and either `blocks()` or `blocksIndex()` data.\n *\n * @name decoder.createDecoder(reader)\n * @param {BytesReader} reader\n * @returns {CarDecoder}\n */\nexport function createDecoder (reader) {\n const headerPromise = (async () => {\n const header = await readHeader(reader)\n if (header.version === 2) {\n const v1length = reader.pos - header.dataOffset\n reader = limitReader(reader, header.dataSize - v1length)\n }\n return header\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n })()\n\n return {\n header: () => headerPromise,\n\n async * blocks () {\n await headerPromise\n while ((await reader.upTo(8)).length > 0) {\n yield await readBlock(reader)\n }\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}\n\n/**\n * Creates a `BytesReader` from a `Uint8Array`.\n *\n * @name decoder.bytesReader(bytes)\n * @param {Uint8Array} bytes\n * @returns {BytesReader}\n */\nexport function bytesReader (bytes) {\n let pos = 0\n\n /** @type {BytesReader} */\n return {\n async upTo (length) {\n const out = bytes.subarray(pos, pos + Math.min(length, bytes.length - pos))\n /* c8 ignore next 2 */\n return out\n // Node.js 12 c8 bug\n },\n\n async exactly (length, seek = false) {\n if (length > bytes.length - pos) {\n throw new Error('Unexpected end of data')\n }\n const out = bytes.subarray(pos, pos + length)\n if (seek) {\n pos += length\n }\n return out\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n seek (length) {\n pos += length\n },\n\n get pos () {\n return pos\n }\n }\n}\n\n/**\n * @ignore\n * reusable reader for streams and files, we just need a way to read an\n * additional chunk (of some undetermined size) and a way to close the\n * reader when finished\n * @param {() => Promise<Uint8Array|null>} readChunk\n * @returns {BytesReader}\n */\nexport function chunkReader (readChunk /*, closer */) {\n let pos = 0\n let have = 0\n let offset = 0\n let currentChunk = new Uint8Array(0)\n\n const read = async (/** @type {number} */ 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 /* c8 ignore next 8 */\n // undo this ignore ^ when we have a fd implementation that can seek()\n if (have < 0) { // because of a seek()\n /* c8 ignore next 4 */\n // toohard to test the else\n if (chunk.length > have) {\n bufa.push(chunk.subarray(-have))\n } // else discard\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\n /** @type {BytesReader} */\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n async exactly (length, seek = false) {\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 const out = currentChunk.subarray(offset, offset + length)\n if (seek) {\n pos += length\n offset += length\n }\n return out\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n seek (length) {\n pos += length\n offset += length\n },\n\n get pos () {\n return pos\n }\n }\n}\n\n/**\n * Creates a `BytesReader` from an `AsyncIterable<Uint8Array>`, which allows for\n * consumption of CAR data from a streaming source.\n *\n * @name decoder.asyncIterableReader(asyncIterable)\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {BytesReader}\n */\nexport function asyncIterableReader (asyncIterable) {\n const iterator = asyncIterable[Symbol.asyncIterator]()\n\n async function readChunk () {\n const next = await iterator.next()\n if (next.done) {\n return null\n }\n return next.value\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n return chunkReader(readChunk)\n}\n\n/**\n * Wraps a `BytesReader` in a limiting `BytesReader` which limits maximum read\n * to `byteLimit` bytes. It _does not_ update `pos` of the original\n * `BytesReader`.\n *\n * @name decoder.limitReader(reader, byteLimit)\n * @param {BytesReader} reader\n * @param {number} byteLimit\n * @returns {BytesReader}\n */\nexport function limitReader (reader, byteLimit) {\n let bytesRead = 0\n\n /** @type {BytesReader} */\n return {\n async upTo (length) {\n let bytes = await reader.upTo(length)\n if (bytes.length + bytesRead > byteLimit) {\n bytes = bytes.subarray(0, byteLimit - bytesRead)\n }\n return bytes\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n async exactly (length, seek = false) {\n const bytes = await reader.exactly(length, seek)\n if (bytes.length + bytesRead > byteLimit) {\n throw new Error('Unexpected end of data')\n }\n if (seek) {\n bytesRead += length\n }\n return bytes\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n seek (length) {\n bytesRead += length\n reader.seek(length)\n },\n\n get pos () {\n return reader.pos\n }\n }\n}\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'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n *\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\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 /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\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\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\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\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\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\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\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\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}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\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}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\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}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\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\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 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) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\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\nvar length = 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\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\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\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\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\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) 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}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\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}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\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\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {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}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\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\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\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}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\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) { throw new TypeError(x + ' is ambiguous') }\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); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; 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)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\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 // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\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) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\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) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\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) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "// this is dummy module overlayed by interface.ts\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "// this is dummy module overlayed by interface.ts\n", "import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\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}\n\nconst encodeOptions = {\n float64: true,\n typeEncoders: {\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\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)) // ignore leading 0x00\n}\n\nconst decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\ndecodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => cborg.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(data, decodeOptions)\n", "import { encode } from './lib/encode.js';\nimport { decode } from './lib/decode.js';\nimport {\n Token,\n Type\n} from './lib/token.js';\nexport {\n decode,\n encode,\n Token,\n Type\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};", "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};", "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}", "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}", "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 * 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 {\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 { 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 * 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'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n *\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\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 /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\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\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\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\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\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\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\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\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}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\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}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\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}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\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\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 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) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\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\nvar length = 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\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\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\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\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\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) 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}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\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}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\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\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {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}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\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\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\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}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\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) { throw new TypeError(x + ' is ambiguous') }\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); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; 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)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\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 // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\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) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\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) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\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) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "// this is dummy module overlayed by interface.ts\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "// this is dummy module overlayed by interface.ts\n", "/* eslint-disable jsdoc/check-indentation */\n\n/** Auto-generated with ipld-schema-validator@0.0.0-dev at Thu Jun 17 2021 from IPLD Schema:\n *\n * type CarHeader struct {\n * version Int\n * roots optional [&Any]\n * # roots is _not_ optional for CarV1 but we defer that check within code to\n * # gracefully handle the >V1 case where it's just {version:X}\n * }\n *\n */\n\nconst Kinds = {\n Null: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => obj === null,\n Int: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => Number.isInteger(obj),\n Float: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => typeof obj === 'number' && Number.isFinite(obj),\n String: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => typeof obj === 'string',\n Bool: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => typeof obj === 'boolean',\n Bytes: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => obj instanceof Uint8Array,\n Link: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => !Kinds.Null(obj) && typeof obj === 'object' && obj.asCID === obj,\n List: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => Array.isArray(obj),\n Map: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => !Kinds.Null(obj) && typeof obj === 'object' && obj.asCID !== obj && !Kinds.List(obj) && !Kinds.Bytes(obj)\n}\n/** @type {{ [k in string]: (obj:any)=>boolean}} */\nconst Types = {\n Int: Kinds.Int,\n 'CarHeader > version': /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => Types.Int(obj),\n 'CarHeader > roots (anon) > valueType (anon)': Kinds.Link,\n 'CarHeader > roots (anon)': /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => Kinds.List(obj) && Array.prototype.every.call(obj, Types['CarHeader > roots (anon) > valueType (anon)']),\n 'CarHeader > roots': /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => Types['CarHeader > roots (anon)'](obj),\n CarHeader: /**\n * @param {any} obj\n * @returns {boolean}\n */ (/** @type {any} */ obj) => { const keys = obj && Object.keys(obj); return Kinds.Map(obj) && ['version'].every((k) => keys.includes(k)) && Object.entries(obj).every(([name, value]) => Types['CarHeader > ' + name] && Types['CarHeader > ' + name](value)) }\n}\n\nexport const CarHeader = Types.CarHeader\n", "import varint from 'varint'\n\nexport const CIDV0_BYTES = {\n SHA2_256: 0x12,\n LENGTH: 0x20,\n DAG_PB: 0x70\n}\n\nexport const V2_HEADER_LENGTH = /* characteristics */ 16 /* v1 offset */ + 8 /* v1 size */ + 8 /* index offset */ + 8\n\n/**\n * Decodes varint and seeks the buffer\n *\n * ```js\n * // needs bytes to be read first\n * const bytes = reader.upTo(8) // maybe async\n * ```\n *\n * @param {Uint8Array} bytes\n * @param {import('./coding').Seekable} seeker\n * @returns {number}\n */\nexport function decodeVarint (bytes, seeker) {\n if (!bytes.length) {\n throw new Error('Unexpected end of data')\n }\n const i = varint.decode(bytes)\n seeker.seek(/** @type {number} */(varint.decode.bytes))\n return i\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Decode v2 header\n *\n * ```js\n * // needs bytes to be read first\n * const bytes = reader.exactly(V2_HEADER_LENGTH, true) // maybe async\n * ```\n *\n * @param {Uint8Array} bytes\n * @returns {import('./coding').CarV2FixedHeader}\n */\nexport function decodeV2Header (bytes) {\n const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n let offset = 0\n const header = {\n version: 2,\n /** @type {[bigint, bigint]} */\n characteristics: [\n dv.getBigUint64(offset, true),\n dv.getBigUint64(offset += 8, true)\n ],\n dataOffset: Number(dv.getBigUint64(offset += 8, true)),\n dataSize: Number(dv.getBigUint64(offset += 8, true)),\n indexOffset: Number(dv.getBigUint64(offset += 8, true))\n }\n return header\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Checks the length of the multihash to be read afterwards\n *\n * ```js\n * // needs bytes to be read first\n * const bytes = reader.upTo(8) // maybe async\n * ```\n *\n * @param {Uint8Array} bytes\n */\nexport function getMultihashLength (bytes) {\n // | code | length | .... |\n // where both code and length are varints, so we have to decode\n // them first before we can know total length\n\n varint.decode(bytes) // code\n const codeLength = /** @type {number} */(varint.decode.bytes)\n const length = varint.decode(bytes.subarray(varint.decode.bytes))\n const lengthLength = /** @type {number} */(varint.decode.bytes)\n const mhLength = codeLength + lengthLength + length\n\n return mhLength\n}\n", "import * as BufferDecoder from './buffer-decoder.js'\n\n/**\n * @typedef {import('multiformats').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').CarBufferReader} ICarBufferReader\n * @typedef {import('./coding').CarHeader} CarHeader\n * @typedef {import('./coding').CarV2Header} CarV2Header\n */\n\n/**\n * Provides blockstore-like access to a CAR.\n *\n * Implements the `RootsBufferReader` interface:\n * {@link ICarBufferReader.getRoots `getRoots()`}. And the `BlockBufferReader` interface:\n * {@link ICarBufferReader.get `get()`}, {@link ICarBufferReader.has `has()`},\n * {@link ICarBufferReader.blocks `blocks()`} and\n * {@link ICarBufferReader.cids `cids()`}.\n *\n * Load this class with either `import { CarBufferReader } from '@ipld/car/buffer-reader'`\n * (`const { CarBufferReader } = require('@ipld/car/buffer-reader')`). Or\n * `import { CarBufferReader } from '@ipld/car'` (`const { CarBufferReader } = require('@ipld/car')`).\n * The former will likely result in smaller bundle sizes where this is\n * important.\n *\n * @name CarBufferReader\n * @class\n * @implements {ICarBufferReader}\n * @property {number} version The version number of the CAR referenced by this\n * reader (should be `1` or `2`).\n */\nexport class CarBufferReader {\n /**\n * @constructs CarBufferReader\n * @param {CarHeader|CarV2Header} header\n * @param {Block[]} blocks\n */\n constructor (header, blocks) {\n this._header = header\n this._blocks = blocks\n this._cids = undefined\n }\n\n /**\n * @property version\n * @memberof CarBufferReader\n * @instance\n */\n get version () {\n return this._header.version\n }\n\n /**\n * Get the list of roots defined by the CAR referenced by this reader. May be\n * zero or more `CID`s.\n *\n * @function\n * @memberof CarBufferReader\n * @instance\n * @returns {CID[]}\n */\n getRoots () {\n return this._header.roots\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Check whether a given `CID` exists within the CAR referenced by this\n * reader.\n *\n * @function\n * @memberof CarBufferReader\n * @instance\n * @param {CID} key\n * @returns {boolean}\n */\n has (key) {\n return this._blocks.some(b => b.cid.equals(key))\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Fetch a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) from the CAR\n * referenced by this reader matching the provided `CID`. In the case where\n * the provided `CID` doesn't exist within the CAR, `undefined` will be\n * returned.\n *\n * @function\n * @memberof CarBufferReader\n * @instance\n * @param {CID} key\n * @returns {Block | undefined}\n */\n get (key) {\n return this._blocks.find(b => b.cid.equals(key))\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Returns a `Block[]` of the `Block`s (`{ cid:CID, bytes:Uint8Array }` pairs) contained within\n * the CAR referenced by this reader.\n *\n * @function\n * @memberof CarBufferReader\n * @instance\n * @returns {Block[]}\n */\n blocks () {\n return this._blocks\n }\n\n /**\n * Returns a `CID[]` of the `CID`s contained within the CAR referenced by this reader.\n *\n * @function\n * @memberof CarBufferReader\n * @instance\n * @returns {CID[]}\n */\n cids () {\n if (!this._cids) {\n this._cids = this._blocks.map(b => b.cid)\n }\n return this._cids\n }\n\n /**\n * Instantiate a {@link CarBufferReader} from a `Uint8Array` blob. This performs a\n * decode fully in memory and maintains the decoded state in memory for full\n * access to the data via the `CarReader` API.\n *\n * @static\n * @memberof CarBufferReader\n * @param {Uint8Array} bytes\n * @returns {CarBufferReader}\n */\n static fromBytes (bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('fromBytes() requires a Uint8Array')\n }\n\n const { header, blocks } = BufferDecoder.fromBytes(bytes)\n return new CarBufferReader(header, blocks)\n }\n}\n\nexport const __browser = true\n", "import { CID } from 'multiformats/cid'\nimport * as Digest from 'multiformats/hashes/digest'\nimport { decode as decodeDagCbor } from '@ipld/dag-cbor'\nimport { CarHeader as headerValidator } from './header-validator.js'\nimport { CIDV0_BYTES, decodeV2Header, decodeVarint, getMultihashLength, V2_HEADER_LENGTH } from './decoder-common.js'\n\n/**\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').BlockHeader} BlockHeader\n * @typedef {import('./api').BlockIndex} BlockIndex\n * @typedef {import('./coding').BytesBufferReader} BytesBufferReader\n * @typedef {import('./coding').CarHeader} CarHeader\n * @typedef {import('./coding').CarV2Header} CarV2Header\n * @typedef {import('./coding').CarV2FixedHeader} CarV2FixedHeader\n */\n\n/**\n * Reads header data from a `BytesReader`. The header may either be in the form\n * of a `CarHeader` or `CarV2Header` depending on the CAR being read.\n *\n * @name decoder.readHeader(reader)\n * @param {BytesBufferReader} reader\n * @param {number} [strictVersion]\n * @returns {CarHeader | CarV2Header}\n */\nexport function readHeader (reader, strictVersion) {\n const length = decodeVarint(reader.upTo(8), reader)\n if (length === 0) {\n throw new Error('Invalid CAR header (zero length)')\n }\n const header = reader.exactly(length, true)\n const block = decodeDagCbor(header)\n if (!headerValidator(block)) {\n throw new Error('Invalid CAR header format')\n }\n if ((block.version !== 1 && block.version !== 2) || (strictVersion !== undefined && block.version !== strictVersion)) {\n throw new Error(`Invalid CAR version: ${block.version}${strictVersion !== undefined ? ` (expected ${strictVersion})` : ''}`)\n }\n // we've made 'roots' optional in the schema so we can do the version check\n // before rejecting the block as invalid if there is no version\n const hasRoots = Array.isArray(block.roots)\n if ((block.version === 1 && !hasRoots) || (block.version === 2 && hasRoots)) {\n throw new Error('Invalid CAR header format')\n }\n if (block.version === 1) {\n return block\n }\n // version 2\n const v2Header = decodeV2Header(reader.exactly(V2_HEADER_LENGTH, true))\n reader.seek(v2Header.dataOffset - reader.pos)\n const v1Header = readHeader(reader, 1)\n return Object.assign(v1Header, v2Header)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Reads CID sync\n *\n * @param {BytesBufferReader} reader\n * @returns {CID}\n */\nfunction readCid (reader) {\n const first = reader.exactly(2, false)\n if (first[0] === CIDV0_BYTES.SHA2_256 && first[1] === CIDV0_BYTES.LENGTH) {\n // cidv0 32-byte sha2-256\n const bytes = reader.exactly(34, true)\n const multihash = Digest.decode(bytes)\n return CID.create(0, CIDV0_BYTES.DAG_PB, multihash)\n }\n\n const version = decodeVarint(reader.upTo(8), reader)\n if (version !== 1) {\n throw new Error(`Unexpected CID version (${version})`)\n }\n const codec = decodeVarint(reader.upTo(8), reader)\n const bytes = reader.exactly(getMultihashLength(reader.upTo(8)), true)\n const multihash = Digest.decode(bytes)\n return CID.create(version, codec, multihash)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Reads the leading data of an individual block from CAR data from a\n * `BytesBufferReader`. Returns a `BlockHeader` object which contains\n * `{ cid, length, blockLength }` which can be used to either index the block\n * or read the block binary data.\n *\n * @name async decoder.readBlockHead(reader)\n * @param {BytesBufferReader} reader\n * @returns {BlockHeader}\n */\nexport function readBlockHead (reader) {\n // length includes a CID + Binary, where CID has a variable length\n // we have to deal with\n const start = reader.pos\n let length = decodeVarint(reader.upTo(8), reader)\n if (length === 0) {\n throw new Error('Invalid CAR section (zero length)')\n }\n length += (reader.pos - start)\n const cid = readCid(reader)\n const blockLength = length - Number(reader.pos - start) // subtract CID length\n\n return { cid, length, blockLength }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * Returns Car header and blocks from a Uint8Array\n *\n * @param {Uint8Array} bytes\n * @returns {{ header : CarHeader | CarV2Header , blocks: Block[]}}\n */\nexport function fromBytes (bytes) {\n let reader = bytesReader(bytes)\n const header = readHeader(reader)\n if (header.version === 2) {\n const v1length = reader.pos - header.dataOffset\n reader = limitReader(reader, header.dataSize - v1length)\n }\n\n const blocks = []\n while (reader.upTo(8).length > 0) {\n const { cid, blockLength } = readBlockHead(reader)\n\n blocks.push({ cid, bytes: reader.exactly(blockLength, true) })\n }\n\n return {\n header, blocks\n }\n}\n\n/**\n * Creates a `BytesBufferReader` from a `Uint8Array`.\n *\n * @name decoder.bytesReader(bytes)\n * @param {Uint8Array} bytes\n * @returns {BytesBufferReader}\n */\nexport function bytesReader (bytes) {\n let pos = 0\n\n /** @type {BytesBufferReader} */\n return {\n upTo (length) {\n return bytes.subarray(pos, pos + Math.min(length, bytes.length - pos))\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n exactly (length, seek = false) {\n if (length > bytes.length - pos) {\n throw new Error('Unexpected end of data')\n }\n\n const out = bytes.subarray(pos, pos + length)\n if (seek) {\n pos += length\n }\n return out\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n seek (length) {\n pos += length\n },\n\n get pos () {\n return pos\n }\n }\n}\n\n/**\n * Wraps a `BytesBufferReader` in a limiting `BytesBufferReader` which limits maximum read\n * to `byteLimit` bytes. It _does not_ update `pos` of the original\n * `BytesBufferReader`.\n *\n * @name decoder.limitReader(reader, byteLimit)\n * @param {BytesBufferReader} reader\n * @param {number} byteLimit\n * @returns {BytesBufferReader}\n */\nexport function limitReader (reader, byteLimit) {\n let bytesRead = 0\n\n /** @type {BytesBufferReader} */\n return {\n upTo (length) {\n let bytes = reader.upTo(length)\n if (bytes.length + bytesRead > byteLimit) {\n bytes = bytes.subarray(0, byteLimit - bytesRead)\n }\n return bytes\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n exactly (length, seek = false) {\n const bytes = reader.exactly(length, seek)\n if (bytes.length + bytesRead > byteLimit) {\n throw new Error('Unexpected end of data')\n }\n if (seek) {\n bytesRead += length\n }\n return bytes\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n },\n\n seek (length) {\n bytesRead += length\n reader.seek(length)\n },\n\n get pos () {\n return reader.pos\n }\n }\n}\n", "import {\n asyncIterableReader,\n bytesReader,\n createDecoder\n} from './decoder.js'\n\n/**\n * @typedef {import('multiformats').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').RootsReader} RootsReader\n * @typedef {import('./api').BlockIndex} BlockIndex\n * @typedef {import('./coding').BytesReader} BytesReader\n */\n\n/**\n * Provides an iterator over all of the `Block`s in a CAR, returning their CIDs\n * and byte-location information. Implements an `AsyncIterable<BlockIndex>`.\n * Where a `BlockIndex` is a\n * `{ cid:CID, length:number, offset:number, blockLength:number, blockOffset:number }`.\n *\n * As an implementer of `AsyncIterable`, this class can be used directly in a\n * `for await (const blockIndex of iterator) {}` loop. Where the `iterator` is\n * constructed using {@link CarIndexer.fromBytes} or\n * {@link CarIndexer.fromIterable}.\n *\n * An iteration can only be performce _once_ per instantiation.\n *\n * `CarIndexer` also implements the `RootsReader` interface and provides\n * the {@link CarIndexer.getRoots `getRoots()`} method.\n *\n * Load this class with either\n * `import { CarIndexer } from '@ipld/car/indexer'`\n * (`const { CarIndexer } = require('@ipld/car/indexer')`). Or\n * `import { CarIndexer } from '@ipld/car'`\n * (`const { CarIndexer } = require('@ipld/car')`). The former will likely\n * result in smaller bundle sizes where this is important.\n *\n * @name CarIndexer\n * @class\n * @implements {RootsReader}\n * @implements {AsyncIterable<BlockIndex>}\n * @property {number} version The version number of the CAR referenced by this\n * reader (should be `1`).\n */\nexport class CarIndexer {\n /**\n * @param {number} version\n * @param {CID[]} roots\n * @param {AsyncGenerator<BlockIndex>} iterator\n */\n constructor (version, roots, iterator) {\n this._version = version\n this._roots = roots\n this._iterator = iterator\n }\n\n get version () {\n return this._version\n }\n\n /**\n * Get the list of roots defined by the CAR referenced by this indexer. May be\n * zero or more `CID`s.\n *\n * @function\n * @memberof CarIndexer\n * @instance\n * @async\n * @returns {Promise<CID[]>}\n */\n async getRoots () {\n return this._roots\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * @returns {AsyncIterator<BlockIndex>}\n */\n [Symbol.asyncIterator] () {\n return this._iterator\n }\n\n /**\n * Instantiate a {@link CarIndexer} from a `Uint8Array` blob. Only the header\n * is decoded initially, the remainder is processed and emitted via the\n * iterator as it is consumed.\n *\n * @async\n * @static\n * @memberof CarIndexer\n * @param {Uint8Array} bytes\n * @returns {Promise<CarIndexer>}\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Instantiate a {@link CarIndexer} from a `AsyncIterable<Uint8Array>`,\n * such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).\n * is decoded initially, the remainder is processed and emitted via the\n * iterator as it is consumed.\n *\n * @async\n * @static\n * @memberof CarIndexer\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {Promise<CarIndexer>}\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * @private\n * @param {BytesReader} reader\n * @returns {Promise<CarIndexer>}\n */\nasync function decodeIndexerComplete (reader) {\n const decoder = createDecoder(reader)\n const { version, roots } = await decoder.header()\n\n return new CarIndexer(version, roots, decoder.blocksIndex())\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n", "import {\n asyncIterableReader,\n bytesReader,\n createDecoder\n} from './decoder.js'\n\n/**\n * @typedef {import('multiformats').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').RootsReader} RootsReader\n * @typedef {import('./coding').BytesReader} BytesReader\n */\n\n/**\n * @class\n * @implements {RootsReader}\n * @property {number} version The version number of the CAR referenced by this reader (should be `1`).\n */\nexport class CarIteratorBase {\n /**\n * @param {number} version\n * @param {CID[]} roots\n * @param {AsyncIterable<Block>|void} iterable\n */\n constructor (version, roots, iterable) {\n this._version = version\n this._roots = roots\n this._iterable = iterable\n this._decoded = false\n }\n\n get version () {\n return this._version\n }\n\n /**\n * @returns {Promise<CID[]>}\n */\n async getRoots () {\n return this._roots\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * Provides an iterator over all of the `Block`s in a CAR. Implements a\n * `BlockIterator` interface, or `AsyncIterable<Block>`. Where a `Block` is\n * a `{ cid:CID, bytes:Uint8Array }` pair.\n *\n * As an implementer of `AsyncIterable`, this class can be used directly in a\n * `for await (const block of iterator) {}` loop. Where the `iterator` is\n * constructed using {@link CarBlockiterator.fromBytes} or\n * {@link CarBlockiterator.fromIterable}.\n *\n * An iteration can only be performce _once_ per instantiation.\n *\n * `CarBlockIterator` also implements the `RootsReader` interface and provides\n * the {@link CarBlockiterator.getRoots `getRoots()`} method.\n *\n * Load this class with either\n * `import { CarBlockIterator } from '@ipld/car/iterator'`\n * (`const { CarBlockIterator } = require('@ipld/car/iterator')`). Or\n * `import { CarBlockIterator } from '@ipld/car'`\n * (`const { CarBlockIterator } = require('@ipld/car')`).\n *\n * @name CarBlockIterator\n * @class\n * @implements {RootsReader}\n * @implements {AsyncIterable<Block>}\n * @property {number} version The version number of the CAR referenced by this\n * iterator (should be `1`).\n */\nexport class CarBlockIterator extends CarIteratorBase {\n // inherited method\n /**\n * Get the list of roots defined by the CAR referenced by this iterator. May be\n * zero or more `CID`s.\n *\n * @function getRoots\n * @memberof CarBlockIterator\n * @instance\n * @async\n * @returns {Promise<CID[]>}\n */\n\n /**\n * @returns {AsyncIterator<Block>}\n */\n [Symbol.asyncIterator] () {\n if (this._decoded) {\n throw new Error('Cannot decode more than once')\n }\n /* c8 ignore next 3 */\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\n /**\n * Instantiate a {@link CarBlockIterator} from a `Uint8Array` blob. Rather\n * than decoding the entire byte array prior to returning the iterator, as in\n * {@link CarReader.fromBytes}, only the header is decoded and the remainder\n * of the CAR is parsed as the `Block`s as yielded.\n *\n * @async\n * @static\n * @memberof CarBlockIterator\n * @param {Uint8Array} bytes\n * @returns {Promise<CarBlockIterator>}\n */\n static async fromBytes (bytes) {\n const { version, roots, iterator } = await fromBytes(bytes)\n return new CarBlockIterator(version, roots, iterator)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Instantiate a {@link CarBlockIterator} from a `AsyncIterable<Uint8Array>`,\n * such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).\n * Rather than decoding the entire byte array prior to returning the iterator,\n * as in {@link CarReader.fromIterable}, only the header is decoded and the\n * remainder of the CAR is parsed as the `Block`s as yielded.\n *\n * @async\n * @static\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {Promise<CarBlockIterator>}\n */\n static async fromIterable (asyncIterable) {\n const { version, roots, iterator } = await fromIterable(asyncIterable)\n return new CarBlockIterator(version, roots, iterator)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * Provides an iterator over all of the `CID`s in a CAR. Implements a\n * `CIDIterator` interface, or `AsyncIterable<CID>`. Similar to\n * {@link CarBlockIterator} but only yields the CIDs in the CAR.\n *\n * As an implementer of `AsyncIterable`, this class can be used directly in a\n * `for await (const cid of iterator) {}` loop. Where the `iterator` is\n * constructed using {@link CarCIDiterator.fromBytes} or\n * {@link CarCIDiterator.fromIterable}.\n *\n * An iteration can only be performce _once_ per instantiation.\n *\n * `CarCIDIterator` also implements the `RootsReader` interface and provides\n * the {@link CarCIDiterator.getRoots `getRoots()`} method.\n *\n * Load this class with either\n * `import { CarCIDIterator } from '@ipld/car/iterator'`\n * (`const { CarCIDIterator } = require('@ipld/car/iterator')`). Or\n * `import { CarCIDIterator } from '@ipld/car'`\n * (`const { CarCIDIterator } = require('@ipld/car')`).\n *\n * @name CarCIDIterator\n * @class\n * @implements {RootsReader}\n * @implements {AsyncIterable<CID>}\n * @property {number} version The version number of the CAR referenced by this\n * iterator (should be `1`).\n */\nexport class CarCIDIterator extends CarIteratorBase {\n // inherited method\n /**\n * Get the list of roots defined by the CAR referenced by this iterator. May be\n * zero or more `CID`s.\n *\n * @function getRoots\n * @memberof CarCIDIterator\n * @instance\n * @async\n * @returns {Promise<CID[]>}\n */\n\n /**\n * @returns {AsyncIterator<CID>}\n */\n [Symbol.asyncIterator] () {\n if (this._decoded) {\n throw new Error('Cannot decode more than once')\n }\n /* c8 ignore next 3 */\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 { done: false, value: next.value.cid }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n }\n }\n\n /**\n * Instantiate a {@link CarCIDIterator} from a `Uint8Array` blob. Rather\n * than decoding the entire byte array prior to returning the iterator, as in\n * {@link CarReader.fromBytes}, only the header is decoded and the remainder\n * of the CAR is parsed as the `CID`s as yielded.\n *\n * @async\n * @static\n * @memberof CarCIDIterator\n * @param {Uint8Array} bytes\n * @returns {Promise<CarCIDIterator>}\n */\n static async fromBytes (bytes) {\n const { version, roots, iterator } = await fromBytes(bytes)\n return new CarCIDIterator(version, roots, iterator)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Instantiate a {@link CarCIDIterator} from a `AsyncIterable<Uint8Array>`,\n * such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).\n * Rather than decoding the entire byte array prior to returning the iterator,\n * as in {@link CarReader.fromIterable}, only the header is decoded and the\n * remainder of the CAR is parsed as the `CID`s as yielded.\n *\n * @async\n * @static\n * @memberof CarCIDIterator\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {Promise<CarCIDIterator>}\n */\n static async fromIterable (asyncIterable) {\n const { version, roots, iterator } = await fromIterable(asyncIterable)\n return new CarCIDIterator(version, roots, iterator)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * @param {AsyncIterable<Uint8Array>} asyncIterable\n * @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n\n/**\n * @private\n * @param {BytesReader} reader\n * @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}\n */\nasync function decodeIterator (reader) {\n const decoder = createDecoder(reader)\n const { version, roots } = await decoder.header()\n return { version, roots, iterator: decoder.blocks() }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n}\n", "import { CID } from 'multiformats/cid'\nimport { createEncoder, createHeader } from './encoder.js'\nimport { create as iteratorChannel } from './iterator-channel.js'\nimport { bytesReader, readHeader } from './decoder.js'\n\n/**\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').BlockWriter} BlockWriter\n * @typedef {import('./api').WriterChannel} WriterChannel\n * @typedef {import('./coding').CarEncoder} CarEncoder\n * @typedef {import('./coding').IteratorChannel<Uint8Array>} IteratorChannel\n */\n\n/**\n * Provides a writer interface for the creation of CAR files.\n *\n * Creation of a `CarWriter` involves the instatiation of an input / output pair\n * in the form of a `WriterChannel`, which is a\n * `{ writer:CarWriter, out:AsyncIterable<Uint8Array> }` pair. These two\n * components form what can be thought of as a stream-like interface. The\n * `writer` component (an instantiated `CarWriter`), has methods to\n * {@link CarWriter.put `put()`} new blocks and {@link CarWriter.put `close()`}\n * the writing operation (finalising the CAR archive). The `out` component is\n * an `AsyncIterable` that yields the bytes of the archive. This can be\n * redirected to a file or other sink. In Node.js, you can use the\n * [`Readable.from()`](https://nodejs.org/api/stream.html#stream_stream_readable_from_iterable_options)\n * API to convert this to a standard Node.js stream, or it can be directly fed\n * to a\n * [`stream.pipeline()`](https://nodejs.org/api/stream.html#stream_stream_pipeline_source_transforms_destination_callback).\n *\n * The channel will provide a form of backpressure. The `Promise` from a\n * `write()` won't resolve until the resulting data is drained from the `out`\n * iterable.\n *\n * It is also possible to ignore the `Promise` from `write()` calls and allow\n * the generated data to queue in memory. This should be avoided for large CAR\n * archives of course due to the memory costs and potential for memory overflow.\n *\n * Load this class with either\n * `import { CarWriter } from '@ipld/car/writer'`\n * (`const { CarWriter } = require('@ipld/car/writer')`). Or\n * `import { CarWriter } from '@ipld/car'`\n * (`const { CarWriter } = require('@ipld/car')`). The former will likely\n * result in smaller bundle sizes where this is important.\n *\n * @name CarWriter\n * @class\n * @implements {BlockWriter}\n */\nexport class CarWriter {\n /**\n * @param {CID[]} roots\n * @param {CarEncoder} encoder\n */\n constructor (roots, encoder) {\n this._encoder = encoder\n /** @type {Promise<void>} */\n this._mutex = encoder.setRoots(roots)\n this._ended = false\n }\n\n /**\n * Write a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) to the archive.\n *\n * @function\n * @memberof CarWriter\n * @instance\n * @async\n * @param {Block} block - A `{ cid:CID, bytes:Uint8Array }` pair.\n * @returns {Promise<void>} The returned promise will only resolve once the\n * bytes this block generates are written to the `out` iterable.\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({ cid, bytes: block.bytes }))\n return this._mutex\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Finalise the CAR archive and signal that the `out` iterable should end once\n * any remaining bytes are written.\n *\n * @function\n * @memberof CarWriter\n * @instance\n * @async\n * @returns {Promise<void>}\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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Create a new CAR writer \"channel\" which consists of a\n * `{ writer:CarWriter, out:AsyncIterable<Uint8Array> }` pair.\n *\n * @async\n * @static\n * @memberof CarWriter\n * @param {CID[] | CID | void} roots\n * @returns {WriterChannel} The channel takes the form of\n * `{ writer:CarWriter, out:AsyncIterable<Uint8Array> }`.\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 { writer, out }\n }\n\n /**\n * Create a new CAR appender \"channel\" which consists of a\n * `{ writer:CarWriter, out:AsyncIterable<Uint8Array> }` pair.\n * This appender does not consider roots and does not produce a CAR header.\n * It is designed to append blocks to an _existing_ CAR archive. It is\n * expected that `out` will be concatenated onto the end of an existing\n * archive that already has a properly formatted header.\n *\n * @async\n * @static\n * @memberof CarWriter\n * @returns {WriterChannel} The channel takes the form of\n * `{ writer:CarWriter, out:AsyncIterable<Uint8Array> }`.\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 { writer, out }\n }\n\n /**\n * Update the list of roots in the header of an existing CAR as represented\n * in a Uint8Array.\n *\n * This operation is an _overwrite_, the total length of the CAR will not be\n * modified. A rejection will occur if the new header will not be the same\n * length as the existing header, in which case the CAR will not be modified.\n * It is the responsibility of the user to ensure that the roots being\n * replaced encode as the same length as the new roots.\n *\n * The byte array passed in an argument will be modified and also returned\n * upon successful modification.\n *\n * @async\n * @static\n * @memberof CarWriter\n * @param {Uint8Array} bytes\n * @param {CID[]} roots - A new list of roots to replace the existing list in\n * the CAR header. The new header must take up the same number of bytes as the\n * existing header, so the roots should collectively be the same byte length\n * as the existing roots.\n * @returns {Promise<Uint8Array>}\n */\n static async updateRootsInBytes (bytes, roots) {\n const reader = bytesReader(bytes)\n await readHeader(reader)\n const newHeader = createHeader(roots)\n if (Number(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 /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\n/**\n * @class\n * @implements {AsyncIterable<Uint8Array>}\n */\nexport class CarWriterOut {\n /**\n * @param {AsyncIterator<Uint8Array>} iterator\n */\n constructor (iterator) {\n this._iterator = iterator\n }\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}\n\nfunction encodeWriter () {\n /** @type {IteratorChannel} */\n const iw = iteratorChannel()\n const { writer, iterator } = iw\n const encoder = createEncoder(writer)\n return { encoder, iterator }\n}\n\n/**\n * @private\n * @param {CID[] | CID | void} roots\n * @returns {CID[]}\n */\nfunction toRoots (roots) {\n if (roots === undefined) {\n return []\n }\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\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}\n\nexport const __browser = true\n", "import varint from 'varint'\nimport { encode as dagCborEncode } from '@ipld/dag-cbor'\n\n/**\n * @typedef {import('multiformats').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./coding').CarEncoder} CarEncoder\n * @typedef {import('./coding').IteratorChannel_Writer<Uint8Array>} IteratorChannel_Writer\n */\n\n/**\n * Create a header from an array of roots.\n *\n * @param {CID[]} roots\n * @returns {Uint8Array}\n */\nexport function createHeader (roots) {\n const headerBytes = dagCborEncode({ version: 1, roots })\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}\n\n/**\n * @param {IteratorChannel_Writer} writer\n * @returns {CarEncoder}\n */\nfunction createEncoder (writer) {\n // none of this is wrapped in a mutex, that needs to happen above this to\n // avoid overwrites\n\n return {\n /**\n * @param {CID[]} roots\n * @returns {Promise<void>}\n */\n async setRoots (roots) {\n const bytes = createHeader(roots)\n await writer.write(bytes)\n },\n\n /**\n * @param {Block} block\n * @returns {Promise<void>}\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 // zero-length blocks are valid, but it'd be safer if we didn't write them\n await writer.write(bytes)\n }\n },\n\n /**\n * @returns {Promise<void>}\n */\n async close () {\n await writer.end()\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n }\n}\n\nexport { createEncoder }\n", "/**\n * @template {any} T\n * @typedef {import('./coding').IteratorChannel<T>} IteratorChannel\n */\n\nfunction noop () {}\n\n/**\n * @template {any} T\n * @returns {IteratorChannel<T>}\n */\nexport function create () {\n /** @type {T[]} */\n const chunkQueue = []\n /** @type {Promise<void> | null} */\n let drainer = null\n let drainerResolver = noop\n let ended = false\n /** @type {Promise<IteratorResult<T>> | null} */\n let outWait = null\n let outWaitResolver = noop\n\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\n /**\n * @returns {IteratorChannel<T>}\n */\n const writer = {\n /**\n * @param {T} chunk\n * @returns {Promise<void>}\n */\n write (chunk) {\n chunkQueue.push(chunk)\n const drainer = makeDrainer()\n outWaitResolver()\n return drainer\n },\n\n async end () {\n ended = true\n const drainer = makeDrainer()\n outWaitResolver()\n await drainer\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n }\n\n /** @type {AsyncIterator<T>} */\n const iterator = {\n /** @returns {Promise<IteratorResult<T>>} */\n async next () {\n const chunk = chunkQueue.shift()\n if (chunk) {\n if (chunkQueue.length === 0) {\n drainerResolver()\n }\n return { done: false, value: chunk }\n }\n\n if (ended) {\n drainerResolver()\n return { done: true, 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\n return outWait\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n }\n\n return { writer, iterator }\n}\n", "import fs from 'fs'\nimport { Readable } from 'stream'\nimport { CID } from 'multiformats/cid'\nimport { CarIndexer } from './indexer.js'\nimport { CarReader as NodeCarReader } from './reader.js'\n\n/**\n * @typedef {import('fs').promises.FileHandle} FileHandle\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').BlockIndex} BlockIndex\n * @typedef {import('./api').CarReader} CarReaderIface\n * @typedef {import('./reader-browser').CarReader} CarReader\n * @typedef {{ blockLength:number, blockOffset:number }} RawLocation\n */\n\n/**\n * A form of {@link CarReader} that pre-indexes a CAR archive from a file and\n * provides random access to blocks within the file using the index data. This\n * function is **only available in Node.js** and not a browser environment.\n *\n * For large CAR files, using this form of `CarReader` can be singificantly more\n * efficient in terms of memory. The index consists of a list of `CID`s and\n * their location within the archive (see {@link CarIndexer}). For large numbers\n * of blocks, this index can also occupy a significant amount of memory. In some\n * cases it may be necessary to expand the memory capacity of a Node.js instance\n * to allow this index to fit. (e.g. by running with\n * `NODE_OPTIONS=\"--max-old-space-size=16384\"`).\n *\n * As an `CarIndexedReader` instance maintains an open file descriptor for its\n * CAR file, an additional {@link CarReader#close} method is attached. This\n * _must_ be called to have full clean-up of resources after use.\n *\n * Load this class with either\n * `import { CarIndexedReader } from '@ipld/car/indexed-reader'`\n * (`const { CarIndexedReader } = require('@ipld/car/indexed-reader')`). Or\n * `import { CarIndexedReader } from '@ipld/car'`\n * (`const { CarIndexedReader } = require('@ipld/car')`). The former will likely\n * result in smaller bundle sizes where this is important.\n *\n * @name CarIndexedReader\n * @class\n * @implements {CarReaderIface}\n * @extends {CarReader}\n * @property {number} version The version number of the CAR referenced by this\n * reader (should be `1`).\n */\nexport class CarIndexedReader {\n /**\n * @param {number} version\n * @param {string} path\n * @param {CID[]} roots\n * @param {Map<string, RawLocation>} index\n * @param {string[]} order\n */\n constructor (version, path, roots, index, order) {\n this._version = version\n this._path = path\n this._roots = roots\n this._index = index\n this._order = order\n this._fd = null\n }\n\n get version () {\n return this._version\n }\n\n /**\n * See {@link CarReader#getRoots}\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @returns {Promise<CID[]>}\n */\n async getRoots () {\n return this._roots\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * See {@link CarReader#has}\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @param {CID} key\n * @returns {Promise<boolean>}\n */\n async has (key) {\n return this._index.has(key.toString())\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * See {@link CarReader#get}\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @param {CID} key\n * @returns {Promise<Block | undefined>}\n */\n async get (key) {\n const blockIndex = this._index.get(key.toString())\n if (!blockIndex) {\n return undefined\n }\n if (!this._fd) {\n this._fd = await fs.promises.open(this._path, 'r')\n }\n const readIndex = {\n cid: key,\n length: 0,\n offset: 0,\n blockLength: blockIndex.blockLength,\n blockOffset: blockIndex.blockOffset\n }\n return NodeCarReader.readRaw(this._fd, readIndex)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * See {@link CarReader#blocks}\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @generator\n * @returns {AsyncGenerator<Block>}\n */\n async * blocks () {\n for (const cidStr of this._order) {\n const block = await this.get(CID.parse(cidStr))\n /* c8 ignore next 3 */\n if (!block) {\n throw new Error('Unexpected internal error')\n }\n yield block\n }\n }\n\n /**\n * See {@link CarReader#cids}\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @generator\n * @returns {AsyncGenerator<CID>}\n */\n async * cids () {\n for (const cidStr of this._order) {\n yield CID.parse(cidStr)\n }\n }\n\n /**\n * Close the underlying file descriptor maintained by this `CarIndexedReader`.\n * This must be called for proper resource clean-up to occur.\n *\n * @function\n * @memberof CarIndexedReader\n * @instance\n * @async\n * @returns {Promise<void>}\n */\n async close () {\n if (this._fd) {\n return this._fd.close()\n }\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n\n /**\n * Instantiate an {@link CarIndexedReader} from a file with the provided\n * `path`. The CAR file is first indexed with a full path that collects `CID`s\n * and block locations. This index is maintained in memory. Subsequent reads\n * operate on a read-only file descriptor, fetching the block from its in-file\n * location.\n *\n * For large archives, the initial indexing may take some time. The returned\n * `Promise` will resolve only after this is complete.\n *\n * @async\n * @static\n * @memberof CarIndexedReader\n * @param {string} path\n * @returns {Promise<CarIndexedReader>}\n */\n static async fromFile (path) {\n if (typeof path !== 'string') {\n throw new TypeError('fromFile() requires a file path string')\n }\n\n const iterable = await CarIndexer.fromIterable(Readable.from(fs.createReadStream(path)))\n /** @type {Map<string, RawLocation>} */\n const index = new Map()\n /** @type {string[]} */\n const order = []\n for await (const { cid, blockLength, blockOffset } of iterable) {\n const cidStr = cid.toString()\n index.set(cidStr, { blockLength, blockOffset })\n order.push(cidStr)\n }\n return new CarIndexedReader(iterable.version, path, await iterable.getRoots(), index, order)\n /* c8 ignore next 2 */\n // Node.js 12 c8 bug\n }\n}\n\nexport const __browser = false\n", "export default {};\n", "import { e as exports } from './chunk-6c718bbe.js';\nexport { e as default } from './chunk-6c718bbe.js';\nimport { promisify } from './util.js';\nimport './events.js';\nimport './chunk-4bd36a8f.js';\nimport './chunk-44e51b61.js';\nimport './chunk-ce0fbc82.js';\nimport './chunk-b4205b57.js';\nimport './chunk-5decc758.js';\nimport './chunk-2eac56ff.js';\nimport './chunk-4ccc3a29.js';\n\nvar Readable = exports.Readable;\r\nReadable.wrap = function(src, options) {\r\n options = Object.assign({ objectMode: src.readableObjectMode != null || src.objectMode != null || true }, options);\r\n options.destroy = function(err, callback) {\r\n src.destroy(err);\r\n callback(err);\r\n };\r\n return new Readable(options).wrap(src);\r\n};\r\n\r\nvar Writable = exports.Writable;\r\nvar Duplex = exports.Duplex;\r\nvar Transform = exports.Transform;\r\nvar PassThrough = exports.PassThrough;\r\nvar finished = exports.finished;\r\nvar pipeline = exports.pipeline;\r\nvar Stream = exports.Stream;\r\n\r\nconst promises = {\r\n finished: promisify(exports.finished),\r\n pipeline: promisify(exports.pipeline)\r\n};\n\nexport { Duplex, PassThrough, Readable, Stream, Transform, Writable, finished, pipeline, promises };\n", "import './events.js';\nimport { a as dew$1, c as dew$2, e as dew$3, f as dew$4, g as dew$5, h as dew$6, i as dew$7, d as dew$8 } from './chunk-44e51b61.js';\nimport { y } from './chunk-4bd36a8f.js';\n\nvar exports$1 = {},\n _dewExec = false;\n\nvar _global = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\n\nfunction dew() {\n if (_dewExec) return exports$1;\n _dewExec = true;\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n exports$1 = Stream;\n var EE = y.EventEmitter;\n\n var inherits = dew$8();\n\n inherits(Stream, EE);\n Stream.Readable = dew$1();\n Stream.Writable = dew$2();\n Stream.Duplex = dew$3();\n Stream.Transform = dew$4();\n Stream.PassThrough = dew$5();\n Stream.finished = dew$6();\n Stream.pipeline = dew$7(); // Backwards-compat with node 0.4.x\n\n Stream.Stream = Stream; // old-style streams. Note that the pipe method (the only relevant\n // part of this class) is overridden in the Readable class.\n\n function Stream() {\n EE.call(this || _global);\n }\n\n Stream.prototype.pipe = function (dest, options) {\n var source = this || _global;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on(\"data\", ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on(\"drain\", ondrain); // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on(\"end\", onend);\n source.on(\"close\", onclose);\n }\n\n var didOnEnd = false;\n\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === \"function\") dest.destroy();\n } // don't leave dangling pipes when there are errors.\n\n\n function onerror(er) {\n cleanup();\n\n if (EE.listenerCount(this || _global, \"error\") === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on(\"error\", onerror);\n dest.on(\"error\", onerror); // remove all the event listeners that were added.\n\n function cleanup() {\n source.removeListener(\"data\", ondata);\n dest.removeListener(\"drain\", ondrain);\n source.removeListener(\"end\", onend);\n source.removeListener(\"close\", onclose);\n source.removeListener(\"error\", onerror);\n dest.removeListener(\"error\", onerror);\n source.removeListener(\"end\", cleanup);\n source.removeListener(\"close\", cleanup);\n dest.removeListener(\"close\", cleanup);\n }\n\n source.on(\"end\", cleanup);\n source.on(\"close\", cleanup);\n dest.on(\"close\", cleanup);\n dest.emit(\"pipe\", source); // Allow for unix-like usage: A.pipe(B).pipe(C)\n\n return dest;\n };\n\n return exports$1;\n}\n\nconst exports = dew();\n\nexport { exports as e };\n", "import { y } from './chunk-4bd36a8f.js';\nexport { y as default } from './chunk-4bd36a8f.js';\n\n// https://github.com/denoland/deno_std/blob/d005433c709054af87aca54f57a446b4f7966f11/node/events.ts#L501-L638\r\ny.once = function (emitter, event) {\r\n return new Promise((resolve, reject) => {\r\n function eventListener(...args) {\r\n if (errorListener !== undefined) {\r\n emitter.removeListener('error', errorListener);\r\n }\r\n resolve(args);\r\n }\r\n let errorListener;\r\n if (event !== 'error') {\r\n // deno-lint-ignore no-explicit-any\r\n errorListener = (err) => {\r\n emitter.removeListener(name, eventListener);\r\n reject(err);\r\n };\r\n\r\n emitter.once('error', errorListener);\r\n }\r\n\r\n emitter.once(event, eventListener);\r\n });\r\n};\r\ny.on = function (emitter, event) {\r\n const unconsumedEventValues = [];\r\n const unconsumedPromises = [];\r\n let error = null;\r\n let finished = false;\r\n\r\n const iterator = {\r\n async next() {\r\n const value = unconsumedEventValues.shift();\r\n if (value) {\r\n return createIterResult(value, false);\r\n }\r\n\r\n if (error) {\r\n const p = Promise.reject(error);\r\n error = null;\r\n return p;\r\n }\r\n\r\n if (finished) {\r\n return createIterResult(undefined, true);\r\n }\r\n\r\n return new Promise((resolve, reject) => unconsumedPromises.push({ resolve, reject }));\r\n },\r\n async return() {\r\n emitter.removeListener(event, eventHandler);\r\n emitter.removeListener('error', errorHandler);\r\n finished = true;\r\n\r\n for (const promise of unconsumedPromises) {\r\n promise.resolve(createIterResult(undefined, true));\r\n }\r\n\r\n return createIterResult(undefined, true);\r\n },\r\n throw(err) {\r\n error = err;\r\n emitter.removeListener(event, eventHandler);\r\n emitter.removeListener('error', errorHandler);\r\n },\r\n [Symbol.asyncIterator]() {\r\n return this;\r\n },\r\n };\r\n\r\n emitter.on(event, eventHandler);\r\n emitter.on('error', errorHandler);\r\n\r\n return iterator;\r\n\r\n function eventHandler(...args) {\r\n const promise = unconsumedPromises.shift();\r\n if (promise) {\r\n promise.resolve(createIterResult(args, false));\r\n } else {\r\n unconsumedEventValues.push(args);\r\n }\r\n }\r\n\r\n function errorHandler(err) {\r\n finished = true;\r\n const toError = unconsumedPromises.shift();\r\n if (toError) {\r\n toError.reject(err);\r\n } else {\r\n error = err;\r\n }\r\n iterator.return();\r\n }\r\n};\r\nconst {\r\n EventEmitter,\r\n defaultMaxListeners,\r\n init,\r\n listenerCount,\r\n on,\r\n once,\r\n} = y;\n\nexport { EventEmitter, defaultMaxListeners, init, listenerCount, on, once };\n", "var e,t,n=\"object\"==typeof Reflect?Reflect:null,r=n&&\"function\"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&\"function\"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this);}e=o,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function u(e){if(\"function\"!=typeof e)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}function f(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function v(e,t,n,r){var i,o,s,v;if(u(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit(\"newListener\",t,n.listener?n.listener:n),o=e._events),s=o[t]),void 0===s)s=o[t]=n,++e._eventsCount;else if(\"function\"==typeof s?s=o[t]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),(i=f(e))>0&&s.length>i&&!s.warned){s.warned=!0;var a=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");a.name=\"MaxListenersExceededWarning\",a.emitter=e,a.type=t,a.count=s.length,v=a,console&&console.warn&&console.warn(v);}return e}function a(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=a.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return [];var i=r[t];return void 0===i?[]:\"function\"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):c(i,i.length)}function p(e){var t=this._events;if(void 0!==t){var n=t[e];if(\"function\"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function c(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}Object.defineProperty(o,\"defaultMaxListeners\",{enumerable:!0,get:function(){return s},set:function(e){if(\"number\"!=typeof e||e<0||i(e))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\");s=e;}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0;},o.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||i(e))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return f(this)},o.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var i=\"error\"===e,o=this._events;if(void 0!==o)i=i&&void 0===o.error;else if(!i)return !1;if(i){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var u=new Error(\"Unhandled error.\"+(s?\" (\"+s.message+\")\":\"\"));throw u.context=s,u}var f=o[e];if(void 0===f)return !1;if(\"function\"==typeof f)r(f,this,t);else {var v=f.length,a=c(f,v);for(n=0;n<v;++n)r(a[n],this,t);}return !0},o.prototype.addListener=function(e,t){return v(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return v(this,e,t,!0)},o.prototype.once=function(e,t){return u(t),this.on(e,l(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return u(t),this.prependListener(e,l(this,e,t)),this},o.prototype.removeListener=function(e,t){var n,r,i,o,s;if(u(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit(\"removeListener\",e,n.listener||t));else if(\"function\"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){s=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():!function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop();}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit(\"removeListener\",e,s||t);}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)\"removeListener\"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return \"function\"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},o.prototype.listenerCount=p,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};var y=e;y.EventEmitter;y.defaultMaxListeners;y.init;y.listenerCount;\n\ny.EventEmitter;\ny.defaultMaxListeners;\ny.init;\ny.listenerCount;\n\nexport { y };\n", "import { y } from './chunk-4bd36a8f.js';\nimport './chunk-ce0fbc82.js';\nimport { X } from './chunk-b4205b57.js';\nimport { p as process } from './chunk-2eac56ff.js';\nimport { a as e$1 } from './chunk-4ccc3a29.js';\n\nvar exports$2$1 = {},\n _dewExec$2$1 = false;\nfunction dew$2$1() {\n if (_dewExec$2$1) return exports$2$1;\n _dewExec$2$1 = true;\n exports$2$1.byteLength = byteLength;\n exports$2$1.toByteArray = toByteArray;\n exports$2$1.fromByteArray = fromByteArray;\n var lookup = [];\n var revLookup = [];\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n } // Support decoding URL-safe base64 strings, as Node.js does.\n // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n\n function getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf(\"=\");\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n } // base64 is 4/3 + up to two characters of the original data\n\n\n function byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n\n function _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n\n function toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 255;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 255;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n\n return arr;\n }\n\n function tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n }\n\n function encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join(\"\");\n }\n\n function fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n }\n\n return parts.join(\"\");\n }\n\n return exports$2$1;\n}\n\nvar exports$1$1 = {},\n _dewExec$1$1 = false;\nfunction dew$1$1() {\n if (_dewExec$1$1) return exports$1$1;\n _dewExec$1$1 = true;\n\n /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n exports$1$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n };\n\n exports$1$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n };\n\n return exports$1$1;\n}\n\nvar exports$g = {},\n _dewExec$g = false;\nfunction dew$g() {\n if (_dewExec$g) return exports$g;\n _dewExec$g = true;\n\n const base64 = dew$2$1();\n\n const ieee754 = dew$1$1();\n\n const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n : null;\n exports$g.Buffer = Buffer;\n exports$g.SlowBuffer = SlowBuffer;\n exports$g.INSPECT_MAX_BYTES = 50;\n const K_MAX_LENGTH = 2147483647;\n exports$g.kMaxLength = K_MAX_LENGTH;\n /**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\n\n Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n }\n\n function typedArraySupport() {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1);\n const proto = {\n foo: function () {\n return 42;\n }\n };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n }\n\n Object.defineProperty(Buffer.prototype, \"parent\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.buffer;\n }\n });\n Object.defineProperty(Buffer.prototype, \"offset\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.byteOffset;\n }\n });\n\n function createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n } // Return an augmented `Uint8Array` instance\n\n\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n /**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\n function Buffer(arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n }\n\n return allocUnsafe(arg);\n }\n\n return from(arg, encodingOrOffset, length);\n }\n\n Buffer.poolSize = 8192; // not used by this implementation\n\n function from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return fromString(value, encodingOrOffset);\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n\n if (value == null) {\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n\n if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n\n if (typeof value === \"number\") {\n throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n }\n\n const valueOf = value.valueOf && value.valueOf();\n\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n\n const b = fromObject(value);\n if (b) return b;\n\n if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n }\n\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n /**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\n Buffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n }; // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n // https://github.com/feross/buffer/pull/148\n\n\n Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n Object.setPrototypeOf(Buffer, Uint8Array);\n\n function assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n } else if (size < 0) {\n throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n }\n }\n\n function alloc(size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n\n return createBuffer(size);\n }\n /**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\n Buffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n };\n\n function allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n }\n /**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\n Buffer.allocUnsafe = function (size) {\n return allocUnsafe(size);\n };\n /**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\n Buffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n };\n\n function fromString(string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n\n return buf;\n }\n\n function fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n\n return buf;\n }\n\n function fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n\n return fromArrayLike(arrayView);\n }\n\n function fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n }\n\n let buf;\n\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n } // Return an augmented `Uint8Array` instance\n\n\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n\n function fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n\n if (buf.length === 0) {\n return buf;\n }\n\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n\n return fromArrayLike(obj);\n }\n\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n }\n\n function checked(length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n }\n\n return length | 0;\n }\n\n function SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n }\n\n Buffer.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n };\n\n Buffer.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n }\n\n if (a === b) return 0;\n let x = a.length;\n let y = b.length;\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n\n Buffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n\n default:\n return false;\n }\n };\n\n Buffer.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n let i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(buffer, buf, pos);\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n } else {\n buf.copy(buffer, pos);\n }\n\n pos += buf.length;\n }\n\n return buffer;\n };\n\n function byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n }\n\n const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0; // Use a for loop to avoid recursion\n\n let loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n\n case \"utf8\":\n case \"utf-8\":\n return utf8ToBytes(string).length;\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n\n case \"hex\":\n return len >>> 1;\n\n case \"base64\":\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n }\n\n Buffer.byteLength = byteLength;\n\n function slowToString(encoding, start, end) {\n let loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return \"\";\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return \"\";\n } // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return \"\";\n }\n\n if (!encoding) encoding = \"utf8\";\n\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n\n case \"ascii\":\n return asciiSlice(this, start, end);\n\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n\n case \"base64\":\n return base64Slice(this, start, end);\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n } // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n // reliably in a browserify context because there could be multiple different\n // copies of the 'buffer' package in use. This method works even for Buffer\n // instances that were created from another copy of the `buffer` package.\n // See: https://github.com/feross/buffer/issues/154\n\n\n Buffer.prototype._isBuffer = true;\n\n function swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n }\n\n Buffer.prototype.swap16 = function swap16() {\n const len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n };\n\n Buffer.prototype.swap32 = function swap32() {\n const len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n };\n\n Buffer.prototype.swap64 = function swap64() {\n const len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n };\n\n Buffer.prototype.toString = function toString() {\n const length = this.length;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n\n Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n Buffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n };\n\n Buffer.prototype.inspect = function inspect() {\n let str = \"\";\n const max = exports$g.INSPECT_MAX_BYTES;\n str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n if (this.length > max) str += \" ... \";\n return \"<Buffer \" + str + \">\";\n };\n\n if (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n }\n\n Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n }; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n //\n // Arguments:\n // - buffer - a Buffer to search\n // - val - a string, Buffer, or number\n // - byteOffset - an index into `buffer`; will be clamped to an int32\n // - encoding - an optional encoding, relevant is val is a string\n // - dir - true for indexOf, false for lastIndexOf\n\n\n function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === \"string\") {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255; // Search for a byte value [0-255]\n\n if (typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError(\"val must be string, number or Buffer\");\n }\n\n function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n let i;\n\n if (dir) {\n let foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n }\n\n Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n\n Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n\n Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n\n function hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n }\n\n const strLen = string.length;\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n let i;\n\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n }\n\n function utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n }\n\n function asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n }\n\n function base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n }\n\n function ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n }\n\n Buffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = \"utf8\";\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n }\n\n const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n\n if (!encoding) encoding = \"utf8\";\n let loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return asciiWrite(this, string, offset, length);\n\n case \"base64\":\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n\n Buffer.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n\n function base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n }\n\n function utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\n\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\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\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n } // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n // the lowest limit is Chrome, with 0x10000 args.\n // We go 1 magnitude less, for safety\n\n\n const MAX_ARGUMENTS_LENGTH = 4096;\n\n function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n let res = \"\";\n let i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n }\n\n function asciiSlice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n\n return ret;\n }\n\n function latin1Slice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n }\n\n function hexSlice(buf, start, end) {\n const len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n let out = \"\";\n\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n\n return out;\n }\n\n function utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = \"\"; // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n }\n\n Buffer.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n const newBuf = this.subarray(start, end); // Return an augmented `Uint8Array` instance\n\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n };\n /*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\n function checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n }\n\n Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n };\n\n Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n let val = this[offset + --byteLength];\n let mul = 1;\n\n while (byteLength > 0 && (mul *= 256)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n };\n\n Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n\n Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n\n Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n\n Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n\n Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n\n Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n });\n Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n });\n\n Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n\n Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let i = byteLength;\n let mul = 1;\n let val = this[offset + --i];\n\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n\n Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n\n Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n\n Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n\n Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n\n Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n\n Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n });\n Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n });\n\n Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n };\n\n Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n };\n\n Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n };\n\n Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n };\n\n function checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n }\n\n Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let mul = 1;\n let i = 0;\n this[offset] = value & 255;\n\n while (++i < byteLength && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 255;\n\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n this[offset] = value & 255;\n return offset + 1;\n };\n\n Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n\n Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n\n Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n return offset + 4;\n };\n\n Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n\n function wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n }\n\n function wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n }\n\n Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n\n Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 255;\n\n while (++i < byteLength && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 255;\n\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n\n return offset + byteLength;\n };\n\n Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n\n Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n\n Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n\n Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n };\n\n Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n\n Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n\n function checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n }\n\n function writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n }\n\n Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n\n Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n\n function writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n }\n\n Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n\n Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n }; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\n Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n\n if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\"); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n const len = end - start;\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n }\n\n return len;\n }; // Usage:\n // buffer.fill(number[, offset[, end]])\n // buffer.fill(buffer[, offset[, end]])\n // buffer.fill(string[, offset[, end]][, encoding])\n\n\n Buffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n\n if (encoding !== undefined && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n\n if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n\n if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n } else if (typeof val === \"boolean\") {\n val = Number(val);\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\n\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n const len = bytes.length;\n\n if (len === 0) {\n throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n }\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n }; // CUSTOM ERRORS\n // =============\n // Simplified versions from Node, changed for Buffer-only usage\n\n\n const errors = {};\n\n function E(sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor() {\n super();\n Object.defineProperty(this, \"message\", {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n }); // Add the error code to the name to include it in the stack trace.\n\n this.name = `${this.name} [${sym}]`; // Access the stack to generate the error message including the error code\n // from the name.\n\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n\n delete this.name;\n }\n\n get code() {\n return sym;\n }\n\n set code(value) {\n Object.defineProperty(this, \"code\", {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n\n toString() {\n return `${this.name} [${sym}]: ${this.message}`;\n }\n\n };\n }\n\n E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`;\n }\n\n return \"Attempt to access memory outside buffer bounds\";\n }, RangeError);\n E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n }, TypeError);\n E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`;\n let received = input;\n\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === \"bigint\") {\n received = String(input);\n\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n\n received += \"n\";\n }\n\n msg += ` It must be ${range}. Received ${received}`;\n return msg;\n }, RangeError);\n\n function addNumericalSeparator(val) {\n let res = \"\";\n let i = val.length;\n const start = val[0] === \"-\" ? 1 : 0;\n\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n\n return `${val.slice(0, i)}${res}`;\n } // CHECK FUNCTIONS\n // ===============\n\n\n function checkBounds(buf, offset, byteLength) {\n validateNumber(offset, \"offset\");\n\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n }\n\n function checkIntBI(value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === \"bigint\" ? \"n\" : \"\";\n let range;\n\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`;\n }\n\n throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n }\n\n checkBounds(buf, offset, byteLength);\n }\n\n function validateNumber(value, name) {\n if (typeof value !== \"number\") {\n throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n }\n }\n\n function boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || \"offset\", \"an integer\", value);\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || \"offset\", `>= ${type ? 1 : 0} and <= ${length}`, value);\n } // HELPER FUNCTIONS\n // ================\n\n\n const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n function base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split(\"=\")[0]; // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\n str = str.trim().replace(INVALID_BASE64_RE, \"\"); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return \"\"; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n\n return str;\n }\n\n function utf8ToBytes(string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 55295 && codePoint < 57344) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 56319) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) 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\n return bytes;\n }\n\n function asciiToBytes(str) {\n const byteArray = [];\n\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 255);\n }\n\n return byteArray;\n }\n\n function utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\n\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n }\n\n function base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n }\n\n function blitBuffer(src, dst, offset, length) {\n let i;\n\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n } // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n // the `instanceof` check but they should be treated as of that type.\n // See: https://github.com/feross/buffer/issues/166\n\n\n function isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n }\n\n function numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n } // Create lookup table for `toString('hex')`\n // See: https://github.com/feross/buffer/issues/219\n\n\n const hexSliceLookupTable = function () {\n const alphabet = \"0123456789abcdef\";\n const table = new Array(256);\n\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n\n return table;\n }(); // Return not function with Error if BigInt not supported\n\n\n function defineBigIntMethod(fn) {\n return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n }\n\n function BufferBigIntNotDefined() {\n throw new Error(\"BigInt not supported\");\n }\n\n return exports$g;\n}\n\nvar buffer = dew$g();\n\nbuffer.Buffer;\nbuffer.INSPECT_MAX_BYTES;\nbuffer.kMaxLength;\n\nvar exports$f = {},\n _dewExec$f = false;\nfunction dew$f() {\n if (_dewExec$f) return exports$f;\n _dewExec$f = true;\n\n if (typeof Object.create === \"function\") {\n // implementation from standard node.js 'util' module\n exports$f = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n } else {\n // old school shim for old browsers\n exports$f = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function () {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n }\n\n return exports$f;\n}\n\nvar exports$e = {},\n _dewExec$e = false;\nfunction dew$e() {\n if (_dewExec$e) return exports$e;\n _dewExec$e = true;\n exports$e = y.EventEmitter;\n return exports$e;\n}\n\nvar exports$d = {},\n _dewExec$d = false;\nfunction dew$d() {\n if (_dewExec$d) return exports$d;\n _dewExec$d = true;\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var _require = buffer,\n Buffer = _require.Buffer;\n var _require2 = X,\n inspect = _require2.inspect;\n var custom = inspect && inspect.custom || \"inspect\";\n\n function copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n }\n\n exports$d = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return \"\";\n var p = this.head;\n var ret = \"\" + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n }();\n\n return exports$d;\n}\n\nvar exports$c = {},\n _dewExec$c = false;\nfunction dew$c() {\n if (_dewExec$c) return exports$c;\n _dewExec$c = true;\n var process$1 = process;\n\n // undocumented cb() API, needed for core, not for public API\n function destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process$1.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process$1.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process$1.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process$1.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process$1.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process$1.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process$1.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n }\n\n function emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n }\n\n function emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit(\"close\");\n }\n\n function undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n }\n\n function emitErrorNT(self, err) {\n self.emit(\"error\", err);\n }\n\n function errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit(\"error\", err);\n }\n\n exports$c = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n };\n return exports$c;\n}\n\nvar exports$b = {},\n _dewExec$b = false;\nfunction dew$b() {\n if (_dewExec$b) return exports$b;\n _dewExec$b = true;\n const codes = {};\n\n function createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === \"string\") {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n class NodeError extends Base {\n constructor(arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n } // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\n function oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map(i => String(i));\n\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(\", \")}, or ` + expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\n function startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\n function endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\n function includes(str, search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n }\n\n createErrorType(\"ERR_INVALID_OPT_VALUE\", function (name, value) {\n return \"The value \\\"\" + value + \"\\\" is invalid for option \\\"\" + name + \"\\\"\";\n }, TypeError);\n createErrorType(\"ERR_INVALID_ARG_TYPE\", function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n\n if (typeof expected === \"string\" && startsWith(expected, \"not \")) {\n determiner = \"must not be\";\n expected = expected.replace(/^not /, \"\");\n } else {\n determiner = \"must be\";\n }\n\n let msg;\n\n if (endsWith(name, \" argument\")) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, \"type\")}`;\n } else {\n const type = includes(name, \".\") ? \"property\" : \"argument\";\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, \"type\")}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n }, TypeError);\n createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\", \"stream.push() after EOF\");\n createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\", function (name) {\n return \"The \" + name + \" method is not implemented\";\n });\n createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\", \"Premature close\");\n createErrorType(\"ERR_STREAM_DESTROYED\", function (name) {\n return \"Cannot call \" + name + \" after a stream was destroyed\";\n });\n createErrorType(\"ERR_MULTIPLE_CALLBACK\", \"Callback called multiple times\");\n createErrorType(\"ERR_STREAM_CANNOT_PIPE\", \"Cannot pipe, not readable\");\n createErrorType(\"ERR_STREAM_WRITE_AFTER_END\", \"write after end\");\n createErrorType(\"ERR_STREAM_NULL_VALUES\", \"May not write null values to stream\", TypeError);\n createErrorType(\"ERR_UNKNOWN_ENCODING\", function (arg) {\n return \"Unknown encoding: \" + arg;\n }, TypeError);\n createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\", \"stream.unshift() after end event\");\n exports$b.codes = codes;\n return exports$b;\n}\n\nvar exports$a = {},\n _dewExec$a = false;\nfunction dew$a() {\n if (_dewExec$a) return exports$a;\n _dewExec$a = true;\n\n var ERR_INVALID_OPT_VALUE = dew$b().codes.ERR_INVALID_OPT_VALUE;\n\n function highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n }\n\n function getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : \"highWaterMark\";\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n }\n\n exports$a = {\n getHighWaterMark: getHighWaterMark\n };\n return exports$a;\n}\n\nvar exports$9 = {},\n _dewExec$9 = false;\n\nvar _global$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\n\nfunction dew$9() {\n if (_dewExec$9) return exports$9;\n _dewExec$9 = true;\n\n /**\n * Module exports.\n */\n exports$9 = deprecate;\n /**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\n function deprecate(fn, msg) {\n if (config(\"noDeprecation\")) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config(\"throwDeprecation\")) {\n throw new Error(msg);\n } else if (config(\"traceDeprecation\")) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this || _global$2, arguments);\n }\n\n return deprecated;\n }\n /**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\n function config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!_global$2.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = _global$2.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === \"true\";\n }\n\n return exports$9;\n}\n\nvar exports$8 = {},\n _dewExec$8 = false;\n\nvar _global$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\n\nfunction dew$8() {\n if (_dewExec$8) return exports$8;\n _dewExec$8 = true;\n var process$1 = process;\n exports$8 = Writable;\n // there will be only 2 of these for each stream\n\n\n function CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n }\n /* </replacement> */\n\n /*<replacement>*/\n\n\n var Duplex;\n /*</replacement>*/\n\n Writable.WritableState = WritableState;\n /*<replacement>*/\n\n var internalUtil = {\n deprecate: dew$9()\n };\n /*</replacement>*/\n\n /*<replacement>*/\n\n var Stream = dew$e();\n /*</replacement>*/\n\n\n var Buffer = buffer.Buffer;\n\n var OurUint8Array = _global$1.Uint8Array || function () {};\n\n function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n }\n\n function _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n }\n\n var destroyImpl = dew$c();\n\n var _require = dew$a(),\n getHighWaterMark = _require.getHighWaterMark;\n\n var _require$codes = dew$b().codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\n var errorOrDestroy = destroyImpl.errorOrDestroy;\n\n dew$f()(Writable, Stream);\n\n function nop() {}\n\n function WritableState(options, stream, isDuplex) {\n Duplex = Duplex || dew$7();\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== \"boolean\") isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, \"writableHighWaterMark\", isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || \"utf8\"; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n }\n\n WritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n };\n\n (function () {\n try {\n Object.defineProperty(WritableState.prototype, \"buffer\", {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, \"_writableState.buffer is deprecated. Use _writableState.getBuffer \" + \"instead.\", \"DEP0003\")\n });\n } catch (_) {}\n })(); // Test _writableState for inheritance to account for Duplex streams,\n // whose prototype chain only points to Readable.\n\n\n var realHasInstance;\n\n if (typeof Symbol === \"function\" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === \"function\") {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n } else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n }\n\n function Writable(options) {\n Duplex = Duplex || dew$7(); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === \"function\") this._write = options.write;\n if (typeof options.writev === \"function\") this._writev = options.writev;\n if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n if (typeof options.final === \"function\") this._final = options.final;\n }\n\n Stream.call(this);\n } // Otherwise people can pipe Writable streams, which is just wrong.\n\n\n Writable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n };\n\n function writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process$1.nextTick(cb, er);\n } // Checks that a user-supplied chunk is valid, especially for the particular\n // mode the stream is in. Currently this means that `null` is never accepted\n // and undefined/non-string values are only allowed in object mode.\n\n\n function validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== \"string\" && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\"], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process$1.nextTick(cb, er);\n return false;\n }\n\n return true;\n }\n\n Writable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === \"function\") {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = \"buffer\";else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== \"function\") cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n };\n\n Writable.prototype.cork = function () {\n this._writableState.corked++;\n };\n\n Writable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n };\n\n Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === \"string\") encoding = encoding.toLowerCase();\n if (!([\"hex\", \"utf8\", \"utf-8\", \"ascii\", \"binary\", \"base64\", \"ucs2\", \"ucs-2\", \"utf16le\", \"utf-16le\", \"raw\"].indexOf((encoding + \"\").toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n };\n\n Object.defineProperty(Writable.prototype, \"writableBuffer\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n });\n\n function decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === \"string\") {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n }\n\n Object.defineProperty(Writable.prototype, \"writableHighWaterMark\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n }); // if we're already writing something, then just put this\n // in the queue, and wait our turn. Otherwise, call _write\n // If we return false, then we need a drain event, so set that flag.\n\n function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = \"buffer\";\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n }\n\n function doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED(\"write\"));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n }\n\n function onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process$1.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process$1.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n }\n\n function onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n }\n\n function onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== \"function\") throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process$1.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n }\n\n function afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n } // Must force callback to be called on nextTick, so that we don't\n // emit 'drain' before the write() consumer gets the 'false' return\n // value, and has a chance to attach a 'drain' listener.\n\n\n function onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit(\"drain\");\n }\n } // if there's something in the buffer waiting, then process it\n\n\n function clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, \"\", holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n }\n\n Writable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_write()\"));\n };\n\n Writable.prototype._writev = null;\n\n Writable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === \"function\") {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === \"function\") {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n };\n\n Object.defineProperty(Writable.prototype, \"writableLength\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n });\n\n function needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n }\n\n function callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit(\"prefinish\");\n finishMaybe(stream, state);\n });\n }\n\n function prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === \"function\" && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process$1.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit(\"prefinish\");\n }\n }\n }\n\n function finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit(\"finish\");\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n }\n\n function endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process$1.nextTick(cb);else stream.once(\"finish\", cb);\n }\n\n state.ended = true;\n stream.writable = false;\n }\n\n function onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n }\n\n Object.defineProperty(Writable.prototype, \"destroyed\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n });\n Writable.prototype.destroy = destroyImpl.destroy;\n Writable.prototype._undestroy = destroyImpl.undestroy;\n\n Writable.prototype._destroy = function (err, cb) {\n cb(err);\n };\n\n return exports$8;\n}\n\nvar exports$7 = {},\n _dewExec$7 = false;\nfunction dew$7() {\n if (_dewExec$7) return exports$7;\n _dewExec$7 = true;\n var process$1 = process;\n\n /*<replacement>*/\n var objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n };\n /*</replacement>*/\n\n\n exports$7 = Duplex;\n\n var Readable = dew$3();\n\n var Writable = dew$8();\n\n dew$f()(Duplex, Readable);\n\n {\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n }\n\n function Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once(\"end\", onend);\n }\n }\n }\n\n Object.defineProperty(Duplex.prototype, \"writableHighWaterMark\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n });\n Object.defineProperty(Duplex.prototype, \"writableBuffer\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n });\n Object.defineProperty(Duplex.prototype, \"writableLength\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n }); // the no-half-open enforcer\n\n function onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process$1.nextTick(onEndNT, this);\n }\n\n function onEndNT(self) {\n self.end();\n }\n\n Object.defineProperty(Duplex.prototype, \"destroyed\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n });\n return exports$7;\n}\n\nvar exports$6 = {},\n _dewExec$6 = false;\nfunction dew$6() {\n if (_dewExec$6) return exports$6;\n _dewExec$6 = true;\n\n var ERR_STREAM_PREMATURE_CLOSE = dew$b().codes.ERR_STREAM_PREMATURE_CLOSE;\n\n function once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n }\n\n function noop() {}\n\n function isRequest(stream) {\n return stream.setHeader && typeof stream.abort === \"function\";\n }\n\n function eos(stream, opts, callback) {\n if (typeof opts === \"function\") return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on(\"finish\", onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on(\"complete\", onfinish);\n stream.on(\"abort\", onclose);\n if (stream.req) onrequest();else stream.on(\"request\", onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on(\"end\", onlegacyfinish);\n stream.on(\"close\", onlegacyfinish);\n }\n\n stream.on(\"end\", onend);\n stream.on(\"finish\", onfinish);\n if (opts.error !== false) stream.on(\"error\", onerror);\n stream.on(\"close\", onclose);\n return function () {\n stream.removeListener(\"complete\", onfinish);\n stream.removeListener(\"abort\", onclose);\n stream.removeListener(\"request\", onrequest);\n if (stream.req) stream.req.removeListener(\"finish\", onfinish);\n stream.removeListener(\"end\", onlegacyfinish);\n stream.removeListener(\"close\", onlegacyfinish);\n stream.removeListener(\"finish\", onfinish);\n stream.removeListener(\"end\", onend);\n stream.removeListener(\"error\", onerror);\n stream.removeListener(\"close\", onclose);\n };\n }\n\n exports$6 = eos;\n return exports$6;\n}\n\nvar exports$5 = {},\n _dewExec$5 = false;\nfunction dew$5() {\n if (_dewExec$5) return exports$5;\n _dewExec$5 = true;\n var process$1 = process;\n\n var _Object$setPrototypeO;\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n var finished = dew$6();\n\n var kLastResolve = Symbol(\"lastResolve\");\n var kLastReject = Symbol(\"lastReject\");\n var kError = Symbol(\"error\");\n var kEnded = Symbol(\"ended\");\n var kLastPromise = Symbol(\"lastPromise\");\n var kHandlePromise = Symbol(\"handlePromise\");\n var kStream = Symbol(\"stream\");\n\n function createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n }\n\n function readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n }\n\n function onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process$1.nextTick(readAndResolve, iter);\n }\n\n function wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n }\n\n var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\n var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process$1.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n }), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n }), _Object$setPrototypeO), AsyncIteratorPrototype);\n\n var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== \"ERR_STREAM_PREMATURE_CLOSE\") {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on(\"readable\", onReadable.bind(null, iterator));\n return iterator;\n };\n\n exports$5 = createReadableStreamAsyncIterator;\n return exports$5;\n}\n\nvar exports$4 = {},\n _dewExec$4 = false;\nfunction dew$4() {\n if (_dewExec$4) return exports$4;\n _dewExec$4 = true;\n\n exports$4 = function () {\n throw new Error(\"Readable.from is not available in the browser\");\n };\n\n return exports$4;\n}\n\nvar exports$3 = {},\n _dewExec$3 = false;\n\nvar _global = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\n\nfunction dew$3() {\n if (_dewExec$3) return exports$3;\n _dewExec$3 = true;\n var process$1 = process;\n exports$3 = Readable;\n /*<replacement>*/\n\n var Duplex;\n /*</replacement>*/\n\n Readable.ReadableState = ReadableState;\n /*<replacement>*/\n\n y.EventEmitter;\n\n var EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n };\n /*</replacement>*/\n\n /*<replacement>*/\n\n\n var Stream = dew$e();\n /*</replacement>*/\n\n\n var Buffer = buffer.Buffer;\n\n var OurUint8Array = _global.Uint8Array || function () {};\n\n function _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n }\n\n function _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n }\n /*<replacement>*/\n\n\n var debugUtil = X;\n var debug;\n\n if (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog(\"stream\");\n } else {\n debug = function debug() {};\n }\n /*</replacement>*/\n\n\n var BufferList = dew$d();\n\n var destroyImpl = dew$c();\n\n var _require = dew$a(),\n getHighWaterMark = _require.getHighWaterMark;\n\n var _require$codes = dew$b().codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\n var StringDecoder;\n var createReadableStreamAsyncIterator;\n var from;\n\n dew$f()(Readable, Stream);\n\n var errorOrDestroy = destroyImpl.errorOrDestroy;\n var kProxyEvents = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n\n function prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === \"function\") return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n\n function ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || dew$7();\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== \"boolean\") isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, \"readableHighWaterMark\", isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || \"utf8\"; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = e$1.StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n }\n\n function Readable(options) {\n Duplex = Duplex || dew$7();\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === \"function\") this._read = options.read;\n if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n }\n\n Stream.call(this);\n }\n\n Object.defineProperty(Readable.prototype, \"destroyed\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n });\n Readable.prototype.destroy = destroyImpl.destroy;\n Readable.prototype._undestroy = destroyImpl.undestroy;\n\n Readable.prototype._destroy = function (err, cb) {\n cb(err);\n }; // Manually shove something into the read() buffer.\n // This returns true if the highWaterMark has not been hit yet,\n // similar to how Writable.write() returns true if you should\n // write() some more.\n\n\n Readable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === \"string\") {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = \"\";\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n }; // Unshift should *always* be something directly out of read()\n\n\n Readable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n };\n\n function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug(\"readableAddChunk\", chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== \"string\" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n }\n\n function addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit(\"data\", chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n }\n\n function chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== \"string\" && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n }\n\n return er;\n }\n\n Readable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n }; // backwards compatibility.\n\n\n Readable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = e$1.StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = \"\";\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== \"\") this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n }; // Don't raise the hwm > 1GB\n\n\n var MAX_HWM = 1073741824;\n\n function computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n } // This function is designed to be inlinable, so please take care when making\n // changes to the function body.\n\n\n function howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n } // you can override either this method, or the async _read(n) below.\n\n\n Readable.prototype.read = function (n) {\n debug(\"read\", n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug(\"read: emitReadable\", state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug(\"need readable\", doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug(\"length less than watermark\", doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug(\"reading or ended\", doRead);\n } else if (doRead) {\n debug(\"do read\");\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit(\"data\", ret);\n return ret;\n };\n\n function onEofChunk(stream, state) {\n debug(\"onEofChunk\");\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n } // Don't emit readable right away in sync mode, because this can trigger\n // another read() call => stack overflow. This way, it might trigger\n // a nextTick recursion warning, but that's not so bad.\n\n\n function emitReadable(stream) {\n var state = stream._readableState;\n debug(\"emitReadable\", state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug(\"emitReadable\", state.flowing);\n state.emittedReadable = true;\n process$1.nextTick(emitReadable_, stream);\n }\n }\n\n function emitReadable_(stream) {\n var state = stream._readableState;\n debug(\"emitReadable_\", state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit(\"readable\");\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n } // at this point, the user has presumably seen the 'readable' event,\n // and called read() to consume some data. that may have triggered\n // in turn another _read(n) call, in which case reading = true if\n // it's in progress.\n // However, if we're not ended, or reading, and the length < hwm,\n // then go ahead and try to read some more preemptively.\n\n\n function maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process$1.nextTick(maybeReadMore_, stream, state);\n }\n }\n\n function maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug(\"maybeReadMore read 0\");\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n } // abstract method. to be overridden in specific implementation classes.\n // call cb(er, data) where data is <= n in length.\n // for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n // arbitrary, and perhaps not very meaningful.\n\n\n Readable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED(\"_read()\"));\n };\n\n Readable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug(\"pipe count=%d opts=%j\", state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process$1.stdout && dest !== process$1.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process$1.nextTick(endFn);else src.once(\"end\", endFn);\n dest.on(\"unpipe\", onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug(\"onunpipe\");\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug(\"onend\");\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on(\"drain\", ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug(\"cleanup\"); // cleanup event handlers once the pipe is broken\n\n dest.removeListener(\"close\", onclose);\n dest.removeListener(\"finish\", onfinish);\n dest.removeListener(\"drain\", ondrain);\n dest.removeListener(\"error\", onerror);\n dest.removeListener(\"unpipe\", onunpipe);\n src.removeListener(\"end\", onend);\n src.removeListener(\"end\", unpipe);\n src.removeListener(\"data\", ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on(\"data\", ondata);\n\n function ondata(chunk) {\n debug(\"ondata\");\n var ret = dest.write(chunk);\n debug(\"dest.write\", ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug(\"false write response, pause\", state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug(\"onerror\", er);\n unpipe();\n dest.removeListener(\"error\", onerror);\n if (EElistenerCount(dest, \"error\") === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, \"error\", onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener(\"finish\", onfinish);\n unpipe();\n }\n\n dest.once(\"close\", onclose);\n\n function onfinish() {\n debug(\"onfinish\");\n dest.removeListener(\"close\", onclose);\n unpipe();\n }\n\n dest.once(\"finish\", onfinish);\n\n function unpipe() {\n debug(\"unpipe\");\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit(\"pipe\", src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug(\"pipe resume\");\n src.resume();\n }\n\n return dest;\n };\n\n function pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug(\"pipeOnDrain\", state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, \"data\")) {\n state.flowing = true;\n flow(src);\n }\n };\n }\n\n Readable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit(\"unpipe\", this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit(\"unpipe\", this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit(\"unpipe\", this, unpipeInfo);\n return this;\n }; // set up data events if they are asked for\n // Ensure readable listeners eventually get something\n\n\n Readable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === \"data\") {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount(\"readable\") > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === \"readable\") {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug(\"on readable\", state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process$1.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n };\n\n Readable.prototype.addListener = Readable.prototype.on;\n\n Readable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === \"readable\") {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process$1.nextTick(updateReadableListening, this);\n }\n\n return res;\n };\n\n Readable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === \"readable\" || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process$1.nextTick(updateReadableListening, this);\n }\n\n return res;\n };\n\n function updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount(\"readable\") > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount(\"data\") > 0) {\n self.resume();\n }\n }\n\n function nReadingNextTick(self) {\n debug(\"readable nexttick read 0\");\n self.read(0);\n } // pause() and resume() are remnants of the legacy readable stream API\n // If the user uses them, then switch into old mode.\n\n\n Readable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug(\"resume\"); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n };\n\n function resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process$1.nextTick(resume_, stream, state);\n }\n }\n\n function resume_(stream, state) {\n debug(\"resume\", state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit(\"resume\");\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n }\n\n Readable.prototype.pause = function () {\n debug(\"call pause flowing=%j\", this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug(\"pause\");\n this._readableState.flowing = false;\n this.emit(\"pause\");\n }\n\n this._readableState.paused = true;\n return this;\n };\n\n function flow(stream) {\n var state = stream._readableState;\n debug(\"flow\", state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n }\n } // wrap an old-style stream as the async data source.\n // This is *not* part of the readable stream interface.\n // It is an ugly unfortunate mess of history.\n\n\n Readable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on(\"end\", function () {\n debug(\"wrapped end\");\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on(\"data\", function (chunk) {\n debug(\"wrapped data\");\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === \"function\") {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug(\"wrapped _read\", n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n };\n\n if (typeof Symbol === \"function\") {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = dew$5();\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n }\n\n Object.defineProperty(Readable.prototype, \"readableHighWaterMark\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n });\n Object.defineProperty(Readable.prototype, \"readableBuffer\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n });\n Object.defineProperty(Readable.prototype, \"readableFlowing\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n }); // exposed for testing purposes only.\n\n Readable._fromList = fromList;\n Object.defineProperty(Readable.prototype, \"readableLength\", {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n }); // Pluck off n bytes from an array of buffers.\n // Length is the combined lengths of all the buffers in the list.\n // This function is designed to be inlinable, so please take care when making\n // changes to the function body.\n\n function fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join(\"\");else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n }\n\n function endReadable(stream) {\n var state = stream._readableState;\n debug(\"endReadable\", state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process$1.nextTick(endReadableNT, state, stream);\n }\n }\n\n function endReadableNT(state, stream) {\n debug(\"endReadableNT\", state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit(\"end\");\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n }\n\n if (typeof Symbol === \"function\") {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = dew$4();\n }\n\n return from(Readable, iterable, opts);\n };\n }\n\n function indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n }\n\n return exports$3;\n}\n\nvar exports$2 = {},\n _dewExec$2 = false;\nfunction dew$2() {\n if (_dewExec$2) return exports$2;\n _dewExec$2 = true;\n exports$2 = Transform;\n\n var _require$codes = dew$b().codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\n var Duplex = dew$7();\n\n dew$f()(Transform, Duplex);\n\n function afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit(\"error\", new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n }\n\n function Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === \"function\") this._transform = options.transform;\n if (typeof options.flush === \"function\") this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on(\"prefinish\", prefinish);\n }\n\n function prefinish() {\n var _this = this;\n\n if (typeof this._flush === \"function\" && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n }\n\n Transform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n }; // This is the part where you do stuff!\n // override this function in implementation classes.\n // 'chunk' is an input chunk.\n //\n // Call `push(newChunk)` to pass along transformed output\n // to the readable side. You may call 'push' zero or more times.\n //\n // Call `cb(err)` when you are done with this chunk. If you pass\n // an error, then that'll put the hurt on the whole operation. If you\n // never call cb(), then you'll never get another chunk.\n\n\n Transform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_transform()\"));\n };\n\n Transform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n }; // Doesn't matter what the args are here.\n // _transform does all the work.\n // That we got here means that the readable side wants more data.\n\n\n Transform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n };\n\n Transform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n };\n\n function done(stream, er, data) {\n if (er) return stream.emit(\"error\", er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n }\n\n return exports$2;\n}\n\nvar exports$1 = {},\n _dewExec$1 = false;\nfunction dew$1() {\n if (_dewExec$1) return exports$1;\n _dewExec$1 = true;\n exports$1 = PassThrough;\n\n var Transform = dew$2();\n\n dew$f()(PassThrough, Transform);\n\n function PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n }\n\n PassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n };\n\n return exports$1;\n}\n\nvar exports = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports;\n _dewExec = true;\n var eos;\n\n function once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n }\n\n var _require$codes = dew$b().codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\n function noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n }\n\n function isRequest(stream) {\n return stream.setHeader && typeof stream.abort === \"function\";\n }\n\n function destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on(\"close\", function () {\n closed = true;\n });\n if (eos === undefined) eos = dew$6();\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === \"function\") return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED(\"pipe\"));\n };\n }\n\n function call(fn) {\n fn();\n }\n\n function pipe(from, to) {\n return from.pipe(to);\n }\n\n function popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== \"function\") return noop;\n return streams.pop();\n }\n\n function pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS(\"streams\");\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n }\n\n exports = pipeline;\n return exports;\n}\n\nexport { dew$3 as a, buffer as b, dew$8 as c, dew$f as d, dew$7 as e, dew$2 as f, dew$1 as g, dew$6 as h, dew as i };\n", "import { X } from './chunk-b4205b57.js';\nimport './chunk-5decc758.js';\n\nX._extend;X.callbackify;X.debuglog;X.deprecate;X.format;X.inherits;X.inspect;X.isArray;X.isBoolean;X.isBuffer;X.isDate;X.isError;X.isFunction;X.isNull;X.isNullOrUndefined;X.isNumber;X.isObject;X.isPrimitive;X.isRegExp;X.isString;X.isSymbol;X.isUndefined;X.log;X.promisify;\n\nvar _extend = X._extend;\nvar callbackify = X.callbackify;\nvar debuglog = X.debuglog;\nvar deprecate = X.deprecate;\nvar format = X.format;\nvar inherits = X.inherits;\nvar inspect = X.inspect;\nvar isArray = X.isArray;\nvar isBoolean = X.isBoolean;\nvar isBuffer = X.isBuffer;\nvar isDate = X.isDate;\nvar isError = X.isError;\nvar isFunction = X.isFunction;\nvar isNull = X.isNull;\nvar isNullOrUndefined = X.isNullOrUndefined;\nvar isNumber = X.isNumber;\nvar isObject = X.isObject;\nvar isPrimitive = X.isPrimitive;\nvar isRegExp = X.isRegExp;\nvar isString = X.isString;\nvar isSymbol = X.isSymbol;\nvar isUndefined = X.isUndefined;\nvar log = X.log;\nvar promisify = X.promisify;\nvar types = X.types;\n\nconst TextEncoder = self.TextEncoder;\nconst TextDecoder = self.TextDecoder;\n\nexport { TextDecoder as T, _extend as _, TextEncoder as a, deprecate as b, callbackify as c, debuglog as d, inspect as e, format as f, isArray as g, isBoolean as h, inherits as i, isBuffer as j, isDate as k, isError as l, isFunction as m, isNull as n, isNullOrUndefined as o, promisify as p, isNumber as q, isObject as r, isPrimitive as s, isRegExp as t, isString as u, isSymbol as v, isUndefined as w, log as x, types as y };\n", "import { T as T$1 } from './chunk-5decc758.js';\n\nvar t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,e=Object.prototype.toString,o=function(o){return !(t&&o&&\"object\"==typeof o&&Symbol.toStringTag in o)&&\"[object Arguments]\"===e.call(o)},n=function(t){return !!o(t)||null!==t&&\"object\"==typeof t&&\"number\"==typeof t.length&&t.length>=0&&\"[object Array]\"!==e.call(t)&&\"[object Function]\"===e.call(t.callee)},r=function(){return o(arguments)}();o.isLegacyArguments=n;var l=r?o:n;var t$1=Object.prototype.toString,o$1=Function.prototype.toString,n$1=/^\\s*(?:function)?\\*/,e$1=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,r$1=Object.getPrototypeOf,c=function(){if(!e$1)return !1;try{return Function(\"return function*() {}\")()}catch(t){}}(),u=c?r$1(c):{},i=function(c){return \"function\"==typeof c&&(!!n$1.test(o$1.call(c))||(e$1?r$1(c)===u:\"[object GeneratorFunction]\"===t$1.call(c)))};var t$2=\"function\"==typeof Object.create?function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}));}:function(t,e){if(e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t;}};var i$1=function(e){return e&&\"object\"==typeof e&&\"function\"==typeof e.copy&&\"function\"==typeof e.fill&&\"function\"==typeof e.readUInt8},o$2={},u$1=i$1,f=l,a=i;function c$1(e){return e.call.bind(e)}var s=\"undefined\"!=typeof BigInt,p=\"undefined\"!=typeof Symbol,y=p&&void 0!==Symbol.toStringTag,l$1=\"undefined\"!=typeof Uint8Array,d=\"undefined\"!=typeof ArrayBuffer;if(l$1&&y)var g=Object.getPrototypeOf(Uint8Array.prototype),b=c$1(Object.getOwnPropertyDescriptor(g,Symbol.toStringTag).get);var m=c$1(Object.prototype.toString),h=c$1(Number.prototype.valueOf),j=c$1(String.prototype.valueOf),A=c$1(Boolean.prototype.valueOf);if(s)var w=c$1(BigInt.prototype.valueOf);if(p)var v=c$1(Symbol.prototype.valueOf);function O(e,t){if(\"object\"!=typeof e)return !1;try{return t(e),!0}catch(e){return !1}}function S(e){return l$1&&y?void 0!==b(e):B(e)||k(e)||E(e)||D(e)||U(e)||P(e)||x(e)||I(e)||M(e)||z(e)||F(e)}function B(e){return l$1&&y?\"Uint8Array\"===b(e):\"[object Uint8Array]\"===m(e)||u$1(e)&&void 0!==e.buffer}function k(e){return l$1&&y?\"Uint8ClampedArray\"===b(e):\"[object Uint8ClampedArray]\"===m(e)}function E(e){return l$1&&y?\"Uint16Array\"===b(e):\"[object Uint16Array]\"===m(e)}function D(e){return l$1&&y?\"Uint32Array\"===b(e):\"[object Uint32Array]\"===m(e)}function U(e){return l$1&&y?\"Int8Array\"===b(e):\"[object Int8Array]\"===m(e)}function P(e){return l$1&&y?\"Int16Array\"===b(e):\"[object Int16Array]\"===m(e)}function x(e){return l$1&&y?\"Int32Array\"===b(e):\"[object Int32Array]\"===m(e)}function I(e){return l$1&&y?\"Float32Array\"===b(e):\"[object Float32Array]\"===m(e)}function M(e){return l$1&&y?\"Float64Array\"===b(e):\"[object Float64Array]\"===m(e)}function z(e){return l$1&&y?\"BigInt64Array\"===b(e):\"[object BigInt64Array]\"===m(e)}function F(e){return l$1&&y?\"BigUint64Array\"===b(e):\"[object BigUint64Array]\"===m(e)}function T(e){return \"[object Map]\"===m(e)}function N(e){return \"[object Set]\"===m(e)}function W(e){return \"[object WeakMap]\"===m(e)}function $(e){return \"[object WeakSet]\"===m(e)}function C(e){return \"[object ArrayBuffer]\"===m(e)}function V(e){return \"undefined\"!=typeof ArrayBuffer&&(C.working?C(e):e instanceof ArrayBuffer)}function G(e){return \"[object DataView]\"===m(e)}function R(e){return \"undefined\"!=typeof DataView&&(G.working?G(e):e instanceof DataView)}function J(e){return \"[object SharedArrayBuffer]\"===m(e)}function _(e){return \"undefined\"!=typeof SharedArrayBuffer&&(J.working?J(e):e instanceof SharedArrayBuffer)}function H(e){return O(e,h)}function Z(e){return O(e,j)}function q(e){return O(e,A)}function K(e){return s&&O(e,w)}function L(e){return p&&O(e,v)}o$2.isArgumentsObject=f,o$2.isGeneratorFunction=a,o$2.isPromise=function(e){return \"undefined\"!=typeof Promise&&e instanceof Promise||null!==e&&\"object\"==typeof e&&\"function\"==typeof e.then&&\"function\"==typeof e.catch},o$2.isArrayBufferView=function(e){return d&&ArrayBuffer.isView?ArrayBuffer.isView(e):S(e)||R(e)},o$2.isTypedArray=S,o$2.isUint8Array=B,o$2.isUint8ClampedArray=k,o$2.isUint16Array=E,o$2.isUint32Array=D,o$2.isInt8Array=U,o$2.isInt16Array=P,o$2.isInt32Array=x,o$2.isFloat32Array=I,o$2.isFloat64Array=M,o$2.isBigInt64Array=z,o$2.isBigUint64Array=F,T.working=\"undefined\"!=typeof Map&&T(new Map),o$2.isMap=function(e){return \"undefined\"!=typeof Map&&(T.working?T(e):e instanceof Map)},N.working=\"undefined\"!=typeof Set&&N(new Set),o$2.isSet=function(e){return \"undefined\"!=typeof Set&&(N.working?N(e):e instanceof Set)},W.working=\"undefined\"!=typeof WeakMap&&W(new WeakMap),o$2.isWeakMap=function(e){return \"undefined\"!=typeof WeakMap&&(W.working?W(e):e instanceof WeakMap)},$.working=\"undefined\"!=typeof WeakSet&&$(new WeakSet),o$2.isWeakSet=function(e){return $(e)},C.working=\"undefined\"!=typeof ArrayBuffer&&C(new ArrayBuffer),o$2.isArrayBuffer=V,G.working=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof DataView&&G(new DataView(new ArrayBuffer(1),0,1)),o$2.isDataView=R,J.working=\"undefined\"!=typeof SharedArrayBuffer&&J(new SharedArrayBuffer),o$2.isSharedArrayBuffer=_,o$2.isAsyncFunction=function(e){return \"[object AsyncFunction]\"===m(e)},o$2.isMapIterator=function(e){return \"[object Map Iterator]\"===m(e)},o$2.isSetIterator=function(e){return \"[object Set Iterator]\"===m(e)},o$2.isGeneratorObject=function(e){return \"[object Generator]\"===m(e)},o$2.isWebAssemblyCompiledModule=function(e){return \"[object WebAssembly.Module]\"===m(e)},o$2.isNumberObject=H,o$2.isStringObject=Z,o$2.isBooleanObject=q,o$2.isBigIntObject=K,o$2.isSymbolObject=L,o$2.isBoxedPrimitive=function(e){return H(e)||Z(e)||q(e)||K(e)||L(e)},o$2.isAnyArrayBuffer=function(e){return l$1&&(V(e)||_(e))},[\"isProxy\",\"isExternal\",\"isModuleNamespaceObject\"].forEach((function(e){Object.defineProperty(o$2,e,{enumerable:!1,value:function(){throw new Error(e+\" is not supported in userland\")}});}));var Q=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:global,X={},Y=T$1,ee=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++)r[t[n]]=Object.getOwnPropertyDescriptor(e,t[n]);return r},te=/%[sdj%]/g;X.format=function(e){if(!ge(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(oe(arguments[r]));return t.join(\" \")}r=1;for(var n=arguments,i=n.length,o=String(e).replace(te,(function(e){if(\"%%\"===e)return \"%\";if(r>=i)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return \"[Circular]\"}default:return e}})),u=n[r];r<i;u=n[++r])le(u)||!he(u)?o+=\" \"+u:o+=\" \"+oe(u);return o},X.deprecate=function(e,t){if(void 0!==Y&&!0===Y.noDeprecation)return e;if(void 0===Y)return function(){return X.deprecate(e,t).apply(this||Q,arguments)};var r=!1;return function(){if(!r){if(Y.throwDeprecation)throw new Error(t);Y.traceDeprecation?console.trace(t):console.error(t),r=!0;}return e.apply(this||Q,arguments)}};var re={},ne=/^$/;if(Y.env.NODE_DEBUG){var ie=Y.env.NODE_DEBUG;ie=ie.replace(/[|\\\\{}()[\\]^$+?.]/g,\"\\\\$&\").replace(/\\*/g,\".*\").replace(/,/g,\"$|^\").toUpperCase(),ne=new RegExp(\"^\"+ie+\"$\",\"i\");}function oe(e,t){var r={seen:[],stylize:fe};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),ye(t)?r.showHidden=t:t&&X._extend(r,t),be(r.showHidden)&&(r.showHidden=!1),be(r.depth)&&(r.depth=2),be(r.colors)&&(r.colors=!1),be(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ue),ae(r,e,r.depth)}function ue(e,t){var r=oe.styles[t];return r?\"\u001B[\"+oe.colors[r][0]+\"m\"+e+\"\u001B[\"+oe.colors[r][1]+\"m\":e}function fe(e,t){return e}function ae(e,t,r){if(e.customInspect&&t&&we(t.inspect)&&t.inspect!==X.inspect&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return ge(n)||(n=ae(e,n,r)),n}var i=function(e,t){if(be(t))return e.stylize(\"undefined\",\"undefined\");if(ge(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(de(t))return e.stylize(\"\"+t,\"number\");if(ye(t))return e.stylize(\"\"+t,\"boolean\");if(le(t))return e.stylize(\"null\",\"null\")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0;})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Ae(t)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return ce(t);if(0===o.length){if(we(t)){var f=t.name?\": \"+t.name:\"\";return e.stylize(\"[Function\"+f+\"]\",\"special\")}if(me(t))return e.stylize(RegExp.prototype.toString.call(t),\"regexp\");if(je(t))return e.stylize(Date.prototype.toString.call(t),\"date\");if(Ae(t))return ce(t)}var a,c=\"\",s=!1,p=[\"{\",\"}\"];(pe(t)&&(s=!0,p=[\"[\",\"]\"]),we(t))&&(c=\" [Function\"+(t.name?\": \"+t.name:\"\")+\"]\");return me(t)&&(c=\" \"+RegExp.prototype.toString.call(t)),je(t)&&(c=\" \"+Date.prototype.toUTCString.call(t)),Ae(t)&&(c=\" \"+ce(t)),0!==o.length||s&&0!=t.length?r<0?me(t)?e.stylize(RegExp.prototype.toString.call(t),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(t),a=s?function(e,t,r,n,i){for(var o=[],u=0,f=t.length;u<f;++u)ke(t,String(u))?o.push(se(e,t,r,n,String(u),!0)):o.push(\"\");return i.forEach((function(i){i.match(/^\\d+$/)||o.push(se(e,t,r,n,i,!0));})),o}(e,t,r,u,o):o.map((function(n){return se(e,t,r,u,n,s)})),e.seen.pop(),function(e,t,r){var n=0;if(e.reduce((function(e,t){return n++,t.indexOf(\"\\n\")>=0&&n++,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(a,c,p)):p[0]+c+p[1]}function ce(e){return \"[\"+Error.prototype.toString.call(e)+\"]\"}function se(e,t,r,n,i,o){var u,f,a;if((a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?f=a.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):a.set&&(f=e.stylize(\"[Setter]\",\"special\")),ke(n,i)||(u=\"[\"+i+\"]\"),f||(e.seen.indexOf(a.value)<0?(f=le(r)?ae(e,a.value,null):ae(e,a.value,r-1)).indexOf(\"\\n\")>-1&&(f=o?f.split(\"\\n\").map((function(e){return \" \"+e})).join(\"\\n\").substr(2):\"\\n\"+f.split(\"\\n\").map((function(e){return \" \"+e})).join(\"\\n\")):f=e.stylize(\"[Circular]\",\"special\")),be(u)){if(o&&i.match(/^\\d+$/))return f;(u=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,\"name\")):(u=u.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),u=e.stylize(u,\"string\"));}return u+\": \"+f}function pe(e){return Array.isArray(e)}function ye(e){return \"boolean\"==typeof e}function le(e){return null===e}function de(e){return \"number\"==typeof e}function ge(e){return \"string\"==typeof e}function be(e){return void 0===e}function me(e){return he(e)&&\"[object RegExp]\"===ve(e)}function he(e){return \"object\"==typeof e&&null!==e}function je(e){return he(e)&&\"[object Date]\"===ve(e)}function Ae(e){return he(e)&&(\"[object Error]\"===ve(e)||e instanceof Error)}function we(e){return \"function\"==typeof e}function ve(e){return Object.prototype.toString.call(e)}function Oe(e){return e<10?\"0\"+e.toString(10):e.toString(10)}X.debuglog=function(e){if(e=e.toUpperCase(),!re[e])if(ne.test(e)){var t=Y.pid;re[e]=function(){var r=X.format.apply(X,arguments);console.error(\"%s %d: %s\",e,t,r);};}else re[e]=function(){};return re[e]},X.inspect=oe,oe.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},oe.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},X.types=o$2,X.isArray=pe,X.isBoolean=ye,X.isNull=le,X.isNullOrUndefined=function(e){return null==e},X.isNumber=de,X.isString=ge,X.isSymbol=function(e){return \"symbol\"==typeof e},X.isUndefined=be,X.isRegExp=me,X.types.isRegExp=me,X.isObject=he,X.isDate=je,X.types.isDate=je,X.isError=Ae,X.types.isNativeError=Ae,X.isFunction=we,X.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},X.isBuffer=i$1;var Se=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function Be(){var e=new Date,t=[Oe(e.getHours()),Oe(e.getMinutes()),Oe(e.getSeconds())].join(\":\");return [e.getDate(),Se[e.getMonth()],t].join(\" \")}function ke(e,t){return Object.prototype.hasOwnProperty.call(e,t)}X.log=function(){console.log(\"%s - %s\",Be(),X.format.apply(X,arguments));},X.inherits=t$2,X._extend=function(e,t){if(!t||!he(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var Ee=\"undefined\"!=typeof Symbol?Symbol(\"util.promisify.custom\"):void 0;function De(e,t){if(!e){var r=new Error(\"Promise was rejected with a falsy value\");r.reason=e,e=r;}return t(e)}X.promisify=function(e){if(\"function\"!=typeof e)throw new TypeError('The \"original\" argument must be of type Function');if(Ee&&e[Ee]){var t;if(\"function\"!=typeof(t=e[Ee]))throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');return Object.defineProperty(t,Ee,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,n=new Promise((function(e,n){t=e,r=n;})),i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);i.push((function(e,n){e?r(e):t(n);}));try{e.apply(this||Q,i);}catch(e){r(e);}return n}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Ee&&Object.defineProperty(t,Ee,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,ee(e))},X.promisify.custom=Ee,X.callbackify=function(e){if(\"function\"!=typeof e)throw new TypeError('The \"original\" argument must be of type Function');function t(){for(var t=[],r=0;r<arguments.length;r++)t.push(arguments[r]);var n=t.pop();if(\"function\"!=typeof n)throw new TypeError(\"The last argument must be of type Function\");var i=this||Q,o=function(){return n.apply(i,arguments)};e.apply(this||Q,t).then((function(e){Y.nextTick(o.bind(null,null,e));}),(function(e){Y.nextTick(De.bind(null,e,o));}));}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Object.defineProperties(t,ee(e)),t};\n\nexport { X, t$2 as t };\n", "var e,t,n,r=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:global,o=e={};function i(){throw new Error(\"setTimeout has not been defined\")}function u(){throw new Error(\"clearTimeout has not been defined\")}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this||r,e,0)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:i;}catch(e){t=i;}try{n=\"function\"==typeof clearTimeout?clearTimeout:u;}catch(e){n=u;}}();var l,s=[],f=!1,a=-1;function h(){f&&l&&(f=!1,l.length?s=l.concat(s):a=-1,s.length&&d());}function d(){if(!f){var e=c(h);f=!0;for(var t=s.length;t;){for(l=s,s=[];++a<t;)l&&l[a].run();a=-1,t=s.length;}l=null,f=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===u||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e);}catch(t){try{return n.call(null,e)}catch(t){return n.call(this||r,e)}}}(e);}}function m(e,t){(this||r).fun=e,(this||r).array=t;}function p(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];s.push(new m(e,t)),1!==s.length||f||c(d);},m.prototype.run=function(){(this||r).fun.apply(null,(this||r).array);},o.title=\"browser\",o.browser=!0,o.env={},o.argv=[],o.version=\"\",o.versions={},o.on=p,o.addListener=p,o.once=p,o.off=p,o.removeListener=p,o.removeAllListeners=p,o.emit=p,o.prependListener=p,o.prependOnceListener=p,o.listeners=function(e){return []},o.binding=function(e){throw new Error(\"process.binding is not supported\")},o.cwd=function(){return \"/\"},o.chdir=function(e){throw new Error(\"process.chdir is not supported\")},o.umask=function(){return 0};var T=e;T.addListener;T.argv;T.binding;T.browser;T.chdir;T.cwd;T.emit;T.env;T.listeners;T.nextTick;T.off;T.on;T.once;T.prependListener;T.prependOnceListener;T.removeAllListeners;T.removeListener;T.title;T.umask;T.version;T.versions;\n\nexport { T };\n", "var exports = {},\n _dewExec = false;\n\nvar _global = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\n\nfunction dew() {\n if (_dewExec) return exports;\n _dewExec = true;\n // shim for using process in browser\n var process = exports = {}; // cached from whatever global is present so that test runners that stub it\n // don't break things. But we need to wrap it in a try catch in case it is\n // wrapped in strict mode code which doesn't define any globals. It's inside a\n // function because try/catches deoptimize in certain engines.\n\n var cachedSetTimeout;\n var cachedClearTimeout;\n\n function defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n }\n\n function defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n }\n\n (function () {\n try {\n if (typeof setTimeout === \"function\") {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === \"function\") {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this || _global, fun, 0);\n }\n }\n }\n\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this || _global, marker);\n }\n }\n }\n\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n }\n\n function drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n }; // v8 likes predictible objects\n\n\n function Item(fun, array) {\n (this || _global).fun = fun;\n (this || _global).array = array;\n }\n\n Item.prototype.run = function () {\n (this || _global).fun.apply(null, (this || _global).array);\n };\n\n process.title = \"browser\";\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = \"\"; // empty string to avoid regexp issues\n\n process.versions = {};\n\n function noop() {}\n\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n\n process.listeners = function (name) {\n return [];\n };\n\n process.binding = function (name) {\n throw new Error(\"process.binding is not supported\");\n };\n\n process.cwd = function () {\n return \"/\";\n };\n\n process.chdir = function (dir) {\n throw new Error(\"process.chdir is not supported\");\n };\n\n process.umask = function () {\n return 0;\n };\n\n return exports;\n}\n\nvar process = dew();\n\nprocess.platform = 'browser';\nprocess.addListener;\nprocess.argv;\nprocess.binding;\nprocess.browser;\nprocess.chdir;\nprocess.cwd;\nprocess.emit;\nprocess.env;\nprocess.listeners;\nprocess.nextTick;\nprocess.off;\nprocess.on;\nprocess.once;\nprocess.prependListener;\nprocess.prependOnceListener;\nprocess.removeAllListeners;\nprocess.removeListener;\nprocess.title;\nprocess.umask;\nprocess.version;\nprocess.versions;\n\nexport { process as p };\n", "for(var r$1={byteLength:function(r){var t=u$2(r),e=t[0],n=t[1];return 3*(e+n)/4-n},toByteArray:function(r){var t,o,a=u$2(r),h=a[0],c=a[1],d=new n$2(function(r,t,e){return 3*(t+e)/4-e}(0,h,c)),f=0,A=c>0?h-4:h;for(o=0;o<A;o+=4)t=e$2[r.charCodeAt(o)]<<18|e$2[r.charCodeAt(o+1)]<<12|e$2[r.charCodeAt(o+2)]<<6|e$2[r.charCodeAt(o+3)],d[f++]=t>>16&255,d[f++]=t>>8&255,d[f++]=255&t;2===c&&(t=e$2[r.charCodeAt(o)]<<2|e$2[r.charCodeAt(o+1)]>>4,d[f++]=255&t);1===c&&(t=e$2[r.charCodeAt(o)]<<10|e$2[r.charCodeAt(o+1)]<<4|e$2[r.charCodeAt(o+2)]>>2,d[f++]=t>>8&255,d[f++]=255&t);return d},fromByteArray:function(r){for(var e,n=r.length,o=n%3,a=[],h=0,u=n-o;h<u;h+=16383)a.push(c$1(r,h,h+16383>u?u:h+16383));1===o?(e=r[n-1],a.push(t$1[e>>2]+t$1[e<<4&63]+\"==\")):2===o&&(e=(r[n-2]<<8)+r[n-1],a.push(t$1[e>>10]+t$1[e>>4&63]+t$1[e<<2&63]+\"=\"));return a.join(\"\")}},t$1=[],e$2=[],n$2=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o$2=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a$1=0,h$1=o$2.length;a$1<h$1;++a$1)t$1[a$1]=o$2[a$1],e$2[o$2.charCodeAt(a$1)]=a$1;function u$2(r){var t=r.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var e=r.indexOf(\"=\");return -1===e&&(e=t),[e,e===t?0:4-e%4]}function c$1(r,e,n){for(var o,a,h=[],u=e;u<n;u+=3)o=(r[u]<<16&16711680)+(r[u+1]<<8&65280)+(255&r[u+2]),h.push(t$1[(a=o)>>18&63]+t$1[a>>12&63]+t$1[a>>6&63]+t$1[63&a]);return h.join(\"\")}e$2[\"-\".charCodeAt(0)]=62,e$2[\"_\".charCodeAt(0)]=63;var a$1$1={read:function(a,t,o,r,h){var M,f,p=8*h-r-1,w=(1<<p)-1,e=w>>1,i=-7,N=o?h-1:0,n=o?-1:1,u=a[t+N];for(N+=n,M=u&(1<<-i)-1,u>>=-i,i+=p;i>0;M=256*M+a[t+N],N+=n,i-=8);for(f=M&(1<<-i)-1,M>>=-i,i+=r;i>0;f=256*f+a[t+N],N+=n,i-=8);if(0===M)M=1-e;else {if(M===w)return f?NaN:1/0*(u?-1:1);f+=Math.pow(2,r),M-=e;}return (u?-1:1)*f*Math.pow(2,M-r)},write:function(a,t,o,r,h,M){var f,p,w,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,u=r?0:M-1,l=r?1:-1,s=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(p=isNaN(t)?1:0,f=i):(f=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-f))<1&&(f--,w*=2),(t+=f+N>=1?n/w:n*Math.pow(2,1-N))*w>=2&&(f++,w/=2),f+N>=i?(p=0,f=i):f+N>=1?(p=(t*w-1)*Math.pow(2,h),f+=N):(p=t*Math.pow(2,N-1)*Math.pow(2,h),f=0));h>=8;a[o+u]=255&p,u+=l,p/=256,h-=8);for(f=f<<h|p,e+=h;e>0;a[o+u]=255&f,u+=l,f/=256,e-=8);a[o+u-l]|=128*s;}};var e$1$1={},n$1$1=r$1,i$1=a$1$1,o$1$1=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;e$1$1.Buffer=u$1$1,e$1$1.SlowBuffer=function(t){+t!=t&&(t=0);return u$1$1.alloc(+t)},e$1$1.INSPECT_MAX_BYTES=50;function f$2(t){if(t>2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var r=new Uint8Array(t);return Object.setPrototypeOf(r,u$1$1.prototype),r}function u$1$1(t,r,e){if(\"number\"==typeof t){if(\"string\"==typeof r)throw new TypeError('The \"string\" argument must be of type string. Received type number');return a$2(t)}return s$1(t,r,e)}function s$1(t,r,e){if(\"string\"==typeof t)return function(t,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!u$1$1.isEncoding(r))throw new TypeError(\"Unknown encoding: \"+r);var e=0|y(t,r),n=f$2(e),i=n.write(t,r);i!==e&&(n=n.slice(0,i));return n}(t,r);if(ArrayBuffer.isView(t))return p(t);if(null==t)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return c$1$1(t,r,e);if(\"undefined\"!=typeof SharedArrayBuffer&&(F(t,SharedArrayBuffer)||t&&F(t.buffer,SharedArrayBuffer)))return c$1$1(t,r,e);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return u$1$1.from(n,r,e);var i=function(t){if(u$1$1.isBuffer(t)){var r=0|l$1(t.length),e=f$2(r);return 0===e.length||t.copy(e,0,0,r),e}if(void 0!==t.length)return \"number\"!=typeof t.length||N(t.length)?f$2(0):p(t);if(\"Buffer\"===t.type&&Array.isArray(t.data))return p(t.data)}(t);if(i)return i;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return u$1$1.from(t[Symbol.toPrimitive](\"string\"),r,e);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function h$1$1(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function a$2(t){return h$1$1(t),f$2(t<0?0:0|l$1(t))}function p(t){for(var r=t.length<0?0:0|l$1(t.length),e=f$2(r),n=0;n<r;n+=1)e[n]=255&t[n];return e}function c$1$1(t,r,e){if(r<0||t.byteLength<r)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<r+(e||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;return n=void 0===r&&void 0===e?new Uint8Array(t):void 0===e?new Uint8Array(t,r):new Uint8Array(t,r,e),Object.setPrototypeOf(n,u$1$1.prototype),n}function l$1(t){if(t>=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function y(t,r){if(u$1$1.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var e=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===e)return 0;for(var i=!1;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return e;case\"utf8\":case\"utf-8\":return _(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*e;case\"hex\":return e>>>1;case\"base64\":return z(t).length;default:if(i)return n?-1:_(t).length;r=(\"\"+r).toLowerCase(),i=!0;}}function g(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return \"\";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return \"\";if((e>>>=0)<=(r>>>=0))return \"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return O(this,r,e);case\"utf8\":case\"utf-8\":return I(this,r,e);case\"ascii\":return S(this,r,e);case\"latin1\":case\"binary\":return R(this,r,e);case\"base64\":return T(this,r,e);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return L(this,r,e);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0;}}function w(t,r,e){var n=t[r];t[r]=t[e],t[e]=n;}function d(t,r,e,n,i){if(0===t.length)return -1;if(\"string\"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),N(e=+e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return -1;e=t.length-1;}else if(e<0){if(!i)return -1;e=0;}if(\"string\"==typeof r&&(r=u$1$1.from(r,n)),u$1$1.isBuffer(r))return 0===r.length?-1:v(t,r,e,n,i);if(\"number\"==typeof r)return r&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):v(t,[r],e,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function v(t,r,e,n,i){var o,f=1,u=t.length,s=r.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||r.length<2)return -1;f=2,u/=2,s/=2,e/=2;}function h(t,r){return 1===f?t[r]:t.readUInt16BE(r*f)}if(i){var a=-1;for(o=e;o<u;o++)if(h(t,o)===h(r,-1===a?0:o-a)){if(-1===a&&(a=o),o-a+1===s)return a*f}else -1!==a&&(o-=o-a),a=-1;}else for(e+s>u&&(e=u-s),o=e;o>=0;o--){for(var p=!0,c=0;c<s;c++)if(h(t,o+c)!==h(r,c)){p=!1;break}if(p)return o}return -1}function b(t,r,e,n){e=Number(e)||0;var i=t.length-e;n?(n=Number(n))>i&&(n=i):n=i;var o=r.length;n>o/2&&(n=o/2);for(var f=0;f<n;++f){var u=parseInt(r.substr(2*f,2),16);if(N(u))return f;t[e+f]=u;}return f}function m(t,r,e,n){return D(_(r,t.length-e),t,e,n)}function E(t,r,e,n){return D(function(t){for(var r=[],e=0;e<t.length;++e)r.push(255&t.charCodeAt(e));return r}(r),t,e,n)}function B(t,r,e,n){return E(t,r,e,n)}function A(t,r,e,n){return D(z(r),t,e,n)}function U(t,r,e,n){return D(function(t,r){for(var e,n,i,o=[],f=0;f<t.length&&!((r-=2)<0);++f)e=t.charCodeAt(f),n=e>>8,i=e%256,o.push(i),o.push(n);return o}(r,t.length-e),t,e,n)}function T(t,r,e){return 0===r&&e===t.length?n$1$1.fromByteArray(t):n$1$1.fromByteArray(t.slice(r,e))}function I(t,r,e){e=Math.min(t.length,e);for(var n=[],i=r;i<e;){var o,f,u,s,h=t[i],a=null,p=h>239?4:h>223?3:h>191?2:1;if(i+p<=e)switch(p){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],f=t[i+2],128==(192&o)&&128==(192&f)&&(s=(15&h)<<12|(63&o)<<6|63&f)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],f=t[i+2],u=t[i+3],128==(192&o)&&128==(192&f)&&128==(192&u)&&(s=(15&h)<<18|(63&o)<<12|(63&f)<<6|63&u)>65535&&s<1114112&&(a=s);}null===a?(a=65533,p=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=p;}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e=\"\",n=0;for(;n<r;)e+=String.fromCharCode.apply(String,t.slice(n,n+=4096));return e}(n)}e$1$1.kMaxLength=2147483647,u$1$1.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),r={foo:function(){return 42}};return Object.setPrototypeOf(r,Uint8Array.prototype),Object.setPrototypeOf(t,r),42===t.foo()}catch(t){return !1}}(),u$1$1.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(u$1$1.prototype,\"parent\",{enumerable:!0,get:function(){if(u$1$1.isBuffer(this))return this.buffer}}),Object.defineProperty(u$1$1.prototype,\"offset\",{enumerable:!0,get:function(){if(u$1$1.isBuffer(this))return this.byteOffset}}),u$1$1.poolSize=8192,u$1$1.from=function(t,r,e){return s$1(t,r,e)},Object.setPrototypeOf(u$1$1.prototype,Uint8Array.prototype),Object.setPrototypeOf(u$1$1,Uint8Array),u$1$1.alloc=function(t,r,e){return function(t,r,e){return h$1$1(t),t<=0?f$2(t):void 0!==r?\"string\"==typeof e?f$2(t).fill(r,e):f$2(t).fill(r):f$2(t)}(t,r,e)},u$1$1.allocUnsafe=function(t){return a$2(t)},u$1$1.allocUnsafeSlow=function(t){return a$2(t)},u$1$1.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==u$1$1.prototype},u$1$1.compare=function(t,r){if(F(t,Uint8Array)&&(t=u$1$1.from(t,t.offset,t.byteLength)),F(r,Uint8Array)&&(r=u$1$1.from(r,r.offset,r.byteLength)),!u$1$1.isBuffer(t)||!u$1$1.isBuffer(r))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;for(var e=t.length,n=r.length,i=0,o=Math.min(e,n);i<o;++i)if(t[i]!==r[i]){e=t[i],n=r[i];break}return e<n?-1:n<e?1:0},u$1$1.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return !0;default:return !1}},u$1$1.concat=function(t,r){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return u$1$1.alloc(0);var e;if(void 0===r)for(r=0,e=0;e<t.length;++e)r+=t[e].length;var n=u$1$1.allocUnsafe(r),i=0;for(e=0;e<t.length;++e){var o=t[e];if(F(o,Uint8Array)&&(o=u$1$1.from(o)),!u$1$1.isBuffer(o))throw new TypeError('\"list\" argument must be an Array of Buffers');o.copy(n,i),i+=o.length;}return n},u$1$1.byteLength=y,u$1$1.prototype._isBuffer=!0,u$1$1.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var r=0;r<t;r+=2)w(this,r,r+1);return this},u$1$1.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var r=0;r<t;r+=4)w(this,r,r+3),w(this,r+1,r+2);return this},u$1$1.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var r=0;r<t;r+=8)w(this,r,r+7),w(this,r+1,r+6),w(this,r+2,r+5),w(this,r+3,r+4);return this},u$1$1.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?I(this,0,t):g.apply(this,arguments)},u$1$1.prototype.toLocaleString=u$1$1.prototype.toString,u$1$1.prototype.equals=function(t){if(!u$1$1.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===u$1$1.compare(this,t)},u$1$1.prototype.inspect=function(){var t=\"\",r=e$1$1.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,r).replace(/(.{2})/g,\"$1 \").trim(),this.length>r&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},o$1$1&&(u$1$1.prototype[o$1$1]=u$1$1.prototype.inspect),u$1$1.prototype.compare=function(t,r,e,n,i){if(F(t,Uint8Array)&&(t=u$1$1.from(t,t.offset,t.byteLength)),!u$1$1.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&r>=e)return 0;if(n>=i)return -1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),f=(e>>>=0)-(r>>>=0),s=Math.min(o,f),h=this.slice(n,i),a=t.slice(r,e),p=0;p<s;++p)if(h[p]!==a[p]){o=h[p],f=a[p];break}return o<f?-1:f<o?1:0},u$1$1.prototype.includes=function(t,r,e){return -1!==this.indexOf(t,r,e)},u$1$1.prototype.indexOf=function(t,r,e){return d(this,t,r,e,!0)},u$1$1.prototype.lastIndexOf=function(t,r,e){return d(this,t,r,e,!1)},u$1$1.prototype.write=function(t,r,e,n){if(void 0===r)n=\"utf8\",e=this.length,r=0;else if(void 0===e&&\"string\"==typeof r)n=r,e=this.length,r=0;else {if(!isFinite(r))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");r>>>=0,isFinite(e)?(e>>>=0,void 0===n&&(n=\"utf8\")):(n=e,e=void 0);}var i=this.length-r;if((void 0===e||e>i)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return b(this,t,r,e);case\"utf8\":case\"utf-8\":return m(this,t,r,e);case\"ascii\":return E(this,t,r,e);case\"latin1\":case\"binary\":return B(this,t,r,e);case\"base64\":return A(this,t,r,e);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return U(this,t,r,e);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0;}},u$1$1.prototype.toJSON=function(){return {type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function S(t,r,e){var n=\"\";e=Math.min(t.length,e);for(var i=r;i<e;++i)n+=String.fromCharCode(127&t[i]);return n}function R(t,r,e){var n=\"\";e=Math.min(t.length,e);for(var i=r;i<e;++i)n+=String.fromCharCode(t[i]);return n}function O(t,r,e){var n=t.length;(!r||r<0)&&(r=0),(!e||e<0||e>n)&&(e=n);for(var i=\"\",o=r;o<e;++o)i+=Y[t[o]];return i}function L(t,r,e){for(var n=t.slice(r,e),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(t,r,e){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+r>e)throw new RangeError(\"Trying to access beyond buffer length\")}function C(t,r,e,n,i,o){if(!u$1$1.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>i||r<o)throw new RangeError('\"value\" argument is out of bounds');if(e+n>t.length)throw new RangeError(\"Index out of range\")}function P(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError(\"Index out of range\");if(e<0)throw new RangeError(\"Index out of range\")}function k(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,4),i$1.write(t,r,e,n,23,4),e+4}function M(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,8),i$1.write(t,r,e,n,52,8),e+8}u$1$1.prototype.slice=function(t,r){var e=this.length;(t=~~t)<0?(t+=e)<0&&(t=0):t>e&&(t=e),(r=void 0===r?e:~~r)<0?(r+=e)<0&&(r=0):r>e&&(r=e),r<t&&(r=t);var n=this.subarray(t,r);return Object.setPrototypeOf(n,u$1$1.prototype),n},u$1$1.prototype.readUIntLE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o<r&&(i*=256);)n+=this[t+o]*i;return n},u$1$1.prototype.readUIntBE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t+--r],i=1;r>0&&(i*=256);)n+=this[t+--r]*i;return n},u$1$1.prototype.readUInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),this[t]},u$1$1.prototype.readUInt16LE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]|this[t+1]<<8},u$1$1.prototype.readUInt16BE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]<<8|this[t+1]},u$1$1.prototype.readUInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u$1$1.prototype.readUInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u$1$1.prototype.readIntLE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o<r&&(i*=256);)n+=this[t+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*r)),n},u$1$1.prototype.readIntBE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},u$1$1.prototype.readInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u$1$1.prototype.readInt16LE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},u$1$1.prototype.readInt16BE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},u$1$1.prototype.readInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u$1$1.prototype.readInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u$1$1.prototype.readFloatLE=function(t,r){return t>>>=0,r||x(t,4,this.length),i$1.read(this,t,!0,23,4)},u$1$1.prototype.readFloatBE=function(t,r){return t>>>=0,r||x(t,4,this.length),i$1.read(this,t,!1,23,4)},u$1$1.prototype.readDoubleLE=function(t,r){return t>>>=0,r||x(t,8,this.length),i$1.read(this,t,!0,52,8)},u$1$1.prototype.readDoubleBE=function(t,r){return t>>>=0,r||x(t,8,this.length),i$1.read(this,t,!1,52,8)},u$1$1.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r>>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o<e&&(i*=256);)this[r+o]=t/i&255;return r+e},u$1$1.prototype.writeUIntBE=function(t,r,e,n){(t=+t,r>>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=e-1,o=1;for(this[r+i]=255&t;--i>=0&&(o*=256);)this[r+i]=t/o&255;return r+e},u$1$1.prototype.writeUInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,255,0),this[r]=255&t,r+1},u$1$1.prototype.writeUInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1$1.prototype.writeUInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1$1.prototype.writeUInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t,r+4},u$1$1.prototype.writeUInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1$1.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=0,f=1,u=0;for(this[r]=255&t;++o<e&&(f*=256);)t<0&&0===u&&0!==this[r+o-1]&&(u=1),this[r+o]=(t/f>>0)-u&255;return r+e},u$1$1.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=e-1,f=1,u=0;for(this[r+o]=255&t;--o>=0&&(f*=256);)t<0&&0===u&&0!==this[r+o+1]&&(u=1),this[r+o]=(t/f>>0)-u&255;return r+e},u$1$1.prototype.writeInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=255&t,r+1},u$1$1.prototype.writeInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1$1.prototype.writeInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1$1.prototype.writeInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4},u$1$1.prototype.writeInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1$1.prototype.writeFloatLE=function(t,r,e){return k(this,t,r,!0,e)},u$1$1.prototype.writeFloatBE=function(t,r,e){return k(this,t,r,!1,e)},u$1$1.prototype.writeDoubleLE=function(t,r,e){return M(this,t,r,!0,e)},u$1$1.prototype.writeDoubleBE=function(t,r,e){return M(this,t,r,!1,e)},u$1$1.prototype.copy=function(t,r,e,n){if(!u$1$1.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n<e&&(n=e),n===e)return 0;if(0===t.length||0===this.length)return 0;if(r<0)throw new RangeError(\"targetStart out of bounds\");if(e<0||e>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-r<n-e&&(n=t.length-r+e);var i=n-e;if(this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(r,e,n);else if(this===t&&e<r&&r<n)for(var o=i-1;o>=0;--o)t[o+r]=this[o+e];else Uint8Array.prototype.set.call(t,this.subarray(e,n),r);return i},u$1$1.prototype.fill=function(t,r,e,n){if(\"string\"==typeof t){if(\"string\"==typeof r?(n=r,r=0,e=this.length):\"string\"==typeof e&&(n=e,e=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!u$1$1.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i);}}else \"number\"==typeof t?t&=255:\"boolean\"==typeof t&&(t=Number(t));if(r<0||this.length<r||this.length<e)throw new RangeError(\"Out of range index\");if(e<=r)return this;var o;if(r>>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),\"number\"==typeof t)for(o=r;o<e;++o)this[o]=t;else {var f=u$1$1.isBuffer(t)?t:u$1$1.from(t,n),s=f.length;if(0===s)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(o=0;o<e-r;++o)this[o+r]=f[o%s];}return this};var j=/[^+/0-9A-Za-z-_]/g;function _(t,r){var e;r=r||1/0;for(var n=t.length,i=null,o=[],f=0;f<n;++f){if((e=t.charCodeAt(f))>55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320);}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e);}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128);}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128);}else {if(!(e<1114112))throw new Error(\"Invalid code point\");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128);}}return o}function z(t){return n$1$1.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(j,\"\")).length<2)return \"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function D(t,r,e,n){for(var i=0;i<n&&!(i+e>=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function F(t,r){return t instanceof r||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===r.name}function N(t){return t!=t}var Y=function(){for(var t=new Array(256),r=0;r<16;++r)for(var e=16*r,n=0;n<16;++n)t[e+n]=\"0123456789abcdef\"[r]+\"0123456789abcdef\"[n];return t}();e$1$1.Buffer;e$1$1.INSPECT_MAX_BYTES;e$1$1.kMaxLength;\n\nvar e={},n=e$1$1,o=n.Buffer;function t(r,e){for(var n in r)e[n]=r[n];}function f(r,e,n){return o(r,e,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e=n:(t(n,e),e.Buffer=f),f.prototype=Object.create(o.prototype),t(o,f),f.from=function(r,e,n){if(\"number\"==typeof r)throw new TypeError(\"Argument must not be a number\");return o(r,e,n)},f.alloc=function(r,e,n){if(\"number\"!=typeof r)throw new TypeError(\"Argument must be a number\");var t=o(r);return void 0!==e?\"string\"==typeof n?t.fill(e,n):t.fill(e):t.fill(0),t},f.allocUnsafe=function(r){if(\"number\"!=typeof r)throw new TypeError(\"Argument must be a number\");return o(r)},f.allocUnsafeSlow=function(r){if(\"number\"!=typeof r)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(r)};var u=e;var e$1={},s=u.Buffer,i=s.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return !0;default:return !1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return \"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return \"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return \"utf16le\";case\"latin1\":case\"binary\":return \"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0;}}(t);if(\"string\"!=typeof e&&(s.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=h,this.end=l,e=4;break;case\"utf8\":this.fillLast=n$1,e=4;break;case\"base64\":this.text=u$1,this.end=o$1,e=3;break;default:return this.write=f$1,this.end=c,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=s.allocUnsafe(e);}function r(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function n$1(t){var e=this.lastTotal-this.lastNeed,s=function(t,e,s){if(128!=(192&e[0]))return t.lastNeed=0,\"\uFFFD\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\uFFFD\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\uFFFD\"}}(this,t);return void 0!==s?s:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length,void 0)}function h(t,e){if((t.length-e)%2==0){var s=t.toString(\"utf16le\",e);if(s){var i=s.charCodeAt(s.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],s.slice(0,-1)}return s}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function l(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var s=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,s)}return e}function u$1(t,e){var s=(t.length-e)%3;return 0===s?t.toString(\"base64\",e):(this.lastNeed=3-s,this.lastTotal=3,1===s?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-s))}function o$1(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function f$1(t){return t.toString(this.encoding)}function c(t){return t&&t.length?this.write(t):\"\"}e$1.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return \"\";var e,s;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return \"\";s=this.lastNeed,this.lastNeed=0;}else s=0;return s<t.length?e?e+this.text(t,s):this.text(t,s):e||\"\"},a.prototype.end=function(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\uFFFD\":e},a.prototype.text=function(t,e){var s=function(t,e,s){var i=e.length-1;if(i<s)return 0;var a=r(e[i]);if(a>=0)return a>0&&(t.lastNeed=a-1),a;if(--i<s||-2===a)return 0;if((a=r(e[i]))>=0)return a>0&&(t.lastNeed=a-2),a;if(--i<s||-2===a)return 0;if((a=r(e[i]))>=0)return a>0&&(2===a?a=0:t.lastNeed=a-3),a;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=s;var i=t.length-(s-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString(\"utf8\",e,i)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length;};\n\ne$1.StringDecoder;\n\ne$1.StringDecoder;\n\nexport { e$1 as a, e$1$1 as e, u };\n", "import './chunk-ce0fbc82.js';\nimport { X } from './chunk-b4205b57.js';\nexport { X as default } from './chunk-b4205b57.js';\nimport './chunk-5decc758.js';\n\nvar _extend = X._extend;\r\nvar callbackify = X.callbackify;\r\nvar debuglog = X.debuglog;\r\nvar deprecate = X.deprecate;\r\nvar format = X.format;\r\nvar inherits = X.inherits;\r\nvar inspect = X.inspect;\r\nvar isArray = X.isArray;\r\nvar isBoolean = X.isBoolean;\r\nvar isBuffer = X.isBuffer;\r\nvar isDate = X.isDate;\r\nvar isError = X.isError;\r\nvar isFunction = X.isFunction;\r\nvar isNull = X.isNull;\r\nvar isNullOrUndefined = X.isNullOrUndefined;\r\nvar isNumber = X.isNumber;\r\nvar isObject = X.isObject;\r\nvar isPrimitive = X.isPrimitive;\r\nvar isRegExp = X.isRegExp;\r\nvar isString = X.isString;\r\nvar isSymbol = X.isSymbol;\r\nvar isUndefined = X.isUndefined;\r\nvar log = X.log;\r\nvar promisify = X.promisify;\r\nvar types = X.types;\r\n\r\nconst TextEncoder = X.TextEncoder = globalThis.TextEncoder;\r\nconst TextDecoder = X.TextDecoder = globalThis.TextDecoder;\n\nexport { TextDecoder, TextEncoder, _extend, callbackify, debuglog, deprecate, format, inherits, inspect, isArray, isBoolean, isBuffer, isDate, isError, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isUndefined, log, promisify, types };\n", "import varint from 'varint'\nimport { Token, Type } from 'cborg'\nimport { tokensToLength } from 'cborg/length'\nimport * as CBOR from '@ipld/dag-cbor'\n\n/**\n * @typedef {import('./api').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').CarBufferWriter} Writer\n * @typedef {import('./api').CarBufferWriterOptions} Options\n * @typedef {import('./coding').CarEncoder} CarEncoder\n */\n\n/**\n * A simple CAR writer that writes to a pre-allocated buffer.\n *\n * @class\n * @name CarBufferWriter\n * @implements {Writer}\n */\nclass CarBufferWriter {\n /**\n * @param {Uint8Array} bytes\n * @param {number} headerSize\n */\n constructor (bytes, headerSize) {\n /** @readonly */\n this.bytes = bytes\n this.byteOffset = headerSize\n\n /**\n * @readonly\n * @type {CID[]}\n */\n this.roots = []\n this.headerSize = headerSize\n }\n\n /**\n * Add a root to this writer, to be used to create a header when the CAR is\n * finalized with {@link CarBufferWriter.close `close()`}\n *\n * @param {CID} root\n * @param {{resize?:boolean}} [options]\n * @returns {CarBufferWriter}\n */\n addRoot (root, options) {\n addRoot(this, root, options)\n return this\n }\n\n /**\n * Write a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) to the archive.\n * Throws if there is not enough capacity.\n *\n * @param {Block} block - A `{ cid:CID, bytes:Uint8Array }` pair.\n * @returns {CarBufferWriter}\n */\n write (block) {\n addBlock(this, block)\n return this\n }\n\n /**\n * Finalize the CAR and return it as a `Uint8Array`.\n *\n * @param {object} [options]\n * @param {boolean} [options.resize]\n * @returns {Uint8Array}\n */\n close (options) {\n return close(this, options)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {CID} root\n * @param {{resize?:boolean}} [options]\n */\nexport const addRoot = (writer, root, options = {}) => {\n const { resize = false } = options\n const { bytes, headerSize, byteOffset, roots } = writer\n writer.roots.push(root)\n const size = headerLength(writer)\n // If there is not enough space for the new root\n if (size > headerSize) {\n // Check if we root would fit if we were to resize the head.\n if (size - headerSize + byteOffset < bytes.byteLength) {\n // If resize is enabled resize head\n if (resize) {\n resizeHeader(writer, size)\n // otherwise remove head and throw an error suggesting to resize\n } else {\n roots.pop()\n throw new RangeError(`Header of size ${headerSize} has no capacity for new root ${root}.\n However there is a space in the buffer and you could call addRoot(root, { resize: root }) to resize header to make a space for this root.`)\n }\n // If head would not fit even with resize pop new root and throw error\n } else {\n roots.pop()\n throw new RangeError(`Buffer has no capacity for a new root ${root}`)\n }\n }\n}\n\n/**\n * Calculates number of bytes required for storing given block in CAR. Useful in\n * estimating size of an `ArrayBuffer` for the `CarBufferWriter`.\n *\n * @name CarBufferWriter.blockLength(Block)\n * @param {Block} block\n * @returns {number}\n */\nexport const blockLength = ({ cid, bytes }) => {\n const size = cid.bytes.byteLength + bytes.byteLength\n return varint.encodingLength(size) + size\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {Block} block\n */\nexport const addBlock = (writer, { cid, bytes }) => {\n const byteLength = cid.bytes.byteLength + bytes.byteLength\n const size = varint.encode(byteLength)\n if (writer.byteOffset + size.length + byteLength > writer.bytes.byteLength) {\n throw new RangeError('Buffer has no capacity for this block')\n } else {\n writeBytes(writer, size)\n writeBytes(writer, cid.bytes)\n writeBytes(writer, bytes)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {object} [options]\n * @param {boolean} [options.resize]\n */\nexport const close = (writer, options = {}) => {\n const { resize = false } = options\n const { roots, bytes, byteOffset, headerSize } = writer\n\n const headerBytes = CBOR.encode({ version: 1, roots })\n const varintBytes = varint.encode(headerBytes.length)\n\n const size = varintBytes.length + headerBytes.byteLength\n const offset = headerSize - size\n\n // If header size estimate was accurate we just write header and return\n // view into buffer.\n if (offset === 0) {\n writeHeader(writer, varintBytes, headerBytes)\n return bytes.subarray(0, byteOffset)\n // If header was overestimated and `{resize: true}` is passed resize header\n } else if (resize) {\n resizeHeader(writer, size)\n writeHeader(writer, varintBytes, headerBytes)\n return bytes.subarray(0, writer.byteOffset)\n } else {\n throw new RangeError(`Header size was overestimated.\nYou can use close({ resize: true }) to resize header`)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {number} byteLength\n */\nexport const resizeHeader = (writer, byteLength) => {\n const { bytes, headerSize } = writer\n // Move data section to a new offset\n bytes.set(bytes.subarray(headerSize, writer.byteOffset), byteLength)\n // Update header size & byteOffset\n writer.byteOffset += byteLength - headerSize\n writer.headerSize = byteLength\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {number[]|Uint8Array} bytes\n */\n\nconst writeBytes = (writer, bytes) => {\n writer.bytes.set(bytes, writer.byteOffset)\n writer.byteOffset += bytes.length\n}\n/**\n * @param {{bytes:Uint8Array}} writer\n * @param {number[]} varint\n * @param {Uint8Array} header\n */\nconst writeHeader = ({ bytes }, varint, header) => {\n bytes.set(varint)\n bytes.set(header, varint.length)\n}\n\nconst headerPreludeTokens = [\n new Token(Type.map, 2),\n new Token(Type.string, 'version'),\n new Token(Type.uint, 1),\n new Token(Type.string, 'roots')\n]\n\nconst CID_TAG = new Token(Type.tag, 42)\n\n/**\n * Calculates header size given the array of byteLength for roots.\n *\n * @name CarBufferWriter.calculateHeaderLength(rootLengths)\n * @param {number[]} rootLengths\n * @returns {number}\n */\nexport const calculateHeaderLength = (rootLengths) => {\n const tokens = [...headerPreludeTokens]\n tokens.push(new Token(Type.array, rootLengths.length))\n for (const rootLength of rootLengths) {\n tokens.push(CID_TAG)\n tokens.push(new Token(Type.bytes, { length: rootLength + 1 }))\n }\n const length = tokensToLength(tokens) // no options needed here because we have simple tokens\n return varint.encodingLength(length) + length\n}\n\n/**\n * Calculates header size given the array of roots.\n *\n * @name CarBufferWriter.headerLength({ roots })\n * @param {object} options\n * @param {CID[]} options.roots\n * @returns {number}\n */\nexport const headerLength = ({ roots }) =>\n calculateHeaderLength(roots.map(cid => cid.bytes.byteLength))\n\n/**\n * Estimates header size given a count of the roots and the expected byte length\n * of the root CIDs. The default length works for a standard CIDv1 with a\n * single-byte multihash code, such as SHA2-256 (i.e. the most common CIDv1).\n *\n * @name CarBufferWriter.estimateHeaderLength(rootCount[, rootByteLength])\n * @param {number} rootCount\n * @param {number} [rootByteLength]\n * @returns {number}\n */\nexport const estimateHeaderLength = (rootCount, rootByteLength = 36) =>\n calculateHeaderLength(new Array(rootCount).fill(rootByteLength))\n\n/**\n * Creates synchronous CAR writer that can be used to encode blocks into a given\n * buffer. Optionally you could pass `byteOffset` and `byteLength` to specify a\n * range inside buffer to write into. If car file is going to have `roots` you\n * need to either pass them under `options.roots` (from which header size will\n * be calculated) or provide `options.headerSize` to allocate required space\n * in the buffer. You may also provide known `roots` and `headerSize` to\n * allocate space for the roots that may not be known ahead of time.\n *\n * Note: Incorrect `headerSize` may lead to copying bytes inside a buffer\n * which will have a negative impact on performance.\n *\n * @name CarBufferWriter.createWriter(buffer[, options])\n * @param {ArrayBuffer} buffer\n * @param {object} [options]\n * @param {CID[]} [options.roots]\n * @param {number} [options.byteOffset]\n * @param {number} [options.byteLength]\n * @param {number} [options.headerSize]\n * @returns {CarBufferWriter}\n */\nexport const createWriter = (buffer, options = {}) => {\n const {\n roots = [],\n byteOffset = 0,\n byteLength = buffer.byteLength,\n headerSize = headerLength({ roots })\n } = options\n const bytes = new Uint8Array(buffer, byteOffset, byteLength)\n\n const writer = new CarBufferWriter(bytes, headerSize)\n for (const root of roots) {\n writer.addRoot(root)\n }\n\n return writer\n}\n", "import { encode } from './lib/encode.js';\nimport { decode } from './lib/decode.js';\nimport {\n Token,\n Type\n} from './lib/token.js';\nexport {\n decode,\n encode,\n Token,\n Type\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};", "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};", "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}", "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}", "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 * 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 {\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 { 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 {\n makeCborEncoders,\n objectToTokens\n} from './encode.js';\nimport { quickEncodeToken } from './jump.js';\nconst cborEncoders = makeCborEncoders();\nconst defaultEncodeOptions = {\n float64: false,\n quickEncodeToken\n};\nexport function encodedLength(data, options) {\n options = Object.assign({}, defaultEncodeOptions, options);\n options.mapSorter = undefined;\n const tokens = objectToTokens(data, options);\n return tokensToLength(tokens, cborEncoders, options);\n}\nexport function tokensToLength(tokens, encoders = cborEncoders, options = defaultEncodeOptions) {\n if (Array.isArray(tokens)) {\n let len = 0;\n for (const token of tokens) {\n len += tokensToLength(token, encoders, options);\n }\n return len;\n } else {\n const encoder = encoders[tokens.type.major];\n if (encoder.encodedSize === undefined || typeof encoder.encodedSize !== 'function') {\n throw new Error(`Encoder for ${ tokens.type.name } does not have an encodedSize()`);\n }\n return encoder.encodedSize(tokens, options);\n }\n}", "import { openDB, IDBPDatabase } from 'idb'\n\nimport { AnyBlock, AnyLink } from './types'\nimport { CarStore, HeaderStore, StoredHeader } from './store'\n\nexport const FORMAT = '0.9'\n\nexport class CarStoreIDB extends CarStore {\n keyId: string = 'public'\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n idb: IDBPDatabase<unknown> | null = null\n name: string = 'default'\n async withDB(dbWorkFun: (arg0: any) => any) {\n if (!this.idb) {\n const dbName = `fp.${FORMAT}.${this.keyId}.${this.name}.valet`\n const options = {\n upgrade(db: IDBDatabase) {\n db.createObjectStore('cars')\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n this.idb = await openDB(dbName, 0, options)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return await dbWorkFun(this.idb)\n }\n\n async load(cid: AnyLink): Promise<AnyBlock> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return await this.withDB(async (db: IDBPDatabase<unknown>) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const tx = db.transaction(['cars'], 'readonly')\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const bytes = (await tx.objectStore('cars').get(cid.toString())) as Uint8Array\n if (!bytes) throw new Error(`missing block ${cid.toString()}`)\n return { cid, bytes }\n })\n }\n\n async save(car: AnyBlock): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return await this.withDB(async (db: IDBPDatabase<unknown>) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const tx = db.transaction(['cars'], 'readwrite')\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n await tx.objectStore('cars').put(car.bytes, car.cid.toString())\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return await tx.done\n })\n }\n}\n\nexport class HeaderStoreLS extends HeaderStore {\n keyId: string = 'public'\n name: string = 'default'\n\n headerKey(branch: string) {\n return `fp.${FORMAT}.${this.keyId}.${this.name}.${branch}`\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async load(branch: string = 'main'): Promise<StoredHeader | null> {\n // try {\n const bytes = localStorage.getItem(this.headerKey(branch))\n return bytes ? this.parseHeader(bytes.toString()) : null\n // } catch (e) {}\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async save(carCid: AnyLink, branch: string = 'main') {\n // try {\n const headerKey = this.headerKey(branch)\n return localStorage.setItem(headerKey, this.makeHeader(carCid))\n // } catch (e) {}\n }\n}\n", "import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n", "const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n", "import { parse } from 'multiformats/link'\nimport { AnyLink } from './types'\n\nexport class StoredHeader {\n car: AnyLink\n constructor(jsonHeader: { car: string }) {\n this.car = parse(jsonHeader.car)\n }\n}\n\nexport class HeaderStore {\n name: string\n constructor(name: string) {\n this.name = name\n }\n\n makeHeader(car: AnyLink): string {\n return JSON.stringify({ car: car.toString() })\n }\n\n parseHeader(headerData: string) {\n const header = JSON.parse(headerData) as { car: string }\n return new StoredHeader(header)\n }\n}\n\nexport class CarStore {\n name: string\n constructor(name: string) {\n this.name = name\n }\n}\n", "// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport { CID, format, toJSON, fromJSON } from './cid.js'\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\nconst DAG_PB_CODE = 0x70\n// eslint-disable-next-line\nconst SHA_256_CODE = 0x12\n\n/**\n * Simplified version of `create` for CIDv0.\n *\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {API.LegacyLink}\n */\nexport const createLegacy = digest => CID.create(0, DAG_PB_CODE, digest)\n\n/**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {API.Link<Data, Code, Alg>}\n */\nexport const create = (code, digest) => CID.create(1, code, digest)\n\n/**\n * Type predicate returns true if value is the link.\n *\n * @template {API.Link<unknown, number, number, 0|1>} L\n * @param {unknown|L} value\n * @returns {value is L & CID}\n */\nexport const isLink = value => {\n if (value == null) {\n return false\n }\n\n const withSlash = /** @type {{'/'?: Uint8Array, bytes: Uint8Array}} */ (value)\n\n if (withSlash['/'] != null && withSlash['/'] === withSlash.bytes) {\n return true\n }\n\n const withAsCID = /** @type {{'asCID'?: unknown}} */ (value)\n\n if (withAsCID.asCID === value) {\n return true\n }\n\n return false\n}\n\n/**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {API.Link<Data, Code, Alg, Ver>}\n */\nexport const parse = (source, base) => CID.parse(source, base)\n\nexport { format, toJSON, fromJSON }\n\n/**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {API.Link<Data, Code, Alg, Ver>}\n */\nexport const decode = bytes => CID.decode(bytes)\n", "import { BlockView, CID } from 'multiformats'\nimport { Block, encode, decode } from 'multiformats/block'\nimport { sha256 as hasher } from 'multiformats/hashes/sha2'\nimport * as raw from 'multiformats/codecs/raw'\nimport * as CBW from '@ipld/car/buffer-writer'\nimport * as codec from '@ipld/dag-cbor'\nimport { CarReader } from '@ipld/car'\n\nimport { Transaction } from './transaction'\nimport { AnyBlock, BulkResult, ClockHead, AnyLink } from './types'\n\nexport async function makeCarFile(\n t: Transaction,\n { head }: BulkResult,\n cars: AnyLink[]\n): Promise<BlockView<unknown, number, number, 1>> {\n if (!head) throw new Error('no head')\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const fpCarHeaderBlock = (await encode({\n value: { fp: { head, cars } },\n hasher,\n codec\n })) as AnyBlock\n await t.put(fpCarHeaderBlock.cid, fpCarHeaderBlock.bytes)\n\n let size = 0\n const headerSize = CBW.headerLength({ roots: [fpCarHeaderBlock.cid as CID<unknown, number, number, 1>] })\n size += headerSize\n for (const { cid, bytes } of t.entries()) {\n size += CBW.blockLength({ cid, bytes } as Block<unknown, number, number, 1>)\n }\n const buffer = new Uint8Array(size)\n const writer = CBW.createWriter(buffer, { headerSize })\n\n writer.addRoot(fpCarHeaderBlock.cid as CID<unknown, number, number, 1>)\n\n for (const { cid, bytes } of t.entries()) {\n writer.write({ cid, bytes } as Block<unknown, number, number, 1>)\n }\n writer.close()\n return await encode({ value: writer.bytes, hasher, codec: raw })\n}\n\nexport async function parseCarFile(reader: CarReader): Promise<{ head: ClockHead; cars: AnyLink[] }> {\n const roots = await reader.getRoots()\n const header = await reader.get(roots[0])\n if (!header) throw new Error('missing header block')\n const got = await decode({ bytes: header.bytes, hasher, codec })\n const {\n fp: { head, cars }\n } = got.value as { fp: { head: ClockHead; cars: AnyLink[] } }\n return { head, cars }\n}\n", "import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n const cid = CID.asCID(element)\n if (cid) {\n yield [elementPath.join('/'), cid]\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 [path.join('/'), cid]\n } else {\n yield * links(value, path)\n }\n }\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n if (source == null || source instanceof Uint8Array) {\n return\n }\n const cid = CID.asCID(source)\n if (cid) {\n yield [base.join('/'), cid]\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield * linksWithin(path, value)\n }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<string>}\n */\nfunction * treeWithin (path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\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/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<string>}\n */\nfunction * tree (source, base) {\n if (source == null || typeof source !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield path.join('/')\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n yield * treeWithin(path, value)\n }\n }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView<unknown>}\n */\nfunction get (source, path) {\n let node = /** @type {Record<string, any>} */(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 { value: cid, remaining: path.slice(index + 1).join('/') }\n }\n }\n return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView<T, C, A, V>}\n */\nclass Block {\n /**\n * @param {object} options\n * @param {CID<T, C, A, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {T} options.value\n */\n constructor ({ cid, bytes, value }) {\n if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n this.cid = cid\n this.bytes = bytes\n this.value = value\n this.asBlock = this\n\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n })\n }\n\n links () {\n return links(this.value, [])\n }\n\n tree () {\n return tree(this.value, [])\n }\n\n /**\n *\n * @param {string} [path]\n * @returns {API.BlockCursorView<unknown>}\n */\n get (path = '/') {\n return get(this.value, path.split('/').filter(Boolean))\n }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function encode ({ value, codec, hasher }) {\n if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const bytes = codec.encode(value)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(\n 1,\n codec.code,\n hash\n )\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(1, codec.code, hash)\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link<T, Code, Alg, V>, value:T, codec?: API.BlockDecoder<Code, T>, bytes: API.ByteView<T> }|{cid:API.Link<T, Code, Alg, V>, bytes:API.ByteView<T>, value?:void, codec:API.BlockDecoder<Code, T>}} options\n * @returns {API.BlockView<T, Code, Alg, V>}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec && codec.decode(bytes))\n\n if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n return new Block({\n // eslint-disable-next-line object-shorthand\n cid: /** @type {CID<T, Code, Alg, V>} */ (cid),\n bytes,\n value\n })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link<T, Code, Alg, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg, V>>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!hasher) 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\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n", "import { CID } from './cid.js'\nimport * as varint from './varint.js'\nimport * as bytes from './bytes.js'\nimport * as hasher from './hashes/hasher.js'\nimport * as digest from './hashes/digest.js'\n// This way TS will also expose all the types from module\nexport * from './interface.js'\n\nexport { CID, hasher, digest, varint, bytes }\n", "import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await<Uint8Array>} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher<Code>}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await<Uint8Array>} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await<Digest.Digest<Code, number>>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise<T>|T} Await\n */\n", "// this is dummy module overlayed by interface.ts\n", "/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n", "// @ts-check\n\nimport { coerce } from '../bytes.js'\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nexport const name = 'raw'\nexport const code = 0x55\n\n/**\n * @param {Uint8Array} node\n * @returns {ByteView<Uint8Array>}\n */\nexport const encode = (node) => coerce(node)\n\n/**\n * @param {ByteView<Uint8Array>} data\n * @returns {Uint8Array}\n */\nexport const decode = (data) => coerce(data)\n", "import { Link } from 'multiformats'\nimport { create, encode, decode } from 'multiformats/block'\nimport { sha256 as hasher } from 'multiformats/hashes/sha2'\nimport * as codec from '@ipld/dag-cbor'\nimport { put, get, EventData } from '@alanshaw/pail/crdt'\nimport { EventFetcher } from '@alanshaw/pail/clock'\n\nimport { TransactionBlockstore as Blockstore, Transaction } from './transaction'\nimport { DocUpdate, ClockHead, BlockFetcher, AnyLink, DocValue, BulkResult } from './types'\n\nexport function makeGetBlock(blocks: BlockFetcher) {\n return async (address: Link) => {\n const block = await blocks.get(address)\n if (!block) throw new Error(`Missing block ${address.toString()}`)\n const { cid, bytes } = block\n return create({ cid, bytes, hasher, codec })\n }\n}\n\nexport async function applyBulkUpdateToCrdt(\n tblocks: Transaction,\n head: ClockHead,\n updates: DocUpdate[],\n options?: object\n): Promise<BulkResult> {\n for (const update of updates) {\n const link = await makeLinkForDoc(tblocks, update)\n const result = await put(tblocks, head, update.key, link, options)\n for (const { cid, bytes } of [...result.additions, ...result.removals, result.event]) {\n tblocks.putSync(cid, bytes)\n }\n head = result.head\n }\n return { head }\n}\n\nasync function makeLinkForDoc(blocks: Transaction, update: DocUpdate): Promise<AnyLink> {\n let value: DocValue\n if (update.del) {\n value = { del: true }\n } else {\n value = { doc: update.value }\n }\n const block = await encode({ value, hasher, codec })\n blocks.putSync(block.cid, block.bytes)\n return block.cid\n}\n\nexport async function getValueFromCrdt(blocks: Blockstore, head: ClockHead, key: string): Promise<DocValue> {\n const link = await get(blocks, head, key)\n if (!link) throw new Error(`Missing key ${key}`)\n return await getValueFromLink(blocks, link)\n}\n\nexport async function getValueFromLink(blocks: Blockstore, link: AnyLink): Promise<DocValue> {\n const block = await blocks.get(link)\n if (!block) throw new Error(`Missing block ${link.toString()}`)\n const { value } = (await decode({ bytes: block.bytes, hasher, codec })) as { value: DocValue }\n return value\n}\n\nexport async function clockChangesSince(\n blocks: Blockstore,\n _head: ClockHead,\n _since: ClockHead\n): Promise<{ result: DocUpdate[] }> {\n const eventsFetcher = new EventFetcher<EventData>(blocks)\n const updates = await gatherUpdates(blocks, eventsFetcher, _head, _since)\n return { result: updates.reverse() }\n}\n\nasync function gatherUpdates(blocks: Blockstore, eventsFetcher: EventFetcher<EventData>, head: ClockHead, since: ClockHead, updates: DocUpdate[] = []): Promise<DocUpdate[]> {\n for (const link of since) {\n if (head.includes(link)) {\n throw new Error('found since in head, this is good, remove this error ' + updates.length)\n return updates\n }\n }\n for (const link of head) {\n const { value: event } = await eventsFetcher.get(link)\n const { key, value } = event.data\n const docValue = await getValueFromLink(blocks, value)\n updates.push({ key, value: docValue.doc, del: docValue.del })\n if (event.parents) {\n updates = await gatherUpdates(blocks, eventsFetcher, event.parents, since, updates)\n }\n }\n return updates\n}\n", "import * as Clock from './clock.js'\nimport { EventFetcher, EventBlock } from './clock.js'\nimport * as Pail from './index.js'\nimport { ShardBlock } from './index.js'\nimport { MemoryBlockstore, MultiBlockFetcher } from './block.js'\n\n/**\n * @typedef {{\n * type: 'put'|'del'\n * key: string\n * value: import('./link').AnyLink\n * root: import('./shard').ShardLink\n * }} EventData\n * @typedef {{\n * root: import('./shard').ShardLink\n * head: import('./clock').EventLink<EventData>[]\n * event: import('./clock').EventBlockView<EventData>\n * } & import('./index').ShardDiff} Result\n */\n\n/**\n * Put a value (a CID) for the given key. If the key exists it's value is\n * overwritten.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./clock').EventLink<EventData>[]} head Merkle clock head.\n * @param {string} key The key of the value to put.\n * @param {import('./link').AnyLink} value The value to put.\n * @param {object} [options]\n * @returns {Promise<Result>}\n */\nexport async function put (blocks, head, key, value, options) {\n const mblocks = new MemoryBlockstore()\n blocks = new MultiBlockFetcher(mblocks, blocks)\n\n if (!head.length) {\n const shard = await ShardBlock.create()\n mblocks.putSync(shard.cid, shard.bytes)\n const result = await Pail.put(blocks, shard.cid, key, value, options)\n /** @type {EventData} */\n const data = { type: 'put', root: result.root, key, value }\n const event = await EventBlock.create(data, head)\n head = await Clock.advance(blocks, head, event.cid)\n return {\n root: result.root,\n additions: [shard, ...result.additions],\n removals: result.removals,\n head,\n event\n }\n }\n\n const events = new EventFetcher(blocks)\n const ancestor = await findCommonAncestor(events, head)\n if (!ancestor) throw new Error('failed to find common ancestor event')\n\n const aevent = await events.get(ancestor)\n let { root } = aevent.value.data\n\n const sorted = await findSortedEvents(events, head, ancestor)\n /** @type {Map<string, import('./shard').ShardBlockView>} */\n const additions = new Map()\n /** @type {Map<string, import('./shard').ShardBlockView>} */\n const removals = new Map()\n\n for (const { value: event } of sorted) {\n if (!['put', 'del'].includes(event.data.type)) {\n throw new Error(`unknown event type: ${event.data.type}`)\n }\n const result = event.data.type === 'put'\n ? await Pail.put(blocks, root, event.data.key, event.data.value)\n : await Pail.del(blocks, root, event.data.key)\n\n root = result.root\n for (const a of result.additions) {\n mblocks.putSync(a.cid, a.bytes)\n additions.set(a.cid.toString(), a)\n }\n for (const r of result.removals) {\n removals.set(r.cid.toString(), r)\n }\n }\n\n const result = await Pail.put(blocks, root, key, value, options)\n for (const a of result.additions) {\n mblocks.putSync(a.cid, a.bytes)\n additions.set(a.cid.toString(), a)\n }\n for (const r of result.removals) {\n removals.set(r.cid.toString(), r)\n }\n\n /** @type {EventData} */\n const data = { type: 'put', root: result.root, key, value }\n const event = await EventBlock.create(data, head)\n mblocks.putSync(event.cid, event.bytes)\n head = await Clock.advance(blocks, head, event.cid)\n\n // filter blocks that were added _and_ removed\n for (const k of removals.keys()) {\n if (additions.has(k)) {\n additions.delete(k)\n removals.delete(k)\n }\n }\n\n return {\n root: result.root,\n additions: [...additions.values()],\n removals: [...removals.values()],\n head,\n event\n }\n}\n\n/**\n * Delete the value for the given key from the bucket. If the key is not found\n * no operation occurs.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./clock').EventLink<EventData>[]} head Merkle clock head.\n * @param {string} key The key of the value to delete.\n * @param {object} [options]\n * @returns {Promise<Result>}\n */\nexport async function del (blocks, head, key, options) {\n throw new Error('not implemented')\n}\n\n/**\n * Determine the effective pail root given the current merkle clock head.\n *\n * Clocks with multiple head events may return blocks that were added or\n * removed while playing forward events from their common ancestor.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./clock').EventLink<EventData>[]} head Merkle clock head.\n * @returns {Promise<{ root: import('./shard').ShardLink } & import('./index').ShardDiff>}\n */\nexport async function root (blocks, head) {\n if (!head.length) throw new Error('cannot determine root of headless clock')\n\n const mblocks = new MemoryBlockstore()\n blocks = new MultiBlockFetcher(mblocks, blocks)\n\n /** @type {EventFetcher<EventData>} */\n const events = new EventFetcher(blocks)\n\n if (head.length === 1) {\n const event = await events.get(head[0])\n const { root } = event.value.data\n return { root, additions: [], removals: [] }\n }\n\n const ancestor = await findCommonAncestor(events, head)\n if (!ancestor) throw new Error('failed to find common ancestor event')\n\n const aevent = await events.get(ancestor)\n let { root } = aevent.value.data\n\n const sorted = await findSortedEvents(events, head, ancestor)\n /** @type {Map<string, import('./shard').ShardBlockView>} */\n const additions = new Map()\n /** @type {Map<string, import('./shard').ShardBlockView>} */\n const removals = new Map()\n\n for (const { value: event } of sorted) {\n if (!['put', 'del'].includes(event.data.type)) {\n throw new Error(`unknown event type: ${event.data.type}`)\n }\n const result = event.data.type === 'put'\n ? await Pail.put(blocks, root, event.data.key, event.data.value)\n : await Pail.del(blocks, root, event.data.key)\n\n root = result.root\n for (const a of result.additions) {\n mblocks.putSync(a.cid, a.bytes)\n additions.set(a.cid.toString(), a)\n }\n for (const r of result.removals) {\n removals.set(r.cid.toString(), r)\n }\n }\n\n // filter blocks that were added _and_ removed\n for (const k of removals.keys()) {\n if (additions.has(k)) {\n additions.delete(k)\n removals.delete(k)\n }\n }\n\n return {\n root,\n additions: [...additions.values()],\n removals: [...removals.values()]\n }\n}\n\n/**\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./clock').EventLink<EventData>[]} head Merkle clock head.\n * @param {string} key The key of the value to retrieve.\n */\nexport async function get (blocks, head, key) {\n if (!head.length) return\n const result = await root(blocks, head)\n if (result.additions.length) {\n blocks = new MultiBlockFetcher(new MemoryBlockstore(result.additions), blocks)\n }\n return Pail.get(blocks, result.root, key)\n}\n\n/**\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./clock').EventLink<EventData>[]} head Merkle clock head.\n * @param {object} [options]\n * @param {string} [options.prefix]\n */\nexport async function * entries (blocks, head, options) {\n if (!head.length) return\n const result = await root(blocks, head)\n if (result.additions.length) {\n blocks = new MultiBlockFetcher(new MemoryBlockstore(result.additions), blocks)\n }\n yield * Pail.entries(blocks, result.root, options)\n}\n\n/**\n * Find the common ancestor event of the passed children. A common ancestor is\n * the first single event in the DAG that _all_ paths from children lead to.\n *\n * @param {import('./clock').EventFetcher<EventData>} events\n * @param {import('./clock').EventLink<EventData>[]} children\n */\nasync function findCommonAncestor (events, children) {\n if (!children.length) return\n const candidates = children.map(c => [c])\n while (true) {\n let changed = false\n for (const c of candidates) {\n const candidate = await findAncestorCandidate(events, c[c.length - 1])\n if (!candidate) continue\n changed = true\n c.push(candidate)\n const ancestor = findCommonString(candidates)\n if (ancestor) return ancestor\n }\n if (!changed) return\n }\n}\n\n/**\n * @param {import('./clock').EventFetcher<EventData>} events\n * @param {import('./clock').EventLink<EventData>} root\n */\nasync function findAncestorCandidate (events, root) {\n const { value: event } = await events.get(root)\n if (!event.parents.length) return root\n return event.parents.length === 1\n ? event.parents[0]\n : findCommonAncestor(events, event.parents)\n}\n\n/**\n * @template {{ toString: () => string }} T\n * @param {Array<T[]>} arrays\n */\nfunction findCommonString (arrays) {\n arrays = arrays.map(a => [...a])\n for (const arr of arrays) {\n for (const item of arr) {\n let matched = true\n for (const other of arrays) {\n if (arr === other) continue\n matched = other.some(i => String(i) === String(item))\n if (!matched) break\n }\n if (matched) return item\n }\n }\n}\n\n/**\n * Find and sort events between the head(s) and the tail.\n * @param {import('./clock').EventFetcher<EventData>} events\n * @param {import('./clock').EventLink<EventData>[]} head\n * @param {import('./clock').EventLink<EventData>} tail\n */\nasync function findSortedEvents (events, head, tail) {\n // get weighted events - heavier events happened first\n /** @type {Map<string, { event: import('./clock').EventBlockView<EventData>, weight: number }>} */\n const weights = new Map()\n const all = await Promise.all(head.map(h => findEvents(events, h, tail)))\n for (const arr of all) {\n for (const { event, depth } of arr) {\n const info = weights.get(event.cid.toString())\n if (info) {\n info.weight += depth\n } else {\n weights.set(event.cid.toString(), { event, weight: depth })\n }\n }\n }\n\n // group events into buckets by weight\n /** @type {Map<number, import('./clock').EventBlockView<EventData>[]>} */\n const buckets = new Map()\n for (const { event, weight } of weights.values()) {\n const bucket = buckets.get(weight)\n if (bucket) {\n bucket.push(event)\n } else {\n buckets.set(weight, [event])\n }\n }\n\n // sort by weight, and by CID within weight\n return Array.from(buckets)\n .sort((a, b) => b[0] - a[0])\n .flatMap(([, es]) => es.sort((a, b) => String(a.cid) < String(b.cid) ? -1 : 1))\n}\n\n/**\n * @param {import('./clock').EventFetcher<EventData>} events\n * @param {import('./clock').EventLink<EventData>} start\n * @param {import('./clock').EventLink<EventData>} end\n * @returns {Promise<Array<{ event: import('./clock').EventBlockView<EventData>, depth: number }>>}\n */\nasync function findEvents (events, start, end, depth = 0) {\n const event = await events.get(start)\n const acc = [{ event, depth }]\n const { parents } = event.value\n if (parents.length === 1 && String(parents[0]) === String(end)) return acc\n const rest = await Promise.all(parents.map(p => findEvents(events, p, end, depth + 1)))\n return acc.concat(...rest)\n}\n", "import { Block, encode, decode } from 'multiformats/block'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport * as cbor from '@ipld/dag-cbor'\n\n/**\n * @template T\n * @typedef {{ parents: EventLink<T>[], data: T }} EventView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats').BlockView<EventView<T>>} EventBlockView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats').Link<EventView<T>>} EventLink\n */\n\n/**\n * Advance the clock by adding an event.\n *\n * @template T\n * @param {import('./block').BlockFetcher} blocks Block storage.\n * @param {EventLink<T>[]} head The head of the clock.\n * @param {EventLink<T>} event The event to add.\n */\nexport async function advance (blocks, head, event) {\n const events = new EventFetcher(blocks)\n const headmap = new Map(head.map(cid => [cid.toString(), cid]))\n if (headmap.has(event.toString())) return head\n\n // does event contain the clock?\n let changed = false\n for (const cid of head) {\n if (await contains(events, event, cid)) {\n headmap.delete(cid.toString())\n headmap.set(event.toString(), event)\n changed = true\n }\n }\n if (changed) {\n return [...headmap.values()]\n }\n\n // does clock contain the event?\n for (const p of head) {\n if (await contains(events, p, event)) {\n return head\n }\n }\n\n return head.concat(event)\n}\n\n/**\n * @template T\n * @extends {Block<EventView<T>, typeof cbor.code, typeof sha256.code, 1>}\n * @implements {EventBlockView<T>}\n */\nexport class EventBlock extends Block {\n /**\n * @param {object} config\n * @param {EventLink<T>} config.cid\n * @param {Event} config.value\n * @param {Uint8Array} config.bytes\n * @param {string} config.prefix\n */\n constructor ({ cid, value, bytes, prefix }) {\n // @ts-expect-error\n super({ cid, value, bytes })\n this.prefix = prefix\n }\n\n /**\n * @template T\n * @param {T} data\n * @param {EventLink<T>[]} [parents]\n */\n static create (data, parents) {\n return encodeEventBlock({ data, parents: parents ?? [] })\n }\n}\n\n/** @template T */\nexport class EventFetcher {\n /** @param {import('./block').BlockFetcher} blocks */\n constructor (blocks) {\n /** @private */\n this._blocks = blocks\n }\n\n /**\n * @param {EventLink<T>} link\n * @returns {Promise<EventBlockView<T>>}\n */\n async get (link) {\n const block = await this._blocks.get(link)\n if (!block) throw new Error(`missing block: ${link}`)\n return decodeEventBlock(block.bytes)\n }\n}\n\n/**\n * @template T\n * @param {EventView<T>} value\n * @returns {Promise<EventBlockView<T>>}\n */\nexport async function encodeEventBlock (value) {\n // TODO: sort parents\n const { cid, bytes } = await encode({ value, codec: cbor, hasher: sha256 })\n // @ts-expect-error\n return new Block({ cid, value, bytes })\n}\n\n/**\n * @template T\n * @param {Uint8Array} bytes\n * @returns {Promise<EventBlockView<T>>}\n */\nexport async function decodeEventBlock (bytes) {\n const { cid, value } = await decode({ bytes, codec: cbor, hasher: sha256 })\n // @ts-expect-error\n return new Block({ cid, value, bytes })\n}\n\n/**\n * Returns true if event \"a\" contains event \"b\". Breadth first search.\n * @template T\n * @param {EventFetcher<T>} events\n * @param {EventLink<T>} a\n * @param {EventLink<T>} b\n */\nasync function contains (events, a, b) {\n if (a.toString() === b.toString()) return true\n const [{ value: aevent }, { value: bevent }] = await Promise.all([events.get(a), events.get(b)])\n const links = [...aevent.parents]\n while (links.length) {\n const link = links.shift()\n if (!link) break\n if (link.toString() === b.toString()) return true\n // if any of b's parents are this link, then b cannot exist in any of the\n // tree below, since that would create a cycle.\n if (bevent.parents.some(p => link.toString() === p.toString())) continue\n const { value: event } = await events.get(link)\n links.push(...event.parents)\n }\n return false\n}\n\n/**\n * @template T\n * @param {import('./block').BlockFetcher} blocks Block storage.\n * @param {EventLink<T>[]} head\n * @param {object} [options]\n * @param {(b: EventBlockView<T>) => string} [options.renderNodeLabel]\n */\nexport async function * vis (blocks, head, options = {}) {\n const renderNodeLabel = options.renderNodeLabel ?? (b => shortLink(b.cid))\n const events = new EventFetcher(blocks)\n yield 'digraph clock {'\n yield ' node [shape=point fontname=\"Courier\"]; head;'\n const hevents = await Promise.all(head.map(link => events.get(link)))\n /** @type {import('multiformats').Link<EventView<any>>[]} */\n const links = []\n const nodes = new Set()\n for (const e of hevents) {\n nodes.add(e.cid.toString())\n yield ` node [shape=oval fontname=\"Courier\"]; ${e.cid} [label=\"${renderNodeLabel(e)}\"];`\n yield ` head -> ${e.cid};`\n for (const p of e.value.parents) {\n yield ` ${e.cid} -> ${p};`\n }\n links.push(...e.value.parents)\n }\n while (links.length) {\n const link = links.shift()\n if (!link) break\n if (nodes.has(link.toString())) continue\n nodes.add(link.toString())\n const block = await events.get(link)\n yield ` node [shape=oval]; ${link} [label=\"${renderNodeLabel(block)}\" fontname=\"Courier\"];`\n for (const p of block.value.parents) {\n yield ` ${link} -> ${p};`\n }\n links.push(...block.value.parents)\n }\n yield '}'\n}\n\n/** @param {import('./link').AnyLink} l */\nconst shortLink = l => `${String(l).slice(0, 4)}..${String(l).slice(-4)}`\n", "import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n const cid = CID.asCID(element)\n if (cid) {\n yield [elementPath.join('/'), cid]\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 [path.join('/'), cid]\n } else {\n yield * links(value, path)\n }\n }\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n if (source == null || source instanceof Uint8Array) {\n return\n }\n const cid = CID.asCID(source)\n if (cid) {\n yield [base.join('/'), cid]\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield * linksWithin(path, value)\n }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<string>}\n */\nfunction * treeWithin (path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\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/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<string>}\n */\nfunction * tree (source, base) {\n if (source == null || typeof source !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield path.join('/')\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n yield * treeWithin(path, value)\n }\n }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView<unknown>}\n */\nfunction get (source, path) {\n let node = /** @type {Record<string, any>} */(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 { value: cid, remaining: path.slice(index + 1).join('/') }\n }\n }\n return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView<T, C, A, V>}\n */\nclass Block {\n /**\n * @param {object} options\n * @param {CID<T, C, A, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {T} options.value\n */\n constructor ({ cid, bytes, value }) {\n if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n this.cid = cid\n this.bytes = bytes\n this.value = value\n this.asBlock = this\n\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n })\n }\n\n links () {\n return links(this.value, [])\n }\n\n tree () {\n return tree(this.value, [])\n }\n\n /**\n *\n * @param {string} [path]\n * @returns {API.BlockCursorView<unknown>}\n */\n get (path = '/') {\n return get(this.value, path.split('/').filter(Boolean))\n }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function encode ({ value, codec, hasher }) {\n if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const bytes = codec.encode(value)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(\n 1,\n codec.code,\n hash\n )\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(1, codec.code, hash)\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link<T, Code, Alg, V>, value:T, codec?: API.BlockDecoder<Code, T>, bytes: API.ByteView<T> }|{cid:API.Link<T, Code, Alg, V>, bytes:API.ByteView<T>, value?:void, codec:API.BlockDecoder<Code, T>}} options\n * @returns {API.BlockView<T, Code, Alg, V>}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec && codec.decode(bytes))\n\n if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n return new Block({\n // eslint-disable-next-line object-shorthand\n cid: /** @type {CID<T, Code, Alg, V>} */ (cid),\n bytes,\n value\n })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link<T, Code, Alg, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg, V>>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!hasher) 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\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n", "import { CID } from './cid.js'\nimport * as varint from './varint.js'\nimport * as bytes from './bytes.js'\nimport * as hasher from './hashes/hasher.js'\nimport * as digest from './hashes/digest.js'\n// This way TS will also expose all the types from module\nexport * from './interface.js'\n\nexport { CID, hasher, digest, varint, bytes }\n", "import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await<Uint8Array>} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher<Code>}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await<Uint8Array>} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await<Digest.Digest<Code, number>>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise<T>|T} Await\n */\n", "// this is dummy module overlayed by interface.ts\n", "/* global crypto */\n\nimport { from } from './hasher.js'\n\n/**\n * @param {AlgorithmIdentifier} name\n */\nconst sha = name =>\n /**\n * @param {Uint8Array} data\n */\n async data => new Uint8Array(await crypto.subtle.digest(name, data))\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n", "import {\n ShardFetcher,\n ShardBlock,\n encodeShardBlock,\n decodeShardBlock,\n putEntry,\n findCommonPrefix\n} from './shard.js'\n\nexport { ShardBlock, encodeShardBlock, decodeShardBlock }\n\n/**\n * @typedef {{ additions: import('./shard').ShardBlockView[], removals: import('./shard').ShardBlockView[] }} ShardDiff\n */\n\nexport const MaxKeyLength = 64\nexport const MaxShardSize = 512 * 1024\n\n/**\n * Put a value (a CID) for the given key. If the key exists it's value is\n * overwritten.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./shard').ShardLink} root CID of the root node of the bucket.\n * @param {string} key The key of the value to put.\n * @param {import('./link').AnyLink} value The value to put.\n * @param {object} [options]\n * @param {number} [options.maxShardSize] Maximum shard size in bytes.\n * @returns {Promise<{ root: import('./shard').ShardLink } & ShardDiff>}\n */\nexport async function put (blocks, root, key, value, options = {}) {\n const shards = new ShardFetcher(blocks)\n const rshard = await shards.get(root)\n const path = await traverse(shards, rshard, key)\n const target = path[path.length - 1]\n const skey = key.slice(target.prefix.length) // key within the shard\n\n /** @type {import('./shard').ShardEntry} */\n let entry = [skey, value]\n\n /** @type {import('./shard').ShardBlockView[]} */\n const additions = []\n\n // if the key in this shard is longer than allowed, then we need to make some\n // intermediate shards.\n if (skey.length > MaxKeyLength) {\n const pfxskeys = Array.from(Array(Math.ceil(skey.length / MaxKeyLength)), (_, i) => {\n const start = i * MaxKeyLength\n return {\n prefix: target.prefix + skey.slice(0, start),\n skey: skey.slice(start, start + MaxKeyLength)\n }\n })\n\n let child = await encodeShardBlock([[pfxskeys[pfxskeys.length - 1].skey, value]], pfxskeys[pfxskeys.length - 1].prefix)\n additions.push(child)\n\n for (let i = pfxskeys.length - 2; i > 0; i--) {\n child = await encodeShardBlock([[pfxskeys[i].skey, [child.cid]]], pfxskeys[i].prefix)\n additions.push(child)\n }\n\n entry = [pfxskeys[0].skey, [child.cid]]\n }\n\n /** @type {import('./shard').Shard} */\n let shard = putEntry(target.value, entry)\n let child = await encodeShardBlock(shard, target.prefix)\n\n if (child.bytes.length > (options.maxShardSize ?? MaxShardSize)) {\n const common = findCommonPrefix(shard, entry[0])\n if (!common) throw new Error('shard limit reached')\n const { prefix, matches } = common\n const block = await encodeShardBlock(\n matches.filter(([k]) => k !== prefix).map(([k, v]) => [k.slice(prefix.length), v]),\n target.prefix + prefix\n )\n additions.push(block)\n\n /** @type {import('./shard').ShardEntryLinkValue | import('./shard').ShardEntryLinkAndValueValue} */\n let value\n const pfxmatch = matches.find(([k]) => k === prefix)\n if (pfxmatch) {\n if (Array.isArray(pfxmatch[1])) {\n // should not happen! all entries with this prefix should have been\n // placed within this shard already.\n throw new Error(`expected \"${prefix}\" to be a shard value but found a shard link`)\n }\n value = [block.cid, pfxmatch[1]]\n } else {\n value = [block.cid]\n }\n\n shard = shard.filter(e => matches.every(m => e[0] !== m[0]))\n shard = putEntry(shard, [prefix, value])\n child = await encodeShardBlock(shard, target.prefix)\n }\n\n additions.push(child)\n\n // path is root -> shard, so work backwards, propagating the new shard CID\n for (let i = path.length - 2; i >= 0; i--) {\n const parent = path[i]\n const key = child.prefix.slice(parent.prefix.length)\n const value = parent.value.map((entry) => {\n const [k, v] = entry\n if (k !== key) return entry\n if (!Array.isArray(v)) throw new Error(`\"${key}\" is not a shard link in: ${parent.cid}`)\n return /** @type {import('./shard').ShardEntry} */(v[1] == null ? [k, [child.cid]] : [k, [child.cid, v[1]]])\n })\n\n child = await encodeShardBlock(value, parent.prefix)\n additions.push(child)\n }\n\n return { root: additions[additions.length - 1].cid, additions, removals: path }\n}\n\n/**\n * Get the stored value for the given key from the bucket. If the key is not\n * found, `undefined` is returned.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./shard').ShardLink} root CID of the root node of the bucket.\n * @param {string} key The key of the value to get.\n * @returns {Promise<import('./link').AnyLink | undefined>}\n */\nexport async function get (blocks, root, key) {\n const shards = new ShardFetcher(blocks)\n const rshard = await shards.get(root)\n const path = await traverse(shards, rshard, key)\n const target = path[path.length - 1]\n const skey = key.slice(target.prefix.length) // key within the shard\n const entry = target.value.find(([k]) => k === skey)\n if (!entry) return\n return Array.isArray(entry[1]) ? entry[1][1] : entry[1]\n}\n\n/**\n * Delete the value for the given key from the bucket. If the key is not found\n * no operation occurs.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./shard').ShardLink} root CID of the root node of the bucket.\n * @param {string} key The key of the value to delete.\n * @returns {Promise<{ root: import('./shard').ShardLink } & ShardDiff>}\n */\nexport async function del (blocks, root, key) {\n const shards = new ShardFetcher(blocks)\n const rshard = await shards.get(root)\n const path = await traverse(shards, rshard, key)\n const target = path[path.length - 1]\n const skey = key.slice(target.prefix.length) // key within the shard\n\n const entryidx = target.value.findIndex(([k]) => k === skey)\n if (entryidx === -1) return { root, additions: [], removals: [] }\n\n const entry = target.value[entryidx]\n // cannot delete a shard (without data)\n if (Array.isArray(entry[1]) && entry[1][1] == null) return { root, additions: [], removals: [] }\n\n /** @type {import('./shard').ShardBlockView[]} */\n const additions = []\n /** @type {import('./shard').ShardBlockView[]} */\n const removals = [...path]\n\n let shard = [...target.value]\n\n if (Array.isArray(entry[1])) {\n // remove the value from this link+value\n shard[entryidx] = [entry[0], [entry[1][0]]]\n } else {\n shard.splice(entryidx, 1)\n // if now empty, remove from parent\n while (!shard.length) {\n const child = path[path.length - 1]\n const parent = path[path.length - 2]\n if (!parent) break\n path.pop()\n shard = parent.value.filter(e => {\n if (!Array.isArray(e[1])) return true\n return e[1][0].toString() !== child.cid.toString()\n })\n }\n }\n\n let child = await encodeShardBlock(shard, path[path.length - 1].prefix)\n additions.push(child)\n\n // path is root -> shard, so work backwards, propagating the new shard CID\n for (let i = path.length - 2; i >= 0; i--) {\n const parent = path[i]\n const key = child.prefix.slice(parent.prefix.length)\n const value = parent.value.map((entry) => {\n const [k, v] = entry\n if (k !== key) return entry\n if (!Array.isArray(v)) throw new Error(`\"${key}\" is not a shard link in: ${parent.cid}`)\n return /** @type {import('./shard').ShardEntry} */(v[1] == null ? [k, [child.cid]] : [k, [child.cid, v[1]]])\n })\n\n child = await encodeShardBlock(value, parent.prefix)\n additions.push(child)\n }\n\n return { root: additions[additions.length - 1].cid, additions, removals }\n}\n\n/**\n * List entries in the bucket.\n *\n * @param {import('./block').BlockFetcher} blocks Bucket block storage.\n * @param {import('./shard').ShardLink} root CID of the root node of the bucket.\n * @param {object} [options]\n * @param {string} [options.prefix]\n * @returns {AsyncIterableIterator<import('./shard').ShardValueEntry>}\n */\nexport async function * entries (blocks, root, options = {}) {\n const { prefix } = options\n const shards = new ShardFetcher(blocks)\n const rshard = await shards.get(root)\n\n yield * (\n /** @returns {AsyncIterableIterator<import('./shard').ShardValueEntry>} */\n async function * ents (shard) {\n for (const entry of shard.value) {\n const key = shard.prefix + entry[0]\n\n if (Array.isArray(entry[1])) {\n if (entry[1][1]) {\n if (!prefix || (prefix && key.startsWith(prefix))) {\n yield [key, entry[1][1]]\n }\n }\n\n if (prefix) {\n if (prefix.length <= key.length && !key.startsWith(prefix)) {\n continue\n }\n if (prefix.length > key.length && !prefix.startsWith(key)) {\n continue\n }\n }\n yield * ents(await shards.get(entry[1][0], key))\n } else {\n if (prefix && !key.startsWith(prefix)) {\n continue\n }\n yield [key, entry[1]]\n }\n }\n }\n )(rshard)\n}\n\n/**\n * Traverse from the passed shard block to the target shard block using the\n * passed key. All traversed shards are returned, starting with the passed\n * shard and ending with the target.\n *\n * @param {ShardFetcher} shards\n * @param {import('./shard').ShardBlockView} shard\n * @param {string} key\n * @returns {Promise<[import('./shard').ShardBlockView, ...Array<import('./shard').ShardBlockView>]>}\n */\nasync function traverse (shards, shard, key) {\n for (const [k, v] of shard.value) {\n if (key === k) return [shard]\n if (key.startsWith(k) && Array.isArray(v)) {\n const path = await traverse(shards, await shards.get(v[0], shard.prefix + k), key.slice(k.length))\n return [shard, ...path]\n }\n }\n return [shard]\n}\n", "import { Block, encode, decode } from 'multiformats/block'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport * as cbor from '@ipld/dag-cbor'\n\n/**\n * @typedef {import('./link').AnyLink} ShardEntryValueValue\n * @typedef {[ShardLink]} ShardEntryLinkValue\n * @typedef {[ShardLink, import('./link').AnyLink]} ShardEntryLinkAndValueValue\n * @typedef {[key: string, value: ShardEntryValueValue]} ShardValueEntry\n * @typedef {[key: string, value: ShardEntryLinkValue | ShardEntryLinkAndValueValue]} ShardLinkEntry\n * @typedef {[key: string, value: ShardEntryValueValue | ShardEntryLinkValue | ShardEntryLinkAndValueValue]} ShardEntry\n * @typedef {ShardEntry[]} Shard\n * @typedef {import('multiformats').Link<Shard, typeof cbor.code, typeof sha256.code, 1>} ShardLink\n * @typedef {import('multiformats').BlockView<Shard, typeof cbor.code, typeof sha256.code, 1> & { prefix: string }} ShardBlockView\n */\n\n/**\n * @extends {Block<Shard, typeof cbor.code, typeof sha256.code, 1>}\n * @implements {ShardBlockView}\n */\nexport class ShardBlock extends Block {\n /**\n * @param {object} config\n * @param {ShardLink} config.cid\n * @param {Shard} config.value\n * @param {Uint8Array} config.bytes\n * @param {string} config.prefix\n */\n constructor ({ cid, value, bytes, prefix }) {\n // @ts-expect-error\n super({ cid, value, bytes })\n this.prefix = prefix\n }\n\n static create () {\n return encodeShardBlock([])\n }\n}\n\n/**\n * @param {Shard} value\n * @param {string} [prefix]\n * @returns {Promise<ShardBlockView>}\n */\nexport async function encodeShardBlock (value, prefix) {\n const { cid, bytes } = await encode({ value, codec: cbor, hasher: sha256 })\n return new ShardBlock({ cid, value, bytes, prefix: prefix ?? '' })\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {string} [prefix]\n * @returns {Promise<ShardBlockView>}\n */\nexport async function decodeShardBlock (bytes, prefix) {\n const { cid, value } = await decode({ bytes, codec: cbor, hasher: sha256 })\n if (!Array.isArray(value)) throw new Error(`invalid shard: ${cid}`)\n return new ShardBlock({ cid, value, bytes, prefix: prefix ?? '' })\n}\n\nexport class ShardFetcher {\n /** @param {import('./block').BlockFetcher} blocks */\n constructor (blocks) {\n this._blocks = blocks\n }\n\n /**\n * @param {ShardLink} link\n * @param {string} [prefix]\n * @returns {Promise<ShardBlockView>}\n */\n async get (link, prefix = '') {\n const block = await this._blocks.get(link)\n if (!block) throw new Error(`missing block: ${link}`)\n return decodeShardBlock(block.bytes, prefix)\n }\n}\n\n/**\n * @param {Shard} target Shard to put to.\n * @param {ShardEntry} entry\n * @returns {Shard}\n */\nexport function putEntry (target, entry) {\n if (!target.length) return [entry]\n\n /** @type {Shard} */\n const shard = []\n for (const [i, [k, v]] of target.entries()) {\n if (entry[0] === k) {\n // if new value is link to shard...\n if (Array.isArray(entry[1])) {\n // and old value is link to shard\n // and old value is _also_ link to data\n // and new value does not have link to data\n // then preserve old data\n if (Array.isArray(v) && v[1] != null && entry[1][1] == null) {\n shard.push([k, [entry[1][0], v[1]]])\n } else {\n shard.push(entry)\n }\n } else {\n // shard as well as value?\n /** @type {ShardEntry} */\n const newEntry = Array.isArray(v) ? [k, [v[0], entry[1]]] : entry\n shard.push(newEntry)\n }\n for (let j = i + 1; j < target.length; j++) {\n shard.push(target[j])\n }\n return shard\n }\n if (i === 0 && entry[0] < k) {\n shard.push(entry)\n for (let j = i; j < target.length; j++) {\n shard.push(target[j])\n }\n return shard\n }\n if (i > 0 && entry[0] > target[i - 1][0] && entry[0] < k) {\n shard.push(entry)\n for (let j = i; j < target.length; j++) {\n shard.push(target[j])\n }\n return shard\n }\n shard.push([k, v])\n }\n\n shard.push(entry)\n return shard\n}\n\n/**\n * @param {import('./shard').Shard} shard\n * @param {string} skey Shard key to use as a base.\n */\nexport function findCommonPrefix (shard, skey) {\n const startidx = shard.findIndex(([k]) => skey === k)\n if (startidx === -1) throw new Error(`key not found in shard: ${skey}`)\n let i = startidx\n /** @type {string} */\n let pfx\n while (true) {\n pfx = shard[i][0].slice(0, -1)\n if (pfx.length) {\n while (true) {\n const matches = shard.filter(entry => entry[0].startsWith(pfx))\n if (matches.length > 1) return { prefix: pfx, matches }\n pfx = pfx.slice(0, -1)\n if (!pfx.length) break\n }\n }\n i++\n if (i >= shard.length) {\n i = 0\n }\n if (i === startidx) {\n return\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["name", "i", "init_buffer", "init_process", "init_process", "code", "i", "len", "len2", "buffer", "e", "m", "d", "s", "c", "Buffer", "length", "buf", "from", "fromString", "b", "alloc", "isBuffer", "compare", "a", "x", "y", "concat", "utf8ToBytes", "utf8Slice", "n", "toString", "equals", "inspect", "read", "j", "toJSON", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "slice", "byteLength", "E", "name", "src", "init_buffer", "init_process", "init_buffer", "exports", "init_buffer", "init_process", "exports", "init_buffer", "init_process", "wrap", "exports", "init_buffer", "init_process", "exports", "init_buffer", "init_process", "exports", "init_buffer", "init_process", "e", "exports", "init_buffer", "init_process", "exports", "init_buffer", "init_process", "queue", "on", "once", "off", "q", "i", "l", "name", "exports", "init_buffer", "init_process", "exports", "init_buffer", "init_process", "encode", "MSB", "REST", "MSBALL", "INT", "exports", "init_buffer", "init_process", "read", "MSB", "REST", "buf", "b", "l", "exports", "init_buffer", "init_process", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "exports", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "buf", "b", "l", "decode", "code", "init_buffer", "init_process", "init_buffer", "init_process", "o", "code", "decode", "equals", "a", "b", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "name", "j", "i", "x", "encode", "length", "decode", "buffer", "init_buffer", "init_process", "name", "encode", "decode", "i", "buffer", "init_buffer", "init_process", "base", "version", "baseCache", "version", "code", "self", "equals", "base", "decode", "i", "length", "cache", "cid", "base", "b", "f", "v", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "decode", "read", "MSB$1", "REST$1", "buf", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "varint", "_brrp_varint", "varint_default", "decode", "code", "varint_default", "encodeTo", "encodingLength", "init_buffer", "init_process", "init_buffer", "init_process", "empty", "equals", "coerce", "o", "create", "code", "encodingLength", "encodeTo", "Digest", "decode", "coerce", "equals", "a", "b", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "base", "name", "j", "i", "x", "encode", "length", "decode", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "init_buffer", "init_process", "Encoder", "name", "Decoder", "or", "ComposedDecoder", "Codec", "from", "encode", "decode", "baseX", "base_x_default", "coerce", "i", "buffer", "rfc4648", "base58btc", "baseX", "base58flickr", "init_buffer", "init_process", "base32", "rfc4648", "base32upper", "base32pad", "base32padupper", "base32hex", "base32hexupper", "base32hexpad", "base32hexpadupper", "base32z", "init_buffer", "init_process", "format", "base", "version", "toStringV0", "baseCache", "base58btc", "toStringV1", "base32", "cache", "baseCache", "CID", "version", "code", "DAG_PB_CODE", "SHA_256_CODE", "create", "self", "equals", "base", "format", "encodeCID", "cidSymbol", "decode", "coerce", "Digest", "i", "length", "parseCIDtoBytes", "base58btc", "base32", "toStringV0", "cid", "toStringV1", "encodingLength", "encodeTo", "decode", "encode", "name", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "name", "init_buffer", "init_process", "init_buffer", "init_process", "isBuffer", "buf", "length", "c", "off", "b", "b2", "isBuffer", "i", "length", "buf", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "buf", "encodedSize", "init_buffer", "init_process", "buf", "encodedSize", "compareTokens", "init_buffer", "init_process", "length", "buf", "l", "encodedSize", "compareTokens", "b2", "init_buffer", "init_process", "toToken", "length", "l", "init_buffer", "init_process", "toToken", "length", "l", "buf", "encodedSize", "init_buffer", "init_process", "toToken", "length", "l", "buf", "encodedSize", "init_buffer", "init_process", "buf", "encodedSize", "init_buffer", "init_process", "buf", "encodedSize", "ui8a", "i", "p", "entries", "i", "e", "length", "e2", "buf", "encode", "init_buffer", "init_process", "i", "m", "decode", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "decode", "read", "MSB$1", "REST$1", "buf", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "varint", "_brrp_varint", "varint_default", "decode", "code", "varint_default", "encodeTo", "encodingLength", "init_buffer", "init_process", "init_buffer", "init_process", "empty", "equals", "coerce", "o", "create", "code", "encodingLength", "encodeTo", "Digest", "decode", "coerce", "equals", "a", "b", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "base", "name", "j", "i", "x", "encode", "length", "decode", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "init_buffer", "init_process", "Encoder", "name", "Decoder", "or", "ComposedDecoder", "Codec", "from", "encode", "decode", "baseX", "base_x_default", "coerce", "i", "buffer", "rfc4648", "base58btc", "baseX", "base58flickr", "init_buffer", "init_process", "base32", "rfc4648", "base32upper", "base32pad", "base32padupper", "base32hex", "base32hexupper", "base32hexpad", "base32hexpadupper", "base32z", "init_buffer", "init_process", "format", "base", "version", "toStringV0", "baseCache", "base58btc", "toStringV1", "base32", "cache", "baseCache", "CID", "version", "code", "DAG_PB_CODE", "SHA_256_CODE", "create", "self", "equals", "base", "format", "encodeCID", "cidSymbol", "decode", "coerce", "Digest", "i", "length", "parseCIDtoBytes", "base58btc", "base32", "toStringV0", "cid", "toStringV1", "encodingLength", "encodeTo", "CID", "name", "encode", "decode", "init_buffer", "init_process", "k", "name", "init_buffer", "init_process", "import_varint", "i", "varint", "length", "length", "decode", "bytes", "multihash", "CID", "version", "blockLength", "read", "p", "c", "off", "b", "b", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "version", "init_buffer", "init_process", "version", "fromBytes", "init_buffer", "init_process", "init_buffer", "init_process", "import_varint", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "e", "t", "n", "r", "i", "o", "s", "v", "a", "u", "f", "finished", "p", "on", "once", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "e", "t", "n", "r", "o", "i", "u", "c", "l", "s", "f", "a", "h", "p", "t", "e", "o", "n", "r", "l", "c", "u", "i", "f", "a", "s", "p", "y", "d", "m", "h", "v", "T", "format", "isBuffer", "TextEncoder", "TextDecoder", "init_buffer", "init_process", "exports", "_dewExec", "dew", "process", "e", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "i", "Item", "noop", "name", "init_buffer", "init_process", "r$1", "r", "t", "e", "n", "o", "a", "h", "c", "d", "f", "A", "u", "c$1", "t$1", "o$2", "M", "p", "w", "i", "N", "l", "s", "i$1", "y", "F", "l$1", "_", "z", "g", "O", "I", "S", "R", "T", "L", "v", "b", "m", "D", "E", "B", "U", "Y", "x", "C", "P", "k", "j", "e$1", "n$1", "u$1", "o$1", "code", "i", "len", "len2", "buffer", "e", "m", "d", "s", "c", "Buffer", "length", "buf", "from", "fromString", "b", "alloc", "isBuffer", "compare", "a", "x", "y", "concat", "utf8ToBytes", "utf8Slice", "n", "toString", "equals", "inspect", "read", "j", "toJSON", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "slice", "byteLength", "E", "name", "src", "inherits", "v", "p", "_", "process", "err", "self", "deprecate", "config", "Writable", "Duplex", "Stream", "realHasInstance", "get", "finished", "l", "keys", "Readable", "once", "noop", "onlegacyfinish", "onfinish", "onend", "onerror", "onclose", "onrequest", "createIterResult", "createReadableStreamAsyncIterator", "exports$3", "_global", "EElistenerCount", "debug", "prependListener", "e$1", "exports$2", "_dewExec$2", "dew$2", "Transform", "exports$1", "_dewExec$1", "dew$1", "PassThrough", "exports", "_dewExec", "dew", "pipeline", "exports$1", "_dewExec", "_global", "dew", "Stream", "inherits", "dew$2", "dew$1", "exports", "init_buffer", "init_process", "_extend", "callbackify", "debuglog", "deprecate", "format", "inherits", "inspect", "isArray", "isBoolean", "isBuffer", "isDate", "isError", "isFunction", "isNull", "isNullOrUndefined", "isNumber", "isObject", "isPrimitive", "isRegExp", "isString", "isSymbol", "isUndefined", "log", "promisify", "types", "TextEncoder", "TextDecoder", "exports", "src", "promisify", "init_buffer", "init_process", "import_varint", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "typeofs", "objectTypeNames", "is", "isBuffer", "getObjectType", "init_buffer", "init_process", "Type", "name", "Token", "init_buffer", "init_process", "init_buffer", "init_process", "useBuffer", "textDecoder", "textEncoder", "isBuffer", "buf", "asU8A", "toString", "utf8Slice", "fromString", "utf8ToBytes", "fromArray", "slice", "concat", "length", "c", "off", "b", "alloc", "compare", "b2", "isBuffer", "i", "utf8ToBytes", "length", "utf8Slice", "buf", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "defaultChunkSize", "Bl", "alloc", "slice", "concat", "init_buffer", "init_process", "decodeErrPrefix", "encodeErrPrefix", "uintMinorPrefixBytes", "assertEnoughData", "init_buffer", "init_process", "init_buffer", "init_process", "uintBoundaries", "readUint8", "assertEnoughData", "decodeErrPrefix", "readUint16", "readUint32", "readUint64", "decodeUint8", "Token", "Type", "decodeUint16", "decodeUint32", "decodeUint64", "encodeUint", "buf", "encodeUintValue", "encodedSize", "compareTokens", "init_buffer", "init_process", "decodeNegint8", "Token", "Type", "readUint8", "decodeNegint16", "readUint16", "decodeNegint32", "readUint32", "neg1b", "pos1b", "decodeNegint64", "readUint64", "decodeErrPrefix", "encodeNegint", "buf", "encodeUintValue", "encodedSize", "uintBoundaries", "compareTokens", "init_buffer", "init_process", "toToken", "length", "assertEnoughData", "buf", "slice", "Token", "Type", "decodeBytesCompact", "decodeBytes8", "readUint8", "decodeBytes16", "readUint16", "decodeBytes32", "readUint32", "decodeBytes64", "l", "readUint64", "decodeErrPrefix", "tokenBytes", "fromString", "encodeBytes", "encodeUintValue", "encodedSize", "compareTokens", "compareBytes", "b2", "compare", "init_buffer", "init_process", "toToken", "length", "assertEnoughData", "Token", "Type", "toString", "slice", "decodeStringCompact", "decodeString8", "readUint8", "decodeString16", "readUint16", "decodeString32", "readUint32", "decodeString64", "l", "readUint64", "decodeErrPrefix", "encodeString", "encodeBytes", "init_buffer", "init_process", "toToken", "length", "Token", "Type", "decodeArrayCompact", "decodeArray8", "readUint8", "decodeArray16", "readUint16", "decodeArray32", "readUint32", "decodeArray64", "l", "readUint64", "decodeErrPrefix", "decodeArrayIndefinite", "encodeArray", "buf", "encodeUintValue", "encodeUint", "encodedSize", "init_buffer", "init_process", "toToken", "length", "Token", "Type", "decodeMapCompact", "decodeMap8", "readUint8", "decodeMap16", "readUint16", "decodeMap32", "readUint32", "decodeMap64", "l", "readUint64", "decodeErrPrefix", "decodeMapIndefinite", "encodeMap", "buf", "encodeUintValue", "encodeUint", "encodedSize", "init_buffer", "init_process", "decodeTagCompact", "Token", "Type", "decodeTag8", "readUint8", "decodeTag16", "readUint16", "decodeTag32", "readUint32", "decodeTag64", "readUint64", "encodeTag", "buf", "encodeUintValue", "encodeUint", "encodedSize", "init_buffer", "init_process", "MINOR_FALSE", "MINOR_TRUE", "MINOR_NULL", "MINOR_UNDEFINED", "decodeUndefined", "decodeErrPrefix", "Token", "Type", "decodeBreak", "createToken", "decodeFloat16", "readFloat16", "decodeFloat32", "readFloat32", "decodeFloat64", "readFloat64", "encodeFloat", "buf", "encodeFloat16", "ui8a", "encodeFloat32", "encodeFloat64", "encodedSize", "buffer", "dataView", "encodeUint", "invalidMinor", "decodeErrPrefix", "errorer", "jump", "i", "decodeUint8", "decodeUint16", "decodeUint32", "decodeUint64", "decodeNegint8", "decodeNegint16", "decodeNegint32", "decodeNegint64", "decodeBytesCompact", "decodeBytes8", "decodeBytes16", "decodeBytes32", "decodeBytes64", "decodeStringCompact", "decodeString8", "decodeString16", "decodeString32", "decodeString64", "decodeArrayCompact", "decodeArray8", "decodeArray16", "decodeArray32", "decodeArray64", "decodeArrayIndefinite", "decodeMapCompact", "decodeMap8", "decodeMap16", "decodeMap32", "decodeMap64", "decodeMapIndefinite", "decodeTagCompact", "decodeTag8", "decodeTag16", "decodeTag32", "decodeTag64", "decodeUndefined", "decodeFloat16", "decodeFloat32", "decodeFloat64", "decodeBreak", "quick", "Token", "Type", "quickEncodeToken", "fromArray", "makeCborEncoders", "Type", "encodeUint", "encodeNegint", "encodeBytes", "encodeString", "encodeArray", "encodeMap", "encodeTag", "encodeFloat", "cborEncoders", "buf", "Bl", "Ref", "p", "encodeErrPrefix", "simpleTokens", "Token", "typeEncoders", "entries", "i", "e", "objectToTokens", "length", "sortMapEntries", "is", "init_buffer", "init_process", "DONE", "BREAK", "init_buffer", "init_process", "cborEncoders", "makeCborEncoders", "defaultEncodeOptions", "quickEncodeToken", "cborEncoders", "defaultEncodeOptions", "root", "varint", "encode", "Token", "Type", "length", "buffer", "root", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "c", "name", "version", "target", "init_buffer", "init_process", "init_buffer", "init_process", "parse", "base", "CID", "parse", "name", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "from", "name", "code", "encode", "create", "init_buffer", "init_process", "CID", "base", "encode", "decode", "init_buffer", "init_process", "name", "from", "code", "decode", "encode", "name", "init_buffer", "init_process", "name", "code", "encode", "coerce", "decode", "_2", "t", "encode", "buffer", "decode", "name", "t", "name", "f", "v", "t", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "init_buffer", "init_process", "from", "name", "code", "encode", "Hasher", "init_buffer", "init_process", "readonly", "linksWithin", "links", "base", "treeWithin", "tree", "get", "Block", "encode", "decode", "init_buffer", "init_process", "sha", "name", "sha256", "from", "sha512", "p", "Block", "encode", "sha256", "decode", "a", "b", "links", "init_buffer", "init_process", "init_buffer", "init_process", "Block", "encode", "sha256", "decode", "i", "k", "v", "j", "_2", "root", "_", "i", "child", "k", "v", "value", "e", "m", "key", "entry", "get", "k", "v", "put", "result", "data", "event", "root", "a", "r", "k", "root", "a", "r", "k", "get", "c", "root", "a", "i", "h", "b", "p", "put", "encode", "get", "decode", "_2", "name", "name", "config", "cargoQueue", "e"]
7
- }