@graffiti-garden/implementation-local 0.2.8 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
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/chunk-DtuTasat.js", "../node_modules/@jspm/core/nodelibs/browser/buffer.js", "../node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js", "../node_modules/ajv/lib/compile/codegen/code.ts", "../node_modules/ajv/lib/compile/codegen/scope.ts", "../node_modules/ajv/lib/compile/codegen/index.ts", "../node_modules/ajv/lib/compile/util.ts", "../node_modules/ajv/lib/compile/names.ts", "../node_modules/ajv/lib/compile/errors.ts", "../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../node_modules/ajv/lib/compile/rules.ts", "../node_modules/ajv/lib/compile/validate/applicability.ts", "../node_modules/ajv/lib/compile/validate/dataType.ts", "../node_modules/ajv/lib/compile/validate/defaults.ts", "../node_modules/ajv/lib/vocabularies/code.ts", "../node_modules/ajv/lib/compile/validate/keyword.ts", "../node_modules/ajv/lib/compile/validate/subschema.ts", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/lib/compile/resolve.ts", "../node_modules/ajv/lib/compile/validate/index.ts", "../node_modules/ajv/lib/runtime/validation_error.ts", "../node_modules/ajv/lib/compile/ref_error.ts", "../node_modules/ajv/lib/compile/index.ts", "../node_modules/ajv/dist/refs/data.json", "../node_modules/fast-uri/lib/scopedChars.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/lib/runtime/uri.ts", "../node_modules/ajv/lib/core.ts", "../node_modules/ajv/lib/vocabularies/core/ref.ts", "../node_modules/ajv-draft-04/src/vocabulary/core.ts", "../node_modules/ajv-draft-04/src/vocabulary/validation/limitNumber.ts", "../node_modules/ajv-draft-04/src/vocabulary/validation/limitNumberExclusive.ts", "../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../node_modules/ajv/lib/runtime/ucs2length.ts", "../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../node_modules/ajv/lib/vocabularies/validation/required.ts", "../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../node_modules/ajv/lib/runtime/equal.ts", "../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../node_modules/ajv/lib/vocabularies/validation/const.ts", "../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../node_modules/ajv-draft-04/src/vocabulary/validation/index.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../node_modules/ajv/lib/vocabularies/format/format.ts", "../node_modules/ajv/lib/vocabularies/format/index.ts", "../node_modules/ajv-draft-04/src/vocabulary/draft4.ts", "../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../node_modules/ajv-draft-04/dist/refs/json-schema-draft-04.json", "../node_modules/ajv-draft-04/src/index.ts", "../node_modules/spark-md5/spark-md5.js", "../node_modules/vuvuzela/index.js", "../src/index.ts", "../node_modules/@graffiti-garden/api/src/1-api.ts", "../node_modules/@graffiti-garden/api/src/3-errors.ts", "../src/session-manager.ts", "../src/database.ts", "../node_modules/pouchdb/lib/index-browser.es.js", "../node_modules/uuid/dist/esm-browser/index.js", "../node_modules/uuid/dist/esm-browser/rng.js", "../node_modules/uuid/dist/esm-browser/stringify.js", "../node_modules/uuid/dist/esm-browser/validate.js", "../node_modules/uuid/dist/esm-browser/regex.js", "../node_modules/uuid/dist/esm-browser/v4.js", "../node_modules/@jspm/core/nodelibs/browser/events.js", "../src/utilities.ts", "../node_modules/@repeaterjs/repeater/repeater.js", "../node_modules/fast-json-patch/index.mjs", "../node_modules/fast-json-patch/module/core.mjs", "../node_modules/fast-json-patch/module/helpers.mjs", "../node_modules/fast-json-patch/module/duplex.mjs", "../src/synchronize.ts"],
4
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: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\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 browser = true;\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 browser,\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, browser, 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$2 = {},\n _dewExec$2 = false;\nfunction dew$2() {\n if (_dewExec$2) return exports$2;\n _dewExec$2 = true;\n exports$2.byteLength = byteLength;\n exports$2.toByteArray = toByteArray;\n exports$2.fromByteArray = fromByteArray;\n var lookup = [];\n var revLookup = [];\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n // Support decoding URL-safe base64 strings, as Node.js does.\n // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n function getLens(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\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 }\n\n // base64 is 4/3 + up to two characters of the original data\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 function _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\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;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\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 if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 255;\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 return arr;\n }\n function tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n }\n function encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\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 return output.join(\"\");\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 var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\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 }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\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 return parts.join(\"\");\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 /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n exports$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 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\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 return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n };\n exports$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 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 if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\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 for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n buffer[offset + i - d] |= s * 128;\n };\n return exports$1;\n}\n\nvar exports = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports;\n _dewExec = true;\n const base64 = dew$2();\n const ieee754 = dew$1();\n const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n : null;\n exports.Buffer = Buffer;\n exports.SlowBuffer = SlowBuffer;\n exports.INSPECT_MAX_BYTES = 50;\n const K_MAX_LENGTH = 2147483647;\n exports.kMaxLength = K_MAX_LENGTH;\n\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 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\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 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 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 function createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\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 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 return allocUnsafe(arg);\n }\n return from(arg, encodingOrOffset, length);\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 if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\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 if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof value === \"number\") {\n throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n }\n const valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n const b = fromObject(value);\n if (b) return b;\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 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 /**\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 Buffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n };\n\n // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n // https://github.com/feross/buffer/pull/148\n Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n Object.setPrototypeOf(Buffer, Uint8Array);\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 function alloc(size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size);\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 return createBuffer(size);\n }\n\n /**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n Buffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n };\n function allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n }\n\n /**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\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 Buffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n };\n function fromString(string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\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 return buf;\n }\n function fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf;\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 return fromArrayLike(arrayView);\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 if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n }\n let buf;\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 }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n function fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n if (buf.length === 0) {\n return buf;\n }\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n if (obj.length !== undefined) {\n if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n return fromArrayLike(obj);\n }\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\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 return length | 0;\n }\n function SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\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 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 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 if (a === b) return 0;\n let x = a.length;\n let y = b.length;\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 if (x < y) return -1;\n if (y < x) return 1;\n return 0;\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 default:\n return false;\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 if (list.length === 0) {\n return Buffer.alloc(0);\n }\n let i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\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 pos += buf.length;\n }\n return buffer;\n };\n function byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\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 const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0;\n\n // Use a for loop to avoid recursion\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n case \"utf8\":\n case \"utf-8\":\n return utf8ToBytes(string).length;\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n case \"hex\":\n return len >>> 1;\n case \"base64\":\n return base64ToBytes(string).length;\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n }\n Buffer.byteLength = byteLength;\n function slowToString(encoding, start, end) {\n let loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\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 if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return \"\";\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return \"\";\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return \"\";\n }\n if (!encoding) encoding = \"utf8\";\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n case \"ascii\":\n return asciiSlice(this, start, end);\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n case \"base64\":\n return base64Slice(this, start, end);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\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 Buffer.prototype._isBuffer = true;\n function swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n }\n Buffer.prototype.swap16 = function swap16() {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n };\n Buffer.prototype.swap32 = function swap32() {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\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 return this;\n };\n Buffer.prototype.swap64 = function swap64() {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\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 return this;\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 Buffer.prototype.toLocaleString = Buffer.prototype.toString;\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 Buffer.prototype.inspect = function inspect() {\n let str = \"\";\n const max = exports.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 if (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\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 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 if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\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 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 if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n\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 function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\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 byteOffset = +byteOffset; // Coerce to Number.\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 }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\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 }\n\n // Normalize val\n if (typeof val === \"string\") {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\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 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 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 return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError(\"val must be string, number or Buffer\");\n }\n function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\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 indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\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 let i;\n if (dir) {\n let foundIndex = -1;\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 for (i = byteOffset; i >= 0; i--) {\n let found = true;\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 if (found) return i;\n }\n }\n return -1;\n }\n Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n function hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n const strLen = string.length;\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n let i;\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 return i;\n }\n function utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n }\n function asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n }\n function base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n }\n function ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\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;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\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 const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n if (!encoding) encoding = \"utf8\";\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return asciiWrite(this, string, offset, length);\n case \"base64\":\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\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 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 function utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\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 if (i + 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[i + 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[i + 1];\n thirdByte = buf[i + 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[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 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 // 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 res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n }\n\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 const MAX_ARGUMENTS_LENGTH = 4096;\n function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\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 }\n function asciiSlice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n return ret;\n }\n function latin1Slice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\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 for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out;\n }\n function utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = \"\";\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n }\n Buffer.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n const newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n };\n\n /*\n * Need to make sure that buffer isn't trying to write out of bounds.\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 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 while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n return val;\n };\n Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n let val = this[offset + --byteLength];\n let mul = 1;\n while (byteLength > 0 && (mul *= 256)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\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 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 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 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 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 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 if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\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 if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\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 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 while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\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 while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\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 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 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 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 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 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 if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\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 if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const val = (first << 24) +\n // 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 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 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 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 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 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 Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let mul = 1;\n let i = 0;\n this[offset] = value & 255;\n while (++i < byteLength && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength;\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 if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength;\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 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 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 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 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 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 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 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 Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 255;\n while (++i < byteLength && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength;\n };\n Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength;\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 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 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 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 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 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 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 function writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n }\n Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n function writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n }\n Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n };\n\n // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\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;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\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\");\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n const len = end - start;\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 return len;\n };\n\n // Usage:\n // buffer.fill(number[, offset[, end]])\n // buffer.fill(buffer[, offset[, end]])\n // buffer.fill(string[, offset[, end]][, encoding])\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 if (encoding !== undefined && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0);\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 }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\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 if (len === 0) {\n throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n };\n\n // CUSTOM ERRORS\n // =============\n\n // Simplified versions from Node, changed for Buffer-only usage\n const errors = {};\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 });\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`;\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name;\n }\n get code() {\n return sym;\n }\n set code(value) {\n Object.defineProperty(this, \"code\", {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n toString() {\n return `${this.name} [${sym}]: ${this.message}`;\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 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 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 if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += \"n\";\n }\n msg += ` It must be ${range}. Received ${received}`;\n return msg;\n }, RangeError);\n function addNumericalSeparator(val) {\n let res = \"\";\n let i = val.length;\n const start = val[0] === \"-\" ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n return `${val.slice(0, i)}${res}`;\n }\n\n // CHECK FUNCTIONS\n // ===============\n\n function checkBounds(buf, offset, byteLength) {\n validateNumber(offset, \"offset\");\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\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 (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 }\n throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n }\n checkBounds(buf, offset, byteLength);\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 function boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n }\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n }\n\n // HELPER FUNCTIONS\n // ================\n\n const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n function base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split(\"=\")[0];\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, \"\");\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return \"\";\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n return str;\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 for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\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 }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\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 leadSurrogate = null;\n\n // encode utf8\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 return bytes;\n }\n function asciiToBytes(str) {\n const byteArray = [];\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 return byteArray;\n }\n function utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\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 return byteArray;\n }\n function base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n }\n function blitBuffer(src, dst, offset, length) {\n let i;\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 return i;\n }\n\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 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 function numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n }\n\n // Create lookup table for `toString('hex')`\n // See: https://github.com/feross/buffer/issues/219\n const hexSliceLookupTable = function () {\n const alphabet = \"0123456789abcdef\";\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n }();\n\n // Return not function with Error if BigInt not supported\n function defineBigIntMethod(fn) {\n return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n }\n function BufferBigIntNotDefined() {\n throw new Error(\"BigInt not supported\");\n }\n return exports;\n}\n\nexport { dew as d };\n", "import { d as dew } from './chunk-DtuTasat.js';\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", "// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n", "import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n", "import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n", "import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n", "import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n", "{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n", "'use strict'\n\nconst HEX = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n A: 10,\n b: 11,\n B: 11,\n c: 12,\n C: 12,\n d: 13,\n D: 13,\n e: 14,\n E: 14,\n f: 15,\n F: 15\n}\n\nmodule.exports = {\n HEX\n}\n", "'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nconst IPV4_REG = /^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(IPV4_REG) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n", "'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n if (!components.host) {\n components.error = components.error || 'HTTP URIs must have a host.'\n }\n\n return components\n}\n\nfunction httpSerialize (components) {\n const secure = String(components.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === '') {\n components.port = undefined\n }\n\n // normalize the empty path\n if (!components.path) {\n components.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents)\n\n // construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n wsComponents.path = undefined\n wsComponents.query = undefined\n\n return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n wsComponents.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n wsComponents.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponents.resourceName) {\n const [path, query] = wsComponents.resourceName.split('?')\n wsComponents.path = (path && path !== '/' ? path : undefined)\n wsComponents.query = query\n wsComponents.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponents.fragment = undefined\n\n return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n if (!urnComponents.path) {\n urnComponents.error = 'URN can not be parsed'\n return urnComponents\n }\n const matches = urnComponents.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n urnComponents.nid = matches[1].toLowerCase()\n urnComponents.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n const schemeHandler = SCHEMES[urnScheme]\n urnComponents.path = undefined\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options)\n }\n } else {\n urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n }\n\n return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n const nid = urnComponents.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = SCHEMES[urnScheme]\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options)\n }\n\n const uriComponents = urnComponents\n const nss = urnComponents.nss\n uriComponents.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n const uuidComponents = urnComponents\n uuidComponents.uuid = uuidComponents.nss\n uuidComponents.nss = undefined\n\n if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n }\n\n return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n const urnComponents = uuidComponents\n // normalize UUID\n urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n return urnComponents\n}\n\nconst http = {\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst https = {\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst ws = {\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n}\n\nconst wss = {\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n}\n\nconst urn = {\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n}\n\nconst urnuuid = {\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n}\n\nconst SCHEMES = {\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n", "'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = serialize(parse(uri, options), options)\n } else if (typeof uri === 'object') {\n uri = parse(serialize(uri, options), options)\n }\n return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base components\n relative = parse(serialize(relative, options), options) // normalize relative components\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path.charAt(0) === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n const components = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n if (components.path !== undefined) {\n if (!options.skipEscape) {\n components.path = escape(components.path)\n\n if (components.scheme !== undefined) {\n components.path = components.path.split('%3A').join(':')\n }\n } else {\n components.path = unescape(components.path)\n }\n }\n\n if (options.reference !== 'suffix' && components.scheme) {\n uriTokens.push(components.scheme, ':')\n }\n\n const authority = recomposeAuthority(components)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (components.path && components.path.charAt(0) !== '/') {\n uriTokens.push('/')\n }\n }\n if (components.path !== undefined) {\n let s = components.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s)\n }\n\n if (components.query !== undefined) {\n uriTokens.push('?', components.query)\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push('#', components.fragment)\n }\n return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (_v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n let code = 0\n for (let i = 0, len = value.length; i < len; ++i) {\n code = value.charCodeAt(i)\n if (code > 126 || hexLookUp[code]) {\n return true\n }\n }\n return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n const gotEncoding = uri.indexOf('%') !== -1\n let isIP = false\n if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = normalizeIPv4(parsed.host)\n if (ipv4result.isIPV4 === false) {\n const ipv6result = normalizeIPv6(ipv4result.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n parsed.host = ipv4result.host\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (gotEncoding && parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (gotEncoding && parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponents,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n", "import type {Vocabulary} from \"ajv/dist/core\"\nimport refKeyword from \"ajv/dist/vocabularies/core/ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"id\",\n \"$defs\",\n {keyword: \"$comment\"},\n \"definitions\",\n refKeyword,\n]\n\nexport default core\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordCxt,\n KeywordErrorDefinition,\n} from \"ajv/dist/core\"\nimport type {KeywordErrorCxt} from \"ajv/dist/types\"\nimport {_, str, Code} from \"ajv/dist/core\"\nimport {operators} from \"ajv/dist/compile/codegen\"\n\nconst ops = operators\n\nexport type LimitKwd = \"maximum\" | \"minimum\"\n\nexport type ExclusiveLimitKwd = \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\ninterface KwdOp {\n okStr: Comparison\n ok: Code\n fail: Code\n}\n\ninterface KwdDef {\n exclusive: ExclusiveLimitKwd\n ops: [KwdOp, KwdOp]\n}\n\nconst KWDs: {[K in LimitKwd]: KwdDef} = {\n maximum: {\n exclusive: \"exclusiveMaximum\",\n ops: [\n {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n ],\n },\n minimum: {\n exclusive: \"exclusiveMinimum\",\n ops: [\n {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n ],\n },\n}\n\nexport type LimitNumberError = ErrorObject<\n LimitKwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: (cxt) => str`must be ${kwdOp(cxt).okStr} ${cxt.schemaCode}`,\n params: (cxt) => _`{comparison: ${kwdOp(cxt).okStr}, limit: ${cxt.schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${kwdOp(cxt).fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nfunction kwdOp(cxt: KeywordErrorCxt): KwdOp {\n const keyword = cxt.keyword as LimitKwd\n const opsIdx = cxt.parentSchema?.[KWDs[keyword].exclusive] ? 1 : 0\n return KWDs[keyword].ops[opsIdx]\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n // ErrorObject,\n KeywordCxt,\n // KeywordErrorDefinition,\n} from \"ajv/dist/core\"\nimport {LimitKwd, ExclusiveLimitKwd} from \"./limitNumber\"\n\nconst KWDs: {[K in ExclusiveLimitKwd]: LimitKwd} = {\n exclusiveMaximum: \"maximum\",\n exclusiveMinimum: \"minimum\",\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"boolean\",\n code({keyword, parentSchema}: KeywordCxt) {\n const limitKwd = KWDs[keyword as ExclusiveLimitKwd]\n if (parentSchema[limitKwd] === undefined) {\n throw new Error(`${keyword} can only be used with ${limitKwd}`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"ajv/dist/core\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport limitNumberExclusive from \"./limitNumberExclusive\"\nimport multipleOf, {MultipleOfError} from \"ajv/dist/vocabularies/validation/multipleOf\"\nimport limitLength from \"ajv/dist/vocabularies/validation/limitLength\"\nimport pattern, {PatternError} from \"ajv/dist/vocabularies/validation/pattern\"\nimport limitProperties from \"ajv/dist/vocabularies/validation/limitProperties\"\nimport required, {RequiredError} from \"ajv/dist/vocabularies/validation/required\"\nimport limitItems from \"ajv/dist/vocabularies/validation/limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"ajv/dist/vocabularies/validation/uniqueItems\"\nimport constKeyword, {ConstError} from \"ajv/dist/vocabularies/validation/const\"\nimport enumKeyword, {EnumError} from \"ajv/dist/vocabularies/validation/enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n limitNumberExclusive,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n", "import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"ajv/dist/core\"\nimport coreVocabulary from \"./core\"\nimport validationDraft4 from \"./validation\"\nimport getApplicatorVocabulary from \"ajv/dist/vocabularies/applicator\"\nimport formatVocabulary from \"ajv/dist/vocabularies/format\"\n\nconst metadataVocabulary: Vocabulary = [\"title\", \"description\", \"default\"]\n\nconst draft4Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationDraft4,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n]\n\nexport default draft4Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n", "{\n \"id\": \"http://json-schema.org/draft-04/schema#\",\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"description\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"positiveInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"positiveIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/positiveInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n },\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": {},\n \"multipleOf\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"exclusiveMinimum\": true\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxLength\": {\"$ref\": \"#/definitions/positiveInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/positiveIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\n \"anyOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#\"}],\n \"default\": {}\n },\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": {}\n },\n \"maxItems\": {\"$ref\": \"#/definitions/positiveInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/positiveIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxProperties\": {\"$ref\": \"#/definitions/positiveInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/positiveIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\n \"anyOf\": [{\"type\": \"boolean\"}, {\"$ref\": \"#\"}],\n \"default\": {}\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"enum\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"dependencies\": {\n \"exclusiveMaximum\": [\"maximum\"],\n \"exclusiveMinimum\": [\"minimum\"]\n },\n \"default\": {}\n}\n", "import type {AnySchemaObject, Options} from \"ajv/dist/core\"\nimport AjvCore from \"ajv/dist/core\"\nimport draft4Vocabularies from \"./vocabulary/draft4\"\nimport discriminator from \"ajv/dist/vocabularies/discriminator\"\nimport * as draft4MetaSchema from \"./refs/json-schema-draft-04.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-04/schema\"\n\nclass Ajv extends AjvCore {\n constructor(opts: Options = {}) {\n super({\n ...opts,\n schemaId: \"id\",\n })\n }\n\n _addVocabularies(): void {\n super._addVocabularies()\n draft4Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft4MetaSchema, META_SUPPORT_DATA)\n : draft4MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"ajv/dist/types\"\n\nexport {\n Plugin,\n Options,\n CodeOptions,\n InstanceOptions,\n Logger,\n ErrorsTextOptions,\n} from \"ajv/dist/core\"\nexport {SchemaCxt, SchemaObjCxt} from \"ajv/dist/core\"\nexport {KeywordCxt} from \"ajv/dist/core\"\nexport {DefinedError} from \"ajv/dist/core\"\nexport {JSONType} from \"ajv/dist/core\"\nexport {JSONSchemaType} from \"ajv/dist/core\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"ajv/dist/core\"\n", "(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n", "'use strict';\n\n/**\n * Stringify/parse functions that don't operate\n * recursively, so they avoid call stack exceeded\n * errors.\n */\nexports.stringify = function stringify(input) {\n var queue = [];\n queue.push({obj: input});\n\n var res = '';\n var next, obj, prefix, val, i, arrayPrefix, keys, k, key, value, objPrefix;\n while ((next = queue.pop())) {\n obj = next.obj;\n prefix = next.prefix || '';\n val = next.val || '';\n res += prefix;\n if (val) {\n res += val;\n } else if (typeof obj !== 'object') {\n res += typeof obj === 'undefined' ? null : JSON.stringify(obj);\n } else if (obj === null) {\n res += 'null';\n } else if (Array.isArray(obj)) {\n queue.push({val: ']'});\n for (i = obj.length - 1; i >= 0; i--) {\n arrayPrefix = i === 0 ? '' : ',';\n queue.push({obj: obj[i], prefix: arrayPrefix});\n }\n queue.push({val: '['});\n } else { // object\n keys = [];\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n keys.push(k);\n }\n }\n queue.push({val: '}'});\n for (i = keys.length - 1; i >= 0; i--) {\n key = keys[i];\n value = obj[key];\n objPrefix = (i > 0 ? ',' : '');\n objPrefix += JSON.stringify(key) + ':';\n queue.push({obj: value, prefix: objPrefix});\n }\n queue.push({val: '{'});\n }\n }\n return res;\n};\n\n// Convenience function for the parse function.\n// This pop function is basically copied from\n// pouchCollate.parseIndexableString\nfunction pop(obj, stack, metaStack) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n}\n\nexports.parse = function (str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n var collationIndex,parsedNum,numChar;\n var parsedString,lastCh,numConsecutiveSlashes,ch;\n var arrayElement, objElement;\n while (true) {\n collationIndex = str[i++];\n if (collationIndex === '}' ||\n collationIndex === ']' ||\n typeof collationIndex === 'undefined') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack.pop(), stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case ' ':\n case '\\t':\n case '\\n':\n case ':':\n case ',':\n break;\n case 'n':\n i += 3; // 'ull'\n pop(null, stack, metaStack);\n break;\n case 't':\n i += 3; // 'rue'\n pop(true, stack, metaStack);\n break;\n case 'f':\n i += 4; // 'alse'\n pop(false, stack, metaStack);\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '-':\n parsedNum = '';\n i--;\n while (true) {\n numChar = str[i++];\n if (/[\\d\\.\\-e\\+]/.test(numChar)) {\n parsedNum += numChar;\n } else {\n i--;\n break;\n }\n }\n pop(parseFloat(parsedNum), stack, metaStack);\n break;\n case '\"':\n parsedString = '';\n lastCh = void 0;\n numConsecutiveSlashes = 0;\n while (true) {\n ch = str[i++];\n if (ch !== '\"' || (lastCh === '\\\\' &&\n numConsecutiveSlashes % 2 === 1)) {\n parsedString += ch;\n lastCh = ch;\n if (lastCh === '\\\\') {\n numConsecutiveSlashes++;\n } else {\n numConsecutiveSlashes = 0;\n }\n } else {\n break;\n }\n }\n pop(JSON.parse('\"' + parsedString + '\"'), stack, metaStack);\n break;\n case '[':\n arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '{':\n objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n default:\n throw new Error(\n 'unexpectedly reached end of input: ' + collationIndex);\n }\n }\n};\n", "import { Graffiti } from \"@graffiti-garden/api\";\nimport Ajv from \"ajv-draft-04\";\nimport { GraffitiLocalSessionManager } from \"./session-manager.js\";\nimport {\n GraffitiLocalDatabase,\n type GraffitiLocalOptions,\n} from \"./database.js\";\nimport { GraffitiSynchronize } from \"./synchronize.js\";\nimport { locationToUri, uriToLocation } from \"./utilities.js\";\n\nexport type { GraffitiLocalOptions };\n\n/**\n * A local implementation of the [Graffiti API](https://api.graffiti.garden/classes/Graffiti.html)\n * based on [PouchDB](https://pouchdb.com/). PouchDb will automatically persist data in a local\n * database, either in the browser or in Node.js.\n * It can also be configured to work with an external [CouchDB](https://couchdb.apache.org/) server,\n * although using it with a remote server will not be secure.\n */\nexport class GraffitiLocal extends Graffiti {\n locationToUri = locationToUri;\n uriToLocation = uriToLocation;\n\n login: Graffiti[\"login\"];\n logout: Graffiti[\"logout\"];\n sessionEvents: Graffiti[\"sessionEvents\"];\n put: Graffiti[\"put\"];\n get: Graffiti[\"get\"];\n patch: Graffiti[\"patch\"];\n delete: Graffiti[\"delete\"];\n discover: Graffiti[\"discover\"];\n recoverOrphans: Graffiti[\"recoverOrphans\"];\n synchronizeGet: Graffiti[\"synchronizeGet\"];\n synchronizeDiscover: Graffiti[\"synchronizeDiscover\"];\n synchronizeRecoverOrphans: Graffiti[\"synchronizeRecoverOrphans\"];\n channelStats: Graffiti[\"channelStats\"];\n\n constructor(options?: GraffitiLocalOptions) {\n super();\n\n const sessionManagerLocal = new GraffitiLocalSessionManager();\n this.login = sessionManagerLocal.login.bind(sessionManagerLocal);\n this.logout = sessionManagerLocal.logout.bind(sessionManagerLocal);\n this.sessionEvents = sessionManagerLocal.sessionEvents;\n\n const ajv = new Ajv({ strict: false });\n const graffitiPouchDbBase = new GraffitiLocalDatabase(options, ajv);\n const graffitiSynchronize = new GraffitiSynchronize(\n graffitiPouchDbBase,\n ajv,\n );\n\n this.put = graffitiSynchronize.put.bind(graffitiSynchronize);\n this.get = graffitiSynchronize.get.bind(graffitiSynchronize);\n this.patch = graffitiSynchronize.patch.bind(graffitiSynchronize);\n this.delete = graffitiSynchronize.delete.bind(graffitiSynchronize);\n this.discover = graffitiSynchronize.discover.bind(graffitiSynchronize);\n this.recoverOrphans =\n graffitiSynchronize.recoverOrphans.bind(graffitiPouchDbBase);\n this.channelStats =\n graffitiPouchDbBase.channelStats.bind(graffitiPouchDbBase);\n this.synchronizeDiscover =\n graffitiSynchronize.synchronizeDiscover.bind(graffitiSynchronize);\n this.synchronizeGet =\n graffitiSynchronize.synchronizeGet.bind(graffitiSynchronize);\n this.synchronizeRecoverOrphans =\n graffitiSynchronize.synchronizeRecoverOrphans.bind(graffitiSynchronize);\n }\n}\n", "import type {\n GraffitiLocation,\n GraffitiObject,\n GraffitiObjectBase,\n GraffitiPatch,\n GraffitiSession,\n GraffitiPutObject,\n GraffitiStream,\n ChannelStats,\n} from \"./2-types\";\nimport type { JSONSchema4 } from \"json-schema\";\n\n/**\n * This API describes a small but powerful set of methods that\n * can be used to create many different kinds of social media applications,\n * all of which can interoperate.\n * These methods should satisfy all of an application's needs for\n * the communication, storage, and access management of social data.\n * The rest of the application can be built with standard client-side\n * user interface tools to present and interact with the data \u2014\n * no server code necessary.\n * The Typescript source for this API is available at\n * [graffiti-garden/api](https://github.com/graffiti-garden/api).\n *\n * There are several different implementations of this Graffiti API available,\n * including a [federated implementation](https://github.com/graffiti-garden/implementation-federated),\n * that lets users choose where their data is stored,\n * and a [local implementation](https://github.com/graffiti-garden/implementation-local)\n * that can be used for testing and development. In our design of Graffiti, this API is our\n * primary focus as it is the layer that shapes the experience\n * of developing applications. While different implementations can provide tradeoffs between\n * other important properties (e.g. privacy, security, scalability), those properties\n * are useless if the system as a whole doesn't expose useful functionality to developers.\n *\n * On the other side of the stack, there is [Vue plugin](https://github.com/graffiti-garden/wrapper-vue/)\n * that wraps around this API to provide reactivity. Other high-level libraries\n * will be available in the future.\n *\n * ## Overview\n *\n * Graffiti provides applications with methods to create and store data\n * on behalf of their users using standard CRUD operations:\n * {@link put}, {@link get}, {@link patch}, and {@link delete}.\n * This data can represent both social artifacts (e.g. posts, profiles) and\n * activities (e.g. likes, follows) and is stored as JSON.\n *\n * The social aspect of Graffiti comes from the {@link discover} method\n * which allows applications to find objects that other users made.\n * It is a lot like a traditional query operation, but it only\n * returns objects that have been placed in particular\n * {@link GraffitiObjectBase.channels | `channels`}\n * specified by the discovering application.\n *\n * Graffiti builds on well known concepts and standards wherever possible.\n * JSON Objects can be typed with [JSON Schema](https://json-schema.org/) and patches\n * can be applied with [JSON Patch](https://jsonpatch.com).\n * For interoperability between Graffiti applications, we recommend that\n * objects use established properties from the\n * [Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/) when available,\n * however it is always possible to create additional properties, contributing\n * to the broader [folksonomy](https://en.wikipedia.org/wiki/Folksonomy).\n *\n * {@link GraffitiObjectBase.channels | `channels`} are one of the major concepts\n * unique to Graffiti along with *interaction relativity*.\n * Channels create boundaries between public spaces and work to prevent\n * [context collapse](https://en.wikipedia.org/wiki/Context_collapse)\n * even in a highly interoperable environment.\n * Interaction relativity means that all interactions between users are\n * actually atomic single-user operations that can be interpreted in different ways,\n * which also supports interoperability and pluralism.\n *\n * ### Channels\n *\n * {@link GraffitiObjectBase.channels | `channels`}\n * are a way for the creators of social data to express the intended audience of their\n * data. When a user creates data using the {@link put} method, they\n * can place their data in one or more channels.\n * Content consumers using the {@link discover} method will only see data\n * contained in one of the channels they specify.\n *\n * While many channels may be public, they partition\n * the public into different \"contexts\", mitigating the\n * phenomenon of [context collapse](https://en.wikipedia.org/wiki/Context_collapse) or the \"flattening of multiple audiences.\"\n * Any [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) can be used as a channel, and so channels can represent people,\n * comment threads, topics, places (real or virtual), pieces of media, and more.\n *\n * For example, consider a comment on a post. If we place that comment in the channel\n * represented by the post's URI, then only people viewing the post will know to\n * look in that channel, giving it visibility akin to a comment on a blog post\n * or comment on Instagram ([since 2019](https://www.buzzfeednews.com/article/katienotopoulos/instagrams-following-activity-tab-is-going-away)).\n * If we also place the comment in the channel represented by the commenter's URI (their\n * {@link GraffitiObjectBase.actor | `actor` URI}), then people viewing the commenter's profile\n * will also see the comment, giving it more visibility, like a reply on Twitter.\n * If we *only* place the comment in the channel represented by the commenter's URI, then\n * it becomes like a quote tweet ([prior to 2020](https://x.com/Support/status/1300555325750292480)),\n * where the comment is only visible to the commenter's followers but not the audience\n * of the original post.\n *\n * The channel model differs from other models of communication such as the\n * [actor model](https://www.w3.org/TR/activitypub/#Overview) used by ActivityPub,\n * the protocol underlying Mastodon, or the [firehose model](https://bsky.social/about/blog/5-5-2023-federation-architecture)\n * used by the AT Protocol, the protocol underlying BlueSky.\n * The actor model is a fusion of direct messaging (like Email) and broadcasting\n * (like RSS) and works well for follow-based communication but struggles\n * to pass information via other rendez-vous.\n * In the actor model, even something as simple as comments can be\n * [very tricky and require server \"side effects\"](https://seb.jambor.dev/posts/understanding-activitypub-part-3-the-state-of-mastodon/).\n * The firehose model dumps all user data into one public database,\n * which doesn't allow for the carving out of different contexts that we did in our comment\n * example above. In the firehose model a comment will always be visible to *both* the original post's audience and\n * the commenter's followers.\n *\n * In some sense, channels provide a sort of \"social access control\" by forming\n * expectations about the audiences of different online spaces.\n * As a real world analogy, oftentimes support groups, such as alcoholics\n * anonymous, are open to the public but people in those spaces feel comfortable sharing intimate details\n * because they have expectations about the other people attending.\n * If someone malicious went to support groups just to spread people's secrets,\n * they would be shamed for violating these norms.\n * Similarly, in Graffiti, while you could spider public channels like a search engine\n * to find content about a person, revealing that you've done such a thing\n * would be shameful.\n *\n * Still, social access control is not perfect and so in situations where privacy is important,\n * objects can also be given\n * an {@link GraffitiObjectBase.allowed | `allowed`} list.\n * For example, to send someone a direct message you should put an object representing\n * that message in the channel that represents them (their {@link GraffitiObjectBase.actor | `actor` URI}),\n * so they can find it, *and* set the `allowed` field to only include the recipient,\n * so only they can read it.\n *\n * ### Interaction relativity\n *\n * Interaction relativity posits that \"interaction between two individuals only\n * exists relative to an observer,\" or equivalently, all interaction is [reified](https://en.wikipedia.org/wiki/Reification_(computer_science)).\n * For example, if one user creates a post and another user wants to \"like\" that post,\n * their like is not modifying the original post, it is simply another data object that points\n * to the post being liked, via its {@link locationToUri | URI}.\n *\n * ```json\n * {\n * activity: 'like',\n * target: 'uri-of-the-post-i-like',\n * actor: 'my-user-id'\n * }\n * ```\n *\n * In Graffiti, all interactions including *moderation* and *collaboration* are relative.\n * This means that applications can freely choose which interactions\n * they want to express to their users and how.\n * For example, one application could have a single fixed moderator,\n * another could allow users to choose which moderators they would like filter their content\n * like [Bluesky's stackable moderation](https://bsky.social/about/blog/03-12-2024-stackable-moderation),\n * and another could implement a fully democratic system like [PolicyKit](https://policykit.org/).\n * Each of these applications is one interpretation of the underlying refieid user interactions and\n * users can freely switch between them.\n *\n * Interaction relativy also allows applications to introduce new sorts of interactions\n * without having to coordinate with all the other existing applications,\n * keeping the ecosystem flexible and interoperable.\n * For example, an application could [add a \"Trust\" button to posts](https://social.cs.washington.edu/pub_details.html?id=trustnet)\n * and use it assess the truthfulness of posts made on applications across Graffiti.\n * New sorts of interactions like these can be smoothly absorbed by the broader ecosystem\n * as a [folksonomy](https://en.wikipedia.org/wiki/Folksonomy).\n *\n * Interactivy relativity is realized in Graffiti through two design decisions:\n * 1. The creators of objects can only modify their own objects. It is important for\n * users to be able to change and delete their own content to respect their\n * [right to be forgotten](https://en.wikipedia.org/wiki/Right_to_be_forgotten),\n * but beyond self-correction and self-censorship all other interaction is reified.\n * Many interactions can be reified via pointers, as in the \"like\" example above, and collaborative\n * edits can be refieid via [CRDTs](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type).\n * 2. No one owns channels. Unlike IRC/Slack channels or [Matrix rooms](https://matrix.org/docs/matrix-concepts/rooms_and_events/),\n * anyone can post to any channel, so long as they know the URI of that channel.\n * It is up to applications to hide content from channels either according to manual\n * filters or in response to user action.\n * For example, a user may create a post with the flag `disableReplies`.\n * Applications could then filter out any content from the replies channel\n * that the original poster has not specifically approved.\n *\n * ## Implementing the API\n *\n * To implement the API, first install it:\n *\n * ```bash\n * npm install @graffiti-garden/api\n * ```\n *\n * Then create a class that extends the `Graffiti` class and implement the abstract methods.\n *\n * ```typescript\n * import { Graffiti } from \"@graffiti-garden/api\";\n *\n * class MyGraffitiImplementation extends Graffiti {\n * // Implement the abstract methods here\n * }\n * ```\n * ### Testing\n *\n * We have written a number of unit tests written with [vitest](https://vitest.dev/)\n * that can be used to verify implementations of the API.\n * To use them, create a test file in that ends in `*.spec.ts` and format it as follows:\n *\n * ```typescript\n * import { graffitiCRUDTests } from \"@graffiti-garden/api/tests\";\n *\n * const useGraffiti = () => new MyGraffitiImplementation();\n * // Fill in with implementation-specific information\n * // to provide to valid actor sessions for the tests\n * // to use as identities.\n * const useSession1 = () => ({ actor: \"someone\" });\n * const useSession2 = () => ({ actor: \"someoneelse\" });\n *\n * // Run the tests\n * graffitiCRUDTests(useGraffiti, useSession1, useSession2);\n * ```\n *\n * Then run the tests in the root of your directory with:\n *\n * ```bash\n * npx vitest\n * ```\n *\n * ## Building the Documentation\n *\n * To build the [TypeDoc](https://typedoc.org/) documentation, run the following commands:\n *\n * ```bash\n * npm run install\n * npm run docs\n * ```\n *\n * Then run a local server to view the documentation:\n *\n * ```bash\n * cd docs\n * npx http-server\n * ```\n *\n * ## TODO\n *\n * - Implement scope.\n *\n * @groupDescription CRUD Methods\n * Methods for {@link put | creating}, {@link get | reading}, {@link patch | updating},\n * and {@link delete | deleting} {@link GraffitiObjectBase | Graffiti objects}.\n * @groupDescription Query Methods\n * Methods that retrieve or accumulate information about multiple {@link GraffitiObjectBase | Graffiti objects} at a time.\n * @groupDescription Session Management\n * Methods and properties for logging in and out of a Graffiti implementation.\n * @groupDescription Utilities\n * Methods for for converting Graffiti objects to and from URIs.\n */\nexport abstract class Graffiti {\n /**\n * Converts a {@link GraffitiLocation} object containing a\n * {@link GraffitiObjectBase.name | `name`}, {@link GraffitiObjectBase.actor | `actor`},\n * and {@link GraffitiObjectBase.source | `source`} into a globally unique URI.\n * The form of this URI is implementation dependent.\n *\n * Its exact inverse is {@link uriToLocation}.\n *\n * @group Utilities\n */\n abstract locationToUri(location: GraffitiLocation): string;\n\n /**\n * Parses a globally unique Graffiti URI into a {@link GraffitiLocation}\n * object containing a {@link GraffitiObjectBase.name | `name`},\n * {@link GraffitiObjectBase.actor | `actor`}, and {@link GraffitiObjectBase.source | `source`}.\n *\n * Its exact inverse is {@link locationToUri}.\n *\n * @group Utilities\n */\n abstract uriToLocation(uri: string): GraffitiLocation;\n\n /**\n * An alias of {@link locationToUri}\n *\n * @group Utilities\n */\n objectToUri(object: GraffitiObjectBase) {\n return this.locationToUri(object);\n }\n\n /**\n * Creates a new {@link GraffitiObjectBase | object} or replaces an existing object.\n * An object can only be replaced by the same {@link GraffitiObjectBase.actor | `actor`}\n * that created it.\n *\n * Replacement occurs when the {@link GraffitiLocation} properties of the supplied object\n * ({@link GraffitiObjectBase.name | `name`}, {@link GraffitiObjectBase.actor | `actor`},\n * and {@link GraffitiObjectBase.source | `source`}) exactly match the location of an existing object.\n *\n * @returns The object that was replaced if one exists or an object with\n * with a `null` {@link GraffitiObjectBase.value | `value`} if this method\n * created a new object.\n * The object will have a {@link GraffitiObjectBase.tombstone | `tombstone`}\n * field set to `true` and a {@link GraffitiObjectBase.lastModified | `lastModified`}\n * field updated to the time of replacement/creation.\n *\n * @group CRUD Methods\n */\n abstract put<Schema>(\n /**\n * The object to be put. This object is statically type-checked against the [JSON schema](https://json-schema.org/) that can be optionally provided\n * as the generic type parameter. We highly recommend providing a schema to\n * ensure that the PUT object matches subsequent {@link get} or {@link discover}\n * methods.\n */\n object: GraffitiPutObject<Schema>,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): Promise<GraffitiObjectBase>;\n\n /**\n * Retrieves an object from a given location.\n *\n * The retrieved object is type-checked against the provided [JSON schema](https://json-schema.org/)\n * otherwise a {@link GraffitiErrorSchemaMismatch} is thrown.\n *\n * If the object existed but has since been deleted,\n * or the retrieving {@link GraffitiObjectBase.actor | `actor`}\n * was {@link GraffitiObjectBase.allowed | `allowed`} to access\n * the object but now isn't, this method will return the latest\n * version of the object that the {@link GraffitiObjectBase.actor | `actor`}\n * was allowed to access with its {@link GraffitiObjectBase.tombstone | `tombstone`}\n * set to `true`, so long as that version is still cached.\n *\n * Otherwise, if the object never existed, or the\n * retrieving {@link GraffitiObjectBase.actor | `actor`} was never\n * {@link GraffitiObjectBase.allowed | `allowed`} to access it, or if\n * the object was changed long enough ago that its history has been\n * purged from the cache, a {@link GraffitiErrorNotFound} is thrown.\n * The rate at which the cache is purged is implementation dependent.\n * See the `tombstoneReturn` property returned by {@link discover}.\n *\n * @group CRUD Methods\n */\n abstract get<Schema extends JSONSchema4>(\n /**\n * The location of the object to get.\n */\n locationOrUri: GraffitiLocation | string,\n /**\n * The JSON schema to validate the retrieved object against.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}. If no `session` is provided,\n * the retrieved object's {@link GraffitiObjectBase.allowed | `allowed`}\n * property must be `undefined`.\n */\n session?: GraffitiSession | null,\n ): Promise<GraffitiObject<Schema>>;\n\n /**\n * Patches an existing object at a given location.\n * The patching {@link GraffitiObjectBase.actor | `actor`} must be the same as the\n * `actor` that created the object.\n *\n * @returns The object that was deleted if one exists or an object with\n * with a `null` {@link GraffitiObjectBase.value | `value`} otherwise.\n * The object will have a {@link GraffitiObjectBase.tombstone | `tombstone`}\n * field set to `true` and a {@link GraffitiObjectBase.lastModified | `lastModified`}\n * field updated to the time of deletion.\n *\n * @group CRUD Methods\n */\n abstract patch(\n /**\n * A collection of [JSON Patch](https://jsonpatch.com) operations\n * to apply to the object. See {@link GraffitiPatch} for more information.\n */\n patch: GraffitiPatch,\n /**\n * The location of the object to patch.\n */\n locationOrUri: GraffitiLocation | string,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): Promise<GraffitiObjectBase>;\n\n /**\n * Deletes an object from a given location.\n * The deleting {@link GraffitiObjectBase.actor | `actor`} must be the same as the\n * `actor` that created the object.\n *\n * If the object does not exist or has already been deleted,\n * {@link GraffitiErrorNotFound} is thrown.\n *\n * @returns The object that was deleted if one exists or an object with\n * with a `null` {@link GraffitiObjectBase.value | `value`} otherwise.\n * The object will have a {@link GraffitiObjectBase.tombstone | `tombstone`}\n * field set to `true` and a {@link GraffitiObjectBase.lastModified | `lastModified`}\n * field updated to the time of deletion.\n *\n * @group CRUD Methods\n */\n abstract delete(\n /**\n * The location of the object to delete.\n */\n locationOrUri: GraffitiLocation | string,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): Promise<GraffitiObjectBase>;\n\n /**\n * Discovers objects created by any user that are contained\n * in at least one of the given {@link GraffitiObjectBase.channels | `channels`}\n * and match the given [JSON Schema](https://json-schema.org).\n *\n * Objects are returned asynchronously as they are discovered but the stream\n * will end once all leads have been exhausted.\n * The method must be polled again for new objects.\n *\n * `discover` will not return objects that the {@link GraffitiObjectBase.actor | `actor`}\n * is not {@link GraffitiObjectBase.allowed | `allowed`} to access.\n * If the actor is not the creator of a discovered object,\n * the allowed list will be masked to only contain the querying actor if the\n * allowed list is not `undefined` (public). Additionally, if the actor is not the\n * creator of a discovered object, any {@link GraffitiObjectBase.channels | `channels`}\n * not specified by the `discover` method will not be revealed. This masking happens\n * before the supplied schema is applied.\n *\n * {@link discover} can be used in conjunction with {@link synchronizeDiscover}\n * to provide a responsive and consistent user experience.\n *\n * Since different implementations may fetch data from multiple sources there is\n * no guarentee on the order that objects are returned in. Additionally, the method\n * will return objects that have been deleted but with a\n * {@link GraffitiObjectBase.tombstone | `tombstone`} field set to `true` for\n * cache invalidation purposes.\n * The final `return()` value of the stream includes a `tombstoneRetention`\n * property that represents the minimum amount of time,\n * in milliseconds, that an application will retain and return tombstones for objects that\n * have been deleted.\n *\n * When repolling, the {@link GraffitiObjectBase.lastModified | `lastModified`}\n * field can be queried via the schema to\n * only fetch objects that have been modified since the last poll.\n * Such queries should only be done if the time since the last poll\n * is less than the `tombstoneRetention` value of that poll, otherwise the tombstones\n * for objects that have been deleted may not be returned.\n *\n * ```json\n * {\n * \"properties\": {\n * \"lastModified\": {\n * \"minimum\": LAST_RETRIEVED_TIME\n * }\n * }\n * }\n * ```\n *\n * `discover` needs to be polled for new data because live updates to\n * an application can be visually distracting or lead to toxic engagement.\n * If and when an application wants real-time updates, such as in a chat\n * application, application authors must be intentional about their polling.\n *\n * Implementers should be aware that some users may applications may try to poll\n * {@link discover} repetitively. You can deal with this by rate limiting or\n * preemptively fetching data via a bidirectional channel, like a WebSocket.\n * Additionally, implementers should probably index the `lastModified` field\n * to speed up responses to schemas like the one above.\n *\n * @returns A stream of objects that match the given {@link GraffitiObjectBase.channels | `channels`}\n * and [JSON Schema](https://json-schema.org).\n *\n * @group Query Methods\n */\n abstract discover<Schema extends JSONSchema4>(\n /**\n * The {@link GraffitiObjectBase.channels | `channels`} that objects must be associated with.\n */\n channels: string[],\n /**\n * A [JSON Schema](https://json-schema.org) that objects must satisfy.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}. If no `session` is provided,\n * only objects that have no {@link GraffitiObjectBase.allowed | `allowed`}\n * property will be returned.\n */\n session?: GraffitiSession | null,\n ): GraffitiStream<\n GraffitiObject<Schema>,\n {\n tombstoneRetention: number;\n }\n >;\n\n /**\n * Discovers objects **not** contained in any\n * {@link GraffitiObjectBase.channels | `channels`}\n * that were created by the querying {@link GraffitiObjectBase.actor | `actor`}\n * and match the given [JSON Schema](https://json-schema.org).\n * Unlike {@link discover}, this method will not return objects created by other users.\n *\n * This method is not useful for most applications, but necessary for\n * getting a global view of all a user's Graffiti data or debugging\n * channel usage.\n *\n * It's return value is the same as {@link discover}.\n *\n * @group Query Methods\n */\n abstract recoverOrphans<Schema extends JSONSchema4>(\n /**\n * A [JSON Schema](https://json-schema.org) that orphaned objects must satisfy.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): GraffitiStream<\n GraffitiObject<Schema>,\n {\n tombstoneRetention: number;\n }\n >;\n\n /**\n * Returns statistics about all the {@link GraffitiObjectBase.channels | `channels`}\n * that an {@link GraffitiObjectBase.actor | `actor`} has posted to.\n * This is not very useful for most applications, but\n * necessary for certain applications where a user wants a\n * global view of all their Graffiti data or to debug\n * channel usage.\n *\n * @group Query Methods\n *\n * @returns A stream of statistics for each {@link GraffitiObjectBase.channels | `channel`}\n * that the {@link GraffitiObjectBase.actor | `actor`} has posted to.\n */\n abstract channelStats(\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): GraffitiStream<ChannelStats>;\n\n /**\n * Begins the login process. Depending on the implementation, this may\n * involve redirecting the user to a login page or opening a popup,\n * so it should always be called in response to a user action.\n *\n * The {@link GraffitiSession | session} object is returned\n * asynchronously via {@link Graffiti.sessionEvents | sessionEvents}\n * as a {@link GraffitiLoginEvent} with event type `login`.\n *\n * @group Session Management\n */\n abstract login(\n /**\n * Suggestions for the permissions that the\n * login process should grant. The login process may not\n * provide the exact proposed permissions.\n */\n proposal?: {\n /**\n * A suggested actor to login as. For example, if a user tries to\n * edit a post but are not logged in, the interface can infer that\n * they might want to log in as the actor who created the post\n * they are attempting to edit.\n *\n * Even if provided, the implementation should allow the user\n * to log in as a different actor if they choose.\n */\n actor?: string;\n /**\n * A yet to be defined permissions scope. An application may use\n * this to indicate the minimum necessary scope needed to\n * operate. For example, it may need to be able read private\n * messages from a certain set of channels, or write messages that\n * follow a particular schema.\n *\n * The login process should make it clear what scope an application\n * is requesting and allow the user to enhance or reduce that\n * scope as necessary.\n */\n scope?: {};\n },\n ): Promise<void>;\n\n /**\n * Begins the logout process. Depending on the implementation, this may\n * involve redirecting the user to a logout page or opening a popup,\n * so it should always be called in response to a user action.\n *\n * A confirmation will be returned asynchronously via\n * {@link Graffiti.sessionEvents | sessionEvents}\n * as a {@link GraffitiLogoutEvent} as event type `logout`.\n *\n * @group Session Management\n */\n abstract logout(\n /**\n * The {@link GraffitiSession | session} object to logout.\n */\n session: GraffitiSession,\n ): Promise<void>;\n\n /**\n * An event target that can be used to listen for the following\n * events and they're corresponding event types:\n * - `login` - {@link GraffitiLoginEvent}\n * - `logout` - {@link GraffitiLogoutEvent}\n * - `initialized` - {@link GraffitiSessionInitializedEvent}\n *\n * @group Session Management\n */\n abstract readonly sessionEvents: EventTarget;\n\n /**\n * This method has the same signature as {@link discover} but listens for\n * changes made via {@link put}, {@link patch}, and {@link delete} or\n * fetched from {@link get}, {@link discover}, and {@link recoverOrphans}\n * and then streams appropriate changes to provide a responsive and\n * consistent user experience.\n *\n * Unlike {@link discover}, this method continuously listens for changes\n * and will not terminate unless the user calls the `return` method on the iterator\n * or `break`s out of the loop.\n *\n * Example 1: Suppose a user publishes a post using {@link put}. If the feed\n * displaying that user's posts is using {@link synchronizeDiscover} to listen for changes,\n * then the user's new post will instantly appear in their feed, giving the UI a\n * responsive feel.\n *\n * Example 2: Suppose one of a user's friends changes their name. As soon as the\n * user's application receives one notice of that change (using {@link get}\n * or {@link discover}), then {@link synchronizeDiscover} listeners can be used to update\n * all instance's of that friend's name in the user's application instantly,\n * providing a consistent user experience.\n *\n * @group Synchronize Methods\n */\n abstract synchronizeDiscover<Schema extends JSONSchema4>(\n /**\n * The {@link GraffitiObjectBase.channels | `channels`} that the objects must be associated with.\n */\n channels: string[],\n /**\n * A [JSON Schema](https://json-schema.org) that objects must satisfy.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}. If no `session` is provided,\n * only objects that have no {@link GraffitiObjectBase.allowed | `allowed`}\n * property will be returned.\n */\n session?: GraffitiSession | null,\n ): GraffitiStream<GraffitiObject<Schema>>;\n\n /**\n * This method has the same signature as {@link get} but, like {@link synchronizeDiscover},\n * it listens for changes made via {@link put}, {@link patch}, and {@link delete} or\n * fetched from {@link get}, {@link discover}, and {@link recoverOrphans} and then\n * streams appropriate changes to provide a responsive and consistent user experience.\n *\n * Unlike {@link get}, which returns a single result, this method continuously\n * listens for changes which are output as an asynchronous {@link GraffitiStream}.\n *\n * @group Synchronize Methods\n */\n abstract synchronizeGet<Schema extends JSONSchema4>(\n /**\n * The location of the object to get.\n */\n locationOrUri: GraffitiLocation | string,\n /**\n * The JSON schema to validate the retrieved object against.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}. If no `session` is provided,\n * the retrieved object's {@link GraffitiObjectBase.allowed | `allowed`}\n * property must be `undefined`.\n */\n session?: GraffitiSession | null,\n ): GraffitiStream<GraffitiObject<Schema>>;\n\n /**\n * This method has the same signature as {@link recoverOrphans} but,\n * like {@link synchronizeDiscover}, it listens for changes made via\n * {@link put}, {@link patch}, and {@link delete} or fetched from\n * {@link get}, {@link discover}, and {@link recoverOrphans} and then\n * streams appropriate changes to provide a responsive and consistent user experience.\n *\n * Unlike {@link recoverOrphans}, this method continuously listens for changes\n * and will not terminate unless the user calls the `return` method on the iterator\n * or `break`s out of the loop.\n *\n * @group Synchronize Methods\n */\n abstract synchronizeRecoverOrphans<Schema extends JSONSchema4>(\n /**\n * A [JSON Schema](https://json-schema.org) that orphaned objects must satisfy.\n */\n schema: Schema,\n /**\n * An implementation-specific object with information to authenticate the\n * {@link GraffitiObjectBase.actor | `actor`}.\n */\n session: GraffitiSession,\n ): GraffitiStream<GraffitiObject<Schema>>;\n}\n\n/**\n * This is a factory function that produces an instance of\n * the {@link Graffiti} class. Since the Graffiti class is\n * abstract, factory functions provide an easy way to\n * swap out different implementations.\n */\nexport type GraffitiFactory = () => Graffiti;\n", "export class GraffitiErrorUnauthorized extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorUnauthorized\";\n Object.setPrototypeOf(this, GraffitiErrorUnauthorized.prototype);\n }\n}\n\nexport class GraffitiErrorForbidden extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorForbidden\";\n Object.setPrototypeOf(this, GraffitiErrorForbidden.prototype);\n }\n}\n\nexport class GraffitiErrorNotFound extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorNotFound\";\n Object.setPrototypeOf(this, GraffitiErrorNotFound.prototype);\n }\n}\n\nexport class GraffitiErrorInvalidSchema extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorInvalidSchema\";\n Object.setPrototypeOf(this, GraffitiErrorInvalidSchema.prototype);\n }\n}\n\nexport class GraffitiErrorSchemaMismatch extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorSchemaMismatch\";\n Object.setPrototypeOf(this, GraffitiErrorSchemaMismatch.prototype);\n }\n}\n\nexport class GraffitiErrorPatchTestFailed extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorPatchTestFailed\";\n Object.setPrototypeOf(this, GraffitiErrorPatchTestFailed.prototype);\n }\n}\n\nexport class GraffitiErrorPatchError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorPatchError\";\n Object.setPrototypeOf(this, GraffitiErrorPatchError.prototype);\n }\n}\n\nexport class GraffitiErrorInvalidUri extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorInvalidUri\";\n Object.setPrototypeOf(this, GraffitiErrorInvalidUri.prototype);\n }\n}\n", "import type {\n Graffiti,\n GraffitiLoginEvent,\n GraffitiLogoutEvent,\n GraffitiSessionInitializedEvent,\n} from \"@graffiti-garden/api\";\n\n/**\n * A class that implements the login methods\n * of the [Graffiti API]() for use in the browser.\n * It is completely insecure and should only be used\n * for testing and demonstrations.\n *\n * It uses `localStorage` to store login state and\n * window prompts rather than an oauth flow for log in.\n * It can be used in node.js but will not persist\n * login state and a proposed username must be provided.\n */\nexport class GraffitiLocalSessionManager {\n sessionEvents: Graffiti[\"sessionEvents\"] = new EventTarget();\n\n constructor() {\n // Look for any existing sessions\n const sessionRestorer = async () => {\n // Allow listeners to be added first\n await Promise.resolve();\n\n // Restore previous sessions\n for (const actor of this.getLoggedInActors()) {\n const event: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: { session: { actor } },\n });\n this.sessionEvents.dispatchEvent(event);\n }\n\n const event: GraffitiSessionInitializedEvent = new CustomEvent(\n \"initialized\",\n { detail: {} },\n );\n this.sessionEvents.dispatchEvent(event);\n };\n sessionRestorer();\n }\n\n loggedInActors: string[] = [];\n\n protected getLoggedInActors(): string[] {\n if (typeof window !== \"undefined\") {\n const actorsString = window.localStorage.getItem(\"graffiti-actor\");\n return actorsString\n ? actorsString.split(\",\").map(decodeURIComponent)\n : [];\n } else {\n return this.loggedInActors;\n }\n }\n\n protected setLoggedInActors(actors: string[]) {\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\n \"graffiti-actor\",\n actors.map(encodeURIComponent).join(\",\"),\n );\n } else {\n this.loggedInActors = actors;\n }\n }\n\n login: Graffiti[\"login\"] = async (proposal) => {\n let actor = proposal?.actor;\n if (!actor && typeof window !== \"undefined\") {\n const response = window.prompt(\n `This is an insecure implementation of the Graffiti API \\\n for *demo purposes only*. Do not store any sensitive information \\\n here.\\\n \\n\\n\\\n Simply choose a username to log in.`,\n );\n if (response) actor = response;\n }\n\n let detail: GraffitiLoginEvent[\"detail\"];\n if (!actor) {\n detail = {\n error: new Error(\"No actor ID provided to login\"),\n };\n } else {\n const existingActors = this.getLoggedInActors();\n if (!existingActors.includes(actor)) {\n this.setLoggedInActors([...existingActors, actor]);\n }\n\n detail = {\n session: { actor },\n };\n }\n\n const event: GraffitiLoginEvent = new CustomEvent(\"login\", { detail });\n this.sessionEvents.dispatchEvent(event);\n };\n\n logout: Graffiti[\"logout\"] = async (session) => {\n const existingActors = this.getLoggedInActors();\n const exists = existingActors.includes(session.actor);\n if (exists) {\n this.setLoggedInActors(\n existingActors.filter((actor) => actor !== session.actor),\n );\n }\n\n const detail: GraffitiLogoutEvent[\"detail\"] = exists\n ? {\n actor: session.actor,\n }\n : {\n actor: session.actor,\n error: new Error(\"Not logged in with that actor\"),\n };\n\n const event: GraffitiLogoutEvent = new CustomEvent(\"logout\", { detail });\n this.sessionEvents.dispatchEvent(event);\n };\n}\n", "import type {\n Graffiti,\n GraffitiObjectBase,\n GraffitiLocation,\n JSONSchema4,\n} from \"@graffiti-garden/api\";\nimport {\n GraffitiErrorNotFound,\n GraffitiErrorSchemaMismatch,\n GraffitiErrorForbidden,\n GraffitiErrorPatchError,\n} from \"@graffiti-garden/api\";\nimport PouchDB from \"pouchdb\";\nimport {\n locationToUri,\n unpackLocationOrUri,\n randomBase64,\n applyGraffitiPatch,\n attemptAjvCompile,\n maskGraffitiObject,\n isActorAllowedGraffitiObject,\n isObjectNewer,\n} from \"./utilities.js\";\nimport { Repeater } from \"@repeaterjs/repeater\";\nimport Ajv from \"ajv-draft-04\";\nimport { applyPatch } from \"fast-json-patch\";\n\n/**\n * Constructor options for the GraffitiPoubchDB class.\n */\nexport interface GraffitiLocalOptions {\n /**\n * Options to pass to the PouchDB constructor.\n * Defaults to `{ name: \"graffitiDb\" }`.\n *\n * See the [PouchDB documentation](https://pouchdb.com/api.html#create_database)\n * for available options.\n */\n pouchDBOptions?: PouchDB.Configuration.DatabaseConfiguration;\n /**\n * Defines the name of the {@link https://api.graffiti.garden/interfaces/GraffitiObjectBase.html#source | `source` }\n * under which to store objects.\n * Defaults to `\"local\"`.\n */\n sourceName?: string;\n /**\n * The time in milliseconds to keep tombstones before deleting them.\n * See the {@link https://api.graffiti.garden/classes/Graffiti.html#discover | `discover` }\n * documentation for more information.\n */\n tombstoneRetention?: number;\n}\n\n/**\n * An implementation of only the database operations of the\n * GraffitiAPI without synchronization or session management.\n */\nexport class GraffitiLocalDatabase\n implements\n Pick<\n Graffiti,\n | \"get\"\n | \"put\"\n | \"patch\"\n | \"delete\"\n | \"discover\"\n | \"recoverOrphans\"\n | \"channelStats\"\n >\n{\n protected readonly db: PouchDB.Database<GraffitiObjectBase>;\n protected readonly source: string = \"local\";\n protected readonly tombstoneRetention: number = 86400000; // 1 day in ms\n protected readonly ajv: Ajv;\n\n constructor(options?: GraffitiLocalOptions, ajv?: Ajv) {\n this.ajv = ajv ?? new Ajv({ strict: false });\n this.source = options?.sourceName ?? this.source;\n this.tombstoneRetention =\n options?.tombstoneRetention ?? this.tombstoneRetention;\n const pouchDbOptions = {\n name: \"graffitiDb\",\n ...options?.pouchDBOptions,\n };\n this.db = new PouchDB<GraffitiObjectBase>(\n pouchDbOptions.name,\n pouchDbOptions,\n );\n\n this.db\n //@ts-ignore\n .put({\n _id: \"_design/indexes\",\n views: {\n objectsPerChannelAndLastModified: {\n map: function (object: GraffitiObjectBase) {\n const paddedLastModified = object.lastModified\n .toString()\n .padStart(15, \"0\");\n object.channels.forEach(function (channel) {\n const id =\n encodeURIComponent(channel) + \"/\" + paddedLastModified;\n //@ts-ignore\n emit(id);\n });\n }.toString(),\n },\n orphansPerActorAndLastModified: {\n map: function (object: GraffitiObjectBase) {\n if (object.channels.length === 0) {\n const paddedLastModified = object.lastModified\n .toString()\n .padStart(15, \"0\");\n const id =\n encodeURIComponent(object.actor) + \"/\" + paddedLastModified;\n //@ts-ignore\n emit(id);\n }\n }.toString(),\n },\n channelStatsPerActor: {\n map: function (object: GraffitiObjectBase) {\n if (object.tombstone) return;\n object.channels.forEach(function (channel) {\n const id =\n encodeURIComponent(object.actor) +\n \"/\" +\n encodeURIComponent(channel);\n //@ts-ignore\n emit(id, object.lastModified);\n });\n }.toString(),\n reduce: \"_stats\",\n },\n },\n })\n //@ts-ignore\n .catch((error) => {\n if (\n error &&\n typeof error === \"object\" &&\n \"name\" in error &&\n error.name === \"conflict\"\n ) {\n // Design document already exists\n return;\n } else {\n throw error;\n }\n });\n }\n\n protected async queryByLocation(location: GraffitiLocation) {\n const uri = locationToUri(location) + \"/\";\n const results = await this.db.allDocs({\n startkey: uri,\n endkey: uri + \"\\uffff\", // \\uffff is the last unicode character\n include_docs: true,\n });\n const docs = results.rows\n .map((row) => row.doc)\n // Remove undefined docs\n .reduce<\n PouchDB.Core.ExistingDocument<\n GraffitiObjectBase & PouchDB.Core.AllDocsMeta\n >[]\n >((acc, doc) => {\n if (doc) acc.push(doc);\n return acc;\n }, []);\n return docs;\n }\n\n protected docId(location: GraffitiLocation) {\n return locationToUri(location) + \"/\" + randomBase64();\n }\n\n get: Graffiti[\"get\"] = async (...args) => {\n const [locationOrUri, schema, session] = args;\n const { location } = unpackLocationOrUri(locationOrUri);\n\n const docsAll = await this.queryByLocation(location);\n\n // Filter out ones not allowed\n const docs = docsAll.filter((doc) =>\n isActorAllowedGraffitiObject(doc, session),\n );\n if (!docs.length) throw new GraffitiErrorNotFound();\n\n // Get the most recent document\n const doc = docs.reduce((a, b) => (isObjectNewer(a, b) ? a : b));\n\n // Strip out the _id and _rev\n const { _id, _rev, ...object } = doc;\n\n // Mask out the allowed list and channels\n // if the user is not the owner\n maskGraffitiObject(object, [], session);\n\n const validate = attemptAjvCompile(this.ajv, schema);\n if (!validate(object)) {\n throw new GraffitiErrorSchemaMismatch();\n }\n return object;\n };\n\n /**\n * Deletes all docs at a particular location.\n * If the `keepLatest` flag is set to true,\n * the doc with the most recent timestamp will be\n * spared. If there are multiple docs with the same\n * timestamp, the one with the highest `_id` will be\n * spared.\n */\n protected async deleteAtLocation(\n location: GraffitiLocation,\n keepLatest: boolean = false,\n ) {\n const docsAtLocationAll = await this.queryByLocation(location);\n const docsAtLocation = docsAtLocationAll.filter((doc) => !doc.tombstone);\n if (!docsAtLocation.length) return undefined;\n\n // Get the most recent lastModified timestamp.\n const latestModified = docsAtLocation\n .map((doc) => doc.lastModified)\n .reduce((a, b) => (a > b ? a : b));\n\n // Delete all old docs\n const docsToDelete = docsAtLocation.filter(\n (doc) => !keepLatest || doc.lastModified < latestModified,\n );\n\n // For docs with the same timestamp,\n // keep the one with the highest _id\n // to break concurrency ties\n const concurrentDocsAll = docsAtLocation.filter(\n (doc) => keepLatest && doc.lastModified === latestModified,\n );\n if (concurrentDocsAll.length) {\n const keepDocId = concurrentDocsAll\n .map((doc) => doc._id)\n .reduce((a, b) => (a > b ? a : b));\n const concurrentDocsToDelete = concurrentDocsAll.filter(\n (doc) => doc._id !== keepDocId,\n );\n docsToDelete.push(...concurrentDocsToDelete);\n }\n\n const lastModified = keepLatest ? latestModified : new Date().getTime();\n\n const deleteResults = await this.db.bulkDocs<GraffitiObjectBase>(\n docsToDelete.map((doc) => ({\n ...doc,\n tombstone: true,\n lastModified,\n })),\n );\n\n // Get one of the docs that was deleted\n let deletedObject: GraffitiObjectBase | undefined = undefined;\n for (const resultOrError of deleteResults) {\n if (\"ok\" in resultOrError) {\n const { id } = resultOrError;\n const deletedDoc = docsToDelete.find((doc) => doc._id === id);\n if (deletedDoc) {\n const { _id, _rev, _conflicts, _attachments, ...object } = deletedDoc;\n deletedObject = {\n ...object,\n tombstone: true,\n lastModified,\n };\n break;\n }\n }\n }\n\n return deletedObject;\n }\n\n delete: Graffiti[\"delete\"] = async (...args) => {\n const [locationOrUri, session] = args;\n const { location } = unpackLocationOrUri(locationOrUri);\n if (location.actor !== session.actor) {\n throw new GraffitiErrorForbidden();\n }\n\n const deletedObject = await this.deleteAtLocation(location);\n if (!deletedObject) {\n throw new GraffitiErrorNotFound();\n }\n return deletedObject;\n };\n\n put: Graffiti[\"put\"] = async (...args) => {\n const [objectPartial, session] = args;\n if (objectPartial.actor && objectPartial.actor !== session.actor) {\n throw new GraffitiErrorForbidden();\n }\n if (objectPartial.source && objectPartial.source !== this.source) {\n throw new GraffitiErrorForbidden(\n \"Putting an object that does not match this source\",\n );\n }\n\n const object: GraffitiObjectBase = {\n value: objectPartial.value,\n channels: objectPartial.channels,\n allowed: objectPartial.allowed,\n name: objectPartial.name ?? randomBase64(),\n source: this.source,\n actor: session.actor,\n tombstone: false,\n lastModified: new Date().getTime(),\n };\n\n await this.db.put({\n _id: this.docId(object),\n ...object,\n });\n\n // Delete the old object\n const previousObject = await this.deleteAtLocation(object, true);\n if (previousObject) {\n return previousObject;\n } else {\n return {\n ...object,\n value: {},\n channels: [],\n allowed: undefined,\n tombstone: true,\n };\n }\n };\n\n patch: Graffiti[\"patch\"] = async (...args) => {\n const [patch, locationOrUri, session] = args;\n const { location } = unpackLocationOrUri(locationOrUri);\n if (location.actor !== session.actor) {\n throw new GraffitiErrorForbidden();\n }\n const originalObject = await this.get(locationOrUri, {}, session);\n if (originalObject.tombstone) {\n throw new GraffitiErrorNotFound(\n \"The object you are trying to patch has been deleted\",\n );\n }\n\n // Patch it outside of the database\n const patchObject: GraffitiObjectBase = { ...originalObject };\n for (const prop of [\"value\", \"channels\", \"allowed\"] as const) {\n applyGraffitiPatch(applyPatch, prop, patch, patchObject);\n }\n\n // Make sure the value is an object\n if (\n typeof patchObject.value !== \"object\" ||\n Array.isArray(patchObject.value) ||\n !patchObject.value\n ) {\n throw new GraffitiErrorPatchError(\"value is no longer an object\");\n }\n\n // Make sure the channels are an array of strings\n if (\n !Array.isArray(patchObject.channels) ||\n !patchObject.channels.every((channel) => typeof channel === \"string\")\n ) {\n throw new GraffitiErrorPatchError(\n \"channels are no longer an array of strings\",\n );\n }\n\n // Make sure the allowed list is an array of strings or undefined\n if (\n patchObject.allowed &&\n (!Array.isArray(patchObject.allowed) ||\n !patchObject.allowed.every((allowed) => typeof allowed === \"string\"))\n ) {\n throw new GraffitiErrorPatchError(\n \"allowed list is not an array of strings\",\n );\n }\n\n patchObject.lastModified = new Date().getTime();\n await this.db.put({\n ...patchObject,\n _id: this.docId(patchObject),\n });\n\n // Delete the old object\n await this.deleteAtLocation(patchObject, true);\n\n return {\n ...originalObject,\n tombstone: true,\n lastModified: patchObject.lastModified,\n };\n };\n\n protected queryLastModifiedSuffixes(schema: JSONSchema4) {\n // Use the index for queries over ranges of lastModified\n let startKeySuffix = \"\";\n let endKeySuffix = \"\\uffff\";\n const lastModifiedSchema = schema.properties?.lastModified;\n if (lastModifiedSchema?.minimum) {\n let minimum = Math.ceil(lastModifiedSchema.minimum);\n minimum === lastModifiedSchema.minimum &&\n lastModifiedSchema.exclusiveMinimum &&\n minimum++;\n startKeySuffix = minimum.toString().padStart(15, \"0\");\n }\n if (lastModifiedSchema?.maximum) {\n let maximum = Math.floor(lastModifiedSchema.maximum);\n maximum === lastModifiedSchema.maximum &&\n lastModifiedSchema.exclusiveMaximum &&\n maximum--;\n endKeySuffix = maximum.toString().padStart(15, \"0\");\n }\n return {\n startKeySuffix,\n endKeySuffix,\n };\n }\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const [channels, schema, session] = args;\n const validate = attemptAjvCompile(this.ajv, schema);\n\n const { startKeySuffix, endKeySuffix } =\n this.queryLastModifiedSuffixes(schema);\n\n const repeater: ReturnType<\n typeof Graffiti.prototype.discover<typeof schema>\n > = new Repeater(async (push, stop) => {\n const processedIds = new Set<string>();\n\n for (const channel of channels) {\n const keyPrefix = encodeURIComponent(channel) + \"/\";\n const startkey = keyPrefix + startKeySuffix;\n const endkey = keyPrefix + endKeySuffix;\n\n const result = await this.db.query<GraffitiObjectBase>(\n \"indexes/objectsPerChannelAndLastModified\",\n { startkey, endkey, include_docs: true },\n );\n\n for (const row of result.rows) {\n const doc = row.doc;\n if (!doc) continue;\n\n const { _id, _rev, ...object } = doc;\n\n // Don't double return the same object\n // (which can happen if it's in multiple channels)\n if (processedIds.has(_id)) continue;\n processedIds.add(_id);\n\n // Make sure the user is allowed to see it\n if (!isActorAllowedGraffitiObject(doc, session)) continue;\n\n // Mask out the allowed list and channels\n // if the user is not the owner\n maskGraffitiObject(object, channels, session);\n\n // Check that it matches the schema\n if (validate(object)) {\n await push({ value: object });\n }\n }\n }\n stop();\n return {\n tombstoneRetention: this.tombstoneRetention,\n };\n });\n\n return repeater;\n };\n\n recoverOrphans: Graffiti[\"recoverOrphans\"] = (schema, session) => {\n const validate = attemptAjvCompile(this.ajv, schema);\n\n const { startKeySuffix, endKeySuffix } =\n this.queryLastModifiedSuffixes(schema);\n const keyPrefix = encodeURIComponent(session.actor) + \"/\";\n const startkey = keyPrefix + startKeySuffix;\n const endkey = keyPrefix + endKeySuffix;\n\n const repeater: ReturnType<\n typeof Graffiti.prototype.recoverOrphans<typeof schema>\n > = new Repeater(async (push, stop) => {\n const result = await this.db.query<GraffitiObjectBase>(\n \"indexes/orphansPerActorAndLastModified\",\n { startkey, endkey, include_docs: true },\n );\n\n for (const row of result.rows) {\n const doc = row.doc;\n if (!doc) continue;\n\n // No masking/access necessary because\n // the objects are all owned by the querier\n\n const { _id, _rev, ...object } = doc;\n if (validate(object)) {\n await push({ value: object });\n }\n }\n stop();\n return {\n tombstoneRetention: this.tombstoneRetention,\n };\n });\n\n return repeater;\n };\n\n channelStats: Graffiti[\"channelStats\"] = (session) => {\n const repeater: ReturnType<typeof Graffiti.prototype.channelStats> =\n new Repeater(async (push, stop) => {\n const keyPrefix = encodeURIComponent(session.actor) + \"/\";\n const result = await this.db.query(\"indexes/channelStatsPerActor\", {\n startkey: keyPrefix,\n endkey: keyPrefix + \"\\uffff\",\n reduce: true,\n group: true,\n });\n for (const row of result.rows) {\n const channelEncoded = row.key.split(\"/\")[1];\n if (typeof channelEncoded !== \"string\") continue;\n const { count, max: lastModified } = row.value;\n if (typeof count !== \"number\" || typeof lastModified !== \"number\")\n continue;\n await push({\n value: {\n channel: decodeURIComponent(channelEncoded),\n count,\n lastModified,\n },\n });\n }\n stop();\n });\n\n return repeater;\n };\n}\n", "import Md5 from 'spark-md5';\nimport { v4 } from 'uuid';\nimport vuvuzela from 'vuvuzela';\nimport EE from 'events';\n\nfunction isBinaryObject(object) {\n return (typeof ArrayBuffer !== 'undefined' && object instanceof ArrayBuffer) ||\n (typeof Blob !== 'undefined' && object instanceof Blob);\n}\n\n/**\n * @template {ArrayBuffer | Blob} T\n * @param {T} object\n * @returns {T}\n */\nfunction cloneBinaryObject(object) {\n return object instanceof ArrayBuffer\n ? object.slice(0)\n : object.slice(0, object.size, object.type);\n}\n\n// most of this is borrowed from lodash.isPlainObject:\n// https://github.com/fis-components/lodash.isplainobject/\n// blob/29c358140a74f252aeb08c9eb28bef86f2217d4a/index.js\n\nvar funcToString = Function.prototype.toString;\nvar objectCtorString = funcToString.call(Object);\n\nfunction isPlainObject(value) {\n var proto = Object.getPrototypeOf(value);\n /* istanbul ignore if */\n if (proto === null) { // not sure when this happens, but I guess it can\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nfunction clone(object) {\n var newObject;\n var i;\n var len;\n\n if (!object || typeof object !== 'object') {\n return object;\n }\n\n if (Array.isArray(object)) {\n newObject = [];\n for (i = 0, len = object.length; i < len; i++) {\n newObject[i] = clone(object[i]);\n }\n return newObject;\n }\n\n // special case: to avoid inconsistencies between IndexedDB\n // and other backends, we automatically stringify Dates\n if (object instanceof Date && isFinite(object)) {\n return object.toISOString();\n }\n\n if (isBinaryObject(object)) {\n return cloneBinaryObject(object);\n }\n\n if (!isPlainObject(object)) {\n return object; // don't clone objects like Workers\n }\n\n newObject = {};\n for (i in object) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(object, i)) {\n var value = clone(object[i]);\n if (typeof value !== 'undefined') {\n newObject[i] = value;\n }\n }\n }\n return newObject;\n}\n\nfunction once(fun) {\n var called = false;\n return function (...args) {\n /* istanbul ignore if */\n if (called) {\n // this is a smoke test and should never actually happen\n throw new Error('once called more than once');\n } else {\n called = true;\n fun.apply(this, args);\n }\n };\n}\n\nfunction toPromise(func) {\n //create the function we will be returning\n return function (...args) {\n // Clone arguments\n args = clone(args);\n var self = this;\n // if the last argument is a function, assume its a callback\n var usedCB = (typeof args[args.length - 1] === 'function') ? args.pop() : false;\n var promise = new Promise(function (fulfill, reject) {\n var resp;\n try {\n var callback = once(function (err, mesg) {\n if (err) {\n reject(err);\n } else {\n fulfill(mesg);\n }\n });\n // create a callback for this invocation\n // apply the function in the orig context\n args.push(callback);\n resp = func.apply(self, args);\n if (resp && typeof resp.then === 'function') {\n fulfill(resp);\n }\n } catch (e) {\n reject(e);\n }\n });\n // if there is a callback, call it back\n if (usedCB) {\n promise.then(function (result) {\n usedCB(null, result);\n }, usedCB);\n }\n return promise;\n };\n}\n\nfunction logApiCall(self, name, args) {\n /* istanbul ignore if */\n if (self.constructor.listeners('debug').length) {\n var logArgs = ['api', self.name, name];\n for (var i = 0; i < args.length - 1; i++) {\n logArgs.push(args[i]);\n }\n self.constructor.emit('debug', logArgs);\n\n // override the callback itself to log the response\n var origCallback = args[args.length - 1];\n args[args.length - 1] = function (err, res) {\n var responseArgs = ['api', self.name, name];\n responseArgs = responseArgs.concat(\n err ? ['error', err] : ['success', res]\n );\n self.constructor.emit('debug', responseArgs);\n origCallback(err, res);\n };\n }\n}\n\nfunction adapterFun(name, callback) {\n return toPromise(function (...args) {\n if (this._closed) {\n return Promise.reject(new Error('database is closed'));\n }\n if (this._destroyed) {\n return Promise.reject(new Error('database is destroyed'));\n }\n var self = this;\n logApiCall(self, name, args);\n if (!this.taskqueue.isReady) {\n return new Promise(function (fulfill, reject) {\n self.taskqueue.addTask(function (failed) {\n if (failed) {\n reject(failed);\n } else {\n fulfill(self[name].apply(self, args));\n }\n });\n });\n }\n return callback.apply(this, args);\n });\n}\n\n// like underscore/lodash _.pick()\nfunction pick(obj, arr) {\n var res = {};\n for (var i = 0, len = arr.length; i < len; i++) {\n var prop = arr[i];\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\n\n// Most browsers throttle concurrent requests at 6, so it's silly\n// to shim _bulk_get by trying to launch potentially hundreds of requests\n// and then letting the majority time out. We can handle this ourselves.\nvar MAX_NUM_CONCURRENT_REQUESTS = 6;\n\nfunction identityFunction(x) {\n return x;\n}\n\nfunction formatResultForOpenRevsGet(result) {\n return [{\n ok: result\n }];\n}\n\n// shim for P/CouchDB adapters that don't directly implement _bulk_get\nfunction bulkGet(db, opts, callback) {\n var requests = opts.docs;\n\n // consolidate into one request per doc if possible\n var requestsById = new Map();\n requests.forEach(function (request) {\n if (requestsById.has(request.id)) {\n requestsById.get(request.id).push(request);\n } else {\n requestsById.set(request.id, [request]);\n }\n });\n\n var numDocs = requestsById.size;\n var numDone = 0;\n var perDocResults = new Array(numDocs);\n\n function collapseResultsAndFinish() {\n var results = [];\n perDocResults.forEach(function (res) {\n res.docs.forEach(function (info) {\n results.push({\n id: res.id,\n docs: [info]\n });\n });\n });\n callback(null, {results});\n }\n\n function checkDone() {\n if (++numDone === numDocs) {\n collapseResultsAndFinish();\n }\n }\n\n function gotResult(docIndex, id, docs) {\n perDocResults[docIndex] = {id, docs};\n checkDone();\n }\n\n var allRequests = [];\n requestsById.forEach(function (value, key) {\n allRequests.push(key);\n });\n\n var i = 0;\n\n function nextBatch() {\n\n if (i >= allRequests.length) {\n return;\n }\n\n var upTo = Math.min(i + MAX_NUM_CONCURRENT_REQUESTS, allRequests.length);\n var batch = allRequests.slice(i, upTo);\n processBatch(batch, i);\n i += batch.length;\n }\n\n function processBatch(batch, offset) {\n batch.forEach(function (docId, j) {\n var docIdx = offset + j;\n var docRequests = requestsById.get(docId);\n\n // just use the first request as the \"template\"\n // TODO: The _bulk_get API allows for more subtle use cases than this,\n // but for now it is unlikely that there will be a mix of different\n // \"atts_since\" or \"attachments\" in the same request, since it's just\n // replicate.js that is using this for the moment.\n // Also, atts_since is aspirational, since we don't support it yet.\n var docOpts = pick(docRequests[0], ['atts_since', 'attachments']);\n docOpts.open_revs = docRequests.map(function (request) {\n // rev is optional, open_revs disallowed\n return request.rev;\n });\n\n // remove falsey / undefined revisions\n docOpts.open_revs = docOpts.open_revs.filter(identityFunction);\n\n var formatResult = identityFunction;\n\n if (docOpts.open_revs.length === 0) {\n delete docOpts.open_revs;\n\n // when fetching only the \"winning\" leaf,\n // transform the result so it looks like an open_revs\n // request\n formatResult = formatResultForOpenRevsGet;\n }\n\n // globally-supplied options\n ['revs', 'attachments', 'binary', 'ajax', 'latest'].forEach(function (param) {\n if (param in opts) {\n docOpts[param] = opts[param];\n }\n });\n db.get(docId, docOpts, function (err, res) {\n var result;\n /* istanbul ignore if */\n if (err) {\n result = [{error: err}];\n } else {\n result = formatResult(res);\n }\n gotResult(docIdx, docId, result);\n nextBatch();\n });\n });\n }\n\n nextBatch();\n\n}\n\nvar hasLocal;\n\ntry {\n localStorage.setItem('_pouch_check_localstorage', 1);\n hasLocal = !!localStorage.getItem('_pouch_check_localstorage');\n} catch (e) {\n hasLocal = false;\n}\n\nfunction hasLocalStorage() {\n return hasLocal;\n}\n\nconst nextTick = typeof queueMicrotask === \"function\"\n ? queueMicrotask\n : function nextTick(fn) {\n Promise.resolve().then(fn);\n };\n\nclass Changes extends EE {\n constructor() {\n super();\n\n this._listeners = {};\n\n if (hasLocalStorage()) {\n addEventListener(\"storage\", (e) => {\n this.emit(e.key);\n });\n }\n }\n\n addListener(dbName, id, db, opts) {\n if (this._listeners[id]) {\n return;\n }\n var inprogress = false;\n var self = this;\n function eventFunction() {\n if (!self._listeners[id]) {\n return;\n }\n if (inprogress) {\n inprogress = 'waiting';\n return;\n }\n inprogress = true;\n var changesOpts = pick(opts, [\n 'style', 'include_docs', 'attachments', 'conflicts', 'filter',\n 'doc_ids', 'view', 'since', 'query_params', 'binary', 'return_docs'\n ]);\n\n function onError() {\n inprogress = false;\n }\n\n db.changes(changesOpts).on('change', function (c) {\n if (c.seq > opts.since && !opts.cancelled) {\n opts.since = c.seq;\n opts.onChange(c);\n }\n }).on('complete', function () {\n if (inprogress === 'waiting') {\n nextTick(eventFunction);\n }\n inprogress = false;\n }).on('error', onError);\n }\n this._listeners[id] = eventFunction;\n this.on(dbName, eventFunction);\n }\n\n removeListener(dbName, id) {\n if (!(id in this._listeners)) {\n return;\n }\n super.removeListener(dbName, this._listeners[id]);\n delete this._listeners[id];\n }\n\n notifyLocalWindows(dbName) {\n //do a useless change on a storage thing\n //in order to get other windows's listeners to activate\n if (hasLocalStorage()) {\n localStorage[dbName] = (localStorage[dbName] === \"a\") ? \"b\" : \"a\";\n }\n }\n\n notify(dbName) {\n this.emit(dbName);\n this.notifyLocalWindows(dbName);\n }\n}\n\nfunction guardedConsole(method) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined' && typeof console[method] === 'function') {\n var args = Array.prototype.slice.call(arguments, 1);\n console[method].apply(console, args);\n }\n}\n\nfunction randomNumber(min, max) {\n var maxTimeout = 600000; // Hard-coded default of 10 minutes\n min = parseInt(min, 10) || 0;\n max = parseInt(max, 10);\n if (max !== max || max <= min) {\n max = (min || 1) << 1; //doubling\n } else {\n max = max + 1;\n }\n // In order to not exceed maxTimeout, pick a random value between half of maxTimeout and maxTimeout\n if (max > maxTimeout) {\n min = maxTimeout >> 1; // divide by two\n max = maxTimeout;\n }\n var ratio = Math.random();\n var range = max - min;\n\n return ~~(range * ratio + min); // ~~ coerces to an int, but fast.\n}\n\nfunction defaultBackOff(min) {\n var max = 0;\n if (!min) {\n max = 2000;\n }\n return randomNumber(min, max);\n}\n\n// designed to give info to browser users, who are disturbed\n// when they see http errors in the console\nfunction explainError(status, str) {\n guardedConsole('info', 'The above ' + status + ' is totally normal. ' + str);\n}\n\nclass PouchError extends Error {\n constructor(status, error, reason) {\n super();\n this.status = status;\n this.name = error;\n this.message = reason;\n this.error = true;\n }\n\n toString() {\n return JSON.stringify({\n status: this.status,\n name: this.name,\n message: this.message,\n reason: this.reason\n });\n }\n}\n\nvar UNAUTHORIZED = new PouchError(401, 'unauthorized', \"Name or password is incorrect.\");\nvar MISSING_BULK_DOCS = new PouchError(400, 'bad_request', \"Missing JSON list of 'docs'\");\nvar MISSING_DOC = new PouchError(404, 'not_found', 'missing');\nvar REV_CONFLICT = new PouchError(409, 'conflict', 'Document update conflict');\nvar INVALID_ID = new PouchError(400, 'bad_request', '_id field must contain a string');\nvar MISSING_ID = new PouchError(412, 'missing_id', '_id is required for puts');\nvar RESERVED_ID = new PouchError(400, 'bad_request', 'Only reserved document ids may start with underscore.');\nvar NOT_OPEN = new PouchError(412, 'precondition_failed', 'Database not open');\nvar UNKNOWN_ERROR = new PouchError(500, 'unknown_error', 'Database encountered an unknown error');\nvar BAD_ARG = new PouchError(500, 'badarg', 'Some query argument is invalid');\nvar INVALID_REQUEST = new PouchError(400, 'invalid_request', 'Request was invalid');\nvar QUERY_PARSE_ERROR = new PouchError(400, 'query_parse_error', 'Some query parameter is invalid');\nvar DOC_VALIDATION = new PouchError(500, 'doc_validation', 'Bad special document member');\nvar BAD_REQUEST = new PouchError(400, 'bad_request', 'Something wrong with the request');\nvar NOT_AN_OBJECT = new PouchError(400, 'bad_request', 'Document must be a JSON object');\nvar DB_MISSING = new PouchError(404, 'not_found', 'Database not found');\nvar IDB_ERROR = new PouchError(500, 'indexed_db_went_bad', 'unknown');\nvar WSQ_ERROR = new PouchError(500, 'web_sql_went_bad', 'unknown');\nvar LDB_ERROR = new PouchError(500, 'levelDB_went_went_bad', 'unknown');\nvar FORBIDDEN = new PouchError(403, 'forbidden', 'Forbidden by design doc validate_doc_update function');\nvar INVALID_REV = new PouchError(400, 'bad_request', 'Invalid rev format');\nvar FILE_EXISTS = new PouchError(412, 'file_exists', 'The database could not be created, the file already exists.');\nvar MISSING_STUB = new PouchError(412, 'missing_stub', 'A pre-existing attachment stub wasn\\'t found');\nvar INVALID_URL = new PouchError(413, 'invalid_url', 'Provided URL is invalid');\n\nfunction createError(error, reason) {\n function CustomPouchError(reason) {\n // inherit error properties from our parent error manually\n // so as to allow proper JSON parsing.\n var names = Object.getOwnPropertyNames(error);\n for (var i = 0, len = names.length; i < len; i++) {\n if (typeof error[names[i]] !== 'function') {\n this[names[i]] = error[names[i]];\n }\n }\n\n if (this.stack === undefined) {\n this.stack = (new Error()).stack;\n }\n\n if (reason !== undefined) {\n this.reason = reason;\n }\n }\n CustomPouchError.prototype = PouchError.prototype;\n return new CustomPouchError(reason);\n}\n\nfunction generateErrorFromResponse(err) {\n\n if (typeof err !== 'object') {\n var data = err;\n err = UNKNOWN_ERROR;\n err.data = data;\n }\n\n if ('error' in err && err.error === 'conflict') {\n err.name = 'conflict';\n err.status = 409;\n }\n\n if (!('name' in err)) {\n err.name = err.error || 'unknown';\n }\n\n if (!('status' in err)) {\n err.status = 500;\n }\n\n if (!('message' in err)) {\n err.message = err.message || err.reason;\n }\n\n if (!('stack' in err)) {\n err.stack = (new Error()).stack;\n }\n\n return err;\n}\n\nfunction tryFilter(filter, doc, req) {\n try {\n return !filter(doc, req);\n } catch (err) {\n var msg = 'Filter function threw: ' + err.toString();\n return createError(BAD_REQUEST, msg);\n }\n}\n\nfunction filterChange(opts) {\n var req = {};\n var hasFilter = opts.filter && typeof opts.filter === 'function';\n req.query = opts.query_params;\n\n return function filter(change) {\n if (!change.doc) {\n // CSG sends events on the changes feed that don't have documents,\n // this hack makes a whole lot of existing code robust.\n change.doc = {};\n }\n\n var filterReturn = hasFilter && tryFilter(opts.filter, change.doc, req);\n\n if (typeof filterReturn === 'object') {\n return filterReturn;\n }\n\n if (filterReturn) {\n return false;\n }\n\n if (!opts.include_docs) {\n delete change.doc;\n } else if (!opts.attachments) {\n for (var att in change.doc._attachments) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(change.doc._attachments, att)) {\n change.doc._attachments[att].stub = true;\n }\n }\n }\n return true;\n };\n}\n\n// shim for Function.prototype.name,\n\n// Determine id an ID is valid\n// - invalid IDs begin with an underescore that does not begin '_design' or\n// '_local'\n// - any other string value is a valid id\n// Returns the specific error object for each case\nfunction invalidIdError(id) {\n var err;\n if (!id) {\n err = createError(MISSING_ID);\n } else if (typeof id !== 'string') {\n err = createError(INVALID_ID);\n } else if (/^_/.test(id) && !(/^_(design|local)/).test(id)) {\n err = createError(RESERVED_ID);\n }\n if (err) {\n throw err;\n }\n}\n\n// Checks if a PouchDB object is \"remote\" or not. This is\n\nfunction isRemote(db) {\n if (typeof db._remote === 'boolean') {\n return db._remote;\n }\n /* istanbul ignore next */\n if (typeof db.type === 'function') {\n guardedConsole('warn',\n 'db.type() is deprecated and will be removed in ' +\n 'a future version of PouchDB');\n return db.type() === 'http';\n }\n /* istanbul ignore next */\n return false;\n}\n\nfunction listenerCount(ee, type) {\n return 'listenerCount' in ee ? ee.listenerCount(type) :\n EE.listenerCount(ee, type);\n}\n\nfunction parseDesignDocFunctionName(s) {\n if (!s) {\n return null;\n }\n var parts = s.split('/');\n if (parts.length === 2) {\n return parts;\n }\n if (parts.length === 1) {\n return [s, s];\n }\n return null;\n}\n\nfunction normalizeDesignDocFunctionName(s) {\n var normalized = parseDesignDocFunctionName(s);\n return normalized ? normalized.join('/') : null;\n}\n\n// originally parseUri 1.2.2, now patched by us\n// (c) Steven Levithan <stevenlevithan.com>\n// MIT License\nvar keys = [\"source\", \"protocol\", \"authority\", \"userInfo\", \"user\", \"password\",\n \"host\", \"port\", \"relative\", \"path\", \"directory\", \"file\", \"query\", \"anchor\"];\nvar qName =\"queryKey\";\nvar qParser = /(?:^|&)([^&=]*)=?([^&]*)/g;\n\n// use the \"loose\" parser\n/* eslint no-useless-escape: 0 */\nvar parser = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nfunction parseUri(str) {\n var m = parser.exec(str);\n var uri = {};\n var i = 14;\n\n while (i--) {\n var key = keys[i];\n var value = m[i] || \"\";\n var encoded = ['user', 'password'].indexOf(key) !== -1;\n uri[key] = encoded ? decodeURIComponent(value) : value;\n }\n\n uri[qName] = {};\n uri[keys[12]].replace(qParser, function ($0, $1, $2) {\n if ($1) {\n uri[qName][$1] = $2;\n }\n });\n\n return uri;\n}\n\n// Based on https://github.com/alexdavid/scope-eval v0.0.3\n// (source: https://unpkg.com/scope-eval@0.0.3/scope_eval.js)\n// This is basically just a wrapper around new Function()\n\nfunction scopeEval(source, scope) {\n var keys = [];\n var values = [];\n for (var key in scope) {\n if (Object.prototype.hasOwnProperty.call(scope, key)) {\n keys.push(key);\n values.push(scope[key]);\n }\n }\n keys.push(source);\n return Function.apply(null, keys).apply(null, values);\n}\n\n// this is essentially the \"update sugar\" function from daleharvey/pouchdb#1388\n// the diffFun tells us what delta to apply to the doc. it either returns\n// the doc, or false if it doesn't need to do an update after all\nfunction upsert(db, docId, diffFun) {\n return db.get(docId)\n .catch(function (err) {\n /* istanbul ignore next */\n if (err.status !== 404) {\n throw err;\n }\n return {};\n })\n .then(function (doc) {\n // the user might change the _rev, so save it for posterity\n var docRev = doc._rev;\n var newDoc = diffFun(doc);\n\n if (!newDoc) {\n // if the diffFun returns falsy, we short-circuit as\n // an optimization\n return {updated: false, rev: docRev};\n }\n\n // users aren't allowed to modify these values,\n // so reset them here\n newDoc._id = docId;\n newDoc._rev = docRev;\n return tryAndPut(db, newDoc, diffFun);\n });\n}\n\nfunction tryAndPut(db, doc, diffFun) {\n return db.put(doc).then(function (res) {\n return {\n updated: true,\n rev: res.rev\n };\n }, function (err) {\n /* istanbul ignore next */\n if (err.status !== 409) {\n throw err;\n }\n return upsert(db, doc._id, diffFun);\n });\n}\n\nvar thisAtob = function (str) {\n return atob(str);\n};\n\nvar thisBtoa = function (str) {\n return btoa(str);\n};\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor (e.g.\n// old QtWebKit versions, Android < 4.4).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== \"TypeError\") {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder :\n WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction binaryStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\nfunction binStringToBluffer(binString, type) {\n return createBlob([binaryStringToArrayBuffer(binString)], {type});\n}\n\nfunction b64ToBluffer(b64, type) {\n return binStringToBluffer(thisAtob(b64), type);\n}\n\n//Can't find original post, but this is close\n//http://stackoverflow.com/questions/6965107/ (continues on next line)\n//converting-between-strings-and-arraybuffers\nfunction arrayBufferToBinaryString(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n for (var i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\n\n// shim for browsers that don't support it\nfunction readAsBinaryString(blob, callback) {\n var reader = new FileReader();\n var hasBinaryString = typeof reader.readAsBinaryString === 'function';\n reader.onloadend = function (e) {\n var result = e.target.result || '';\n if (hasBinaryString) {\n return callback(result);\n }\n callback(arrayBufferToBinaryString(result));\n };\n if (hasBinaryString) {\n reader.readAsBinaryString(blob);\n } else {\n reader.readAsArrayBuffer(blob);\n }\n}\n\nfunction blobToBinaryString(blobOrBuffer, callback) {\n readAsBinaryString(blobOrBuffer, function (bin) {\n callback(bin);\n });\n}\n\nfunction blobToBase64(blobOrBuffer, callback) {\n blobToBinaryString(blobOrBuffer, function (base64) {\n callback(thisBtoa(base64));\n });\n}\n\n// simplified API. universal browser support is assumed\nfunction readAsArrayBuffer(blob, callback) {\n var reader = new FileReader();\n reader.onloadend = function (e) {\n var result = e.target.result || new ArrayBuffer(0);\n callback(result);\n };\n reader.readAsArrayBuffer(blob);\n}\n\n// this is not used in the browser\n\nvar setImmediateShim = self.setImmediate || self.setTimeout;\nvar MD5_CHUNK_SIZE = 32768;\n\nfunction rawToBase64(raw) {\n return thisBtoa(raw);\n}\n\nfunction appendBlob(buffer, blob, start, end, callback) {\n if (start > 0 || end < blob.size) {\n // only slice blob if we really need to\n blob = blob.slice(start, end);\n }\n readAsArrayBuffer(blob, function (arrayBuffer) {\n buffer.append(arrayBuffer);\n callback();\n });\n}\n\nfunction appendString(buffer, string, start, end, callback) {\n if (start > 0 || end < string.length) {\n // only create a substring if we really need to\n string = string.substring(start, end);\n }\n buffer.appendBinary(string);\n callback();\n}\n\nfunction binaryMd5(data, callback) {\n var inputIsString = typeof data === 'string';\n var len = inputIsString ? data.length : data.size;\n var chunkSize = Math.min(MD5_CHUNK_SIZE, len);\n var chunks = Math.ceil(len / chunkSize);\n var currentChunk = 0;\n var buffer = inputIsString ? new Md5() : new Md5.ArrayBuffer();\n\n var append = inputIsString ? appendString : appendBlob;\n\n function next() {\n setImmediateShim(loadNextChunk);\n }\n\n function done() {\n var raw = buffer.end(true);\n var base64 = rawToBase64(raw);\n callback(base64);\n buffer.destroy();\n }\n\n function loadNextChunk() {\n var start = currentChunk * chunkSize;\n var end = start + chunkSize;\n currentChunk++;\n if (currentChunk < chunks) {\n append(buffer, data, start, end, next);\n } else {\n append(buffer, data, start, end, done);\n }\n }\n loadNextChunk();\n}\n\nfunction stringMd5(string) {\n return Md5.hash(string);\n}\n\n/**\n * Creates a new revision string that does NOT include the revision height\n * For example '56649f1b0506c6ca9fda0746eb0cacdf'\n */\nfunction rev(doc, deterministic_revs) {\n if (!deterministic_revs) {\n return v4().replace(/-/g, '').toLowerCase();\n }\n\n var mutateableDoc = Object.assign({}, doc);\n delete mutateableDoc._rev_tree;\n return stringMd5(JSON.stringify(mutateableDoc));\n}\n\nvar uuid = v4; // mimic old import, only v4 is ever used elsewhere\n\n// We fetch all leafs of the revision tree, and sort them based on tree length\n// and whether they were deleted, undeleted documents with the longest revision\n// tree (most edits) win\n// The final sort algorithm is slightly documented in a sidebar here:\n// http://guide.couchdb.org/draft/conflicts.html\nfunction winningRev(metadata) {\n var winningId;\n var winningPos;\n var winningDeleted;\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var tree = node.ids;\n var branches = tree[2];\n var pos = node.pos;\n if (branches.length) { // non-leaf\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i]});\n }\n continue;\n }\n var deleted = !!tree[1].deleted;\n var id = tree[0];\n // sort by deleted, then pos, then id\n if (!winningId || (winningDeleted !== deleted ? winningDeleted :\n winningPos !== pos ? winningPos < pos : winningId < id)) {\n winningId = id;\n winningPos = pos;\n winningDeleted = deleted;\n }\n }\n\n return winningPos + '-' + winningId;\n}\n\n// Pretty much all below can be combined into a higher order function to\n// traverse revisions\n// The return value from the callback will be passed as context to all\n// children of that node\nfunction traverseRevTree(revs, callback) {\n var toVisit = revs.slice();\n\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var branches = tree[2];\n var newCtx =\n callback(branches.length === 0, pos, tree[0], node.ctx, tree[1]);\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], ctx: newCtx});\n }\n }\n}\n\nfunction sortByPos(a, b) {\n return a.pos - b.pos;\n}\n\nfunction collectLeaves(revs) {\n var leaves = [];\n traverseRevTree(revs, function (isLeaf, pos, id, acc, opts) {\n if (isLeaf) {\n leaves.push({rev: pos + \"-\" + id, pos, opts});\n }\n });\n leaves.sort(sortByPos).reverse();\n for (var i = 0, len = leaves.length; i < len; i++) {\n delete leaves[i].pos;\n }\n return leaves;\n}\n\n// returns revs of all conflicts that is leaves such that\n// 1. are not deleted and\n// 2. are different than winning revision\nfunction collectConflicts(metadata) {\n var win = winningRev(metadata);\n var leaves = collectLeaves(metadata.rev_tree);\n var conflicts = [];\n for (var i = 0, len = leaves.length; i < len; i++) {\n var leaf = leaves[i];\n if (leaf.rev !== win && !leaf.opts.deleted) {\n conflicts.push(leaf.rev);\n }\n }\n return conflicts;\n}\n\n// compact a tree by marking its non-leafs as missing,\n// and return a list of revs to delete\nfunction compactTree(metadata) {\n var revs = [];\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n if (opts.status === 'available' && !isLeaf) {\n revs.push(pos + '-' + revHash);\n opts.status = 'missing';\n }\n });\n return revs;\n}\n\n// `findPathToLeaf()` returns an array of revs that goes from the specified\n// leaf rev to the root of that leaf\u2019s branch.\n//\n// eg. for this rev tree:\n// 1-9692 \u25B6 2-37aa \u25B6 3-df22 \u25B6 4-6e94 \u25B6 5-df4a \u25B6 6-6a3a \u25B6 7-57e5\n// \u2503 \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u25B6 5-8d8c \u25B6 6-65e0\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u25B6 3-43f6 \u25B6 4-a3b4\n//\n// For a `targetRev` of '7-57e5', `findPathToLeaf()` would return ['7-57e5', '6-6a3a', '5-df4a']\n// The `revs` argument has the same structure as what `revs_tree` has on e.g.\n// the IndexedDB representation of the rev tree datastructure. Please refer to\n// tests/unit/test.purge.js for examples of what these look like.\n//\n// This function will throw an error if:\n// - The requested revision does not exist\n// - The requested revision is not a leaf\nfunction findPathToLeaf(revs, targetRev) {\n let path = [];\n const toVisit = revs.slice();\n\n let node;\n while ((node = toVisit.pop())) {\n const { pos, ids: tree } = node;\n const rev = `${pos}-${tree[0]}`;\n const branches = tree[2];\n\n // just assuming we're already working on the path up towards our desired leaf.\n path.push(rev);\n\n // we've reached the leaf of our dreams, so return the computed path.\n if (rev === targetRev) {\n //\u2026unleeeeess\n if (branches.length !== 0) {\n throw new Error('The requested revision is not a leaf');\n }\n return path.reverse();\n }\n\n // this is based on the assumption that after we have a leaf (`branches.length == 0`), we handle the next\n // branch. this is true for all branches other than the path leading to the winning rev (which is 7-57e5 in\n // the example above. i've added a reset condition for branching nodes (`branches.length > 1`) as well.\n if (branches.length === 0 || branches.length > 1) {\n path = [];\n }\n\n // as a next step, we push the branches of this node to `toVisit` for visiting it during the next iteration\n for (let i = 0, len = branches.length; i < len; i++) {\n toVisit.push({ pos: pos + 1, ids: branches[i] });\n }\n }\n if (path.length === 0) {\n throw new Error('The requested revision does not exist');\n }\n return path.reverse();\n}\n\n// build up a list of all the paths to the leafs in this revision tree\nfunction rootToLeaf(revs) {\n var paths = [];\n var toVisit = revs.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id, opts});\n if (isLeaf) {\n paths.push({pos: (pos + 1 - history.length), ids: history});\n }\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], history});\n }\n }\n return paths.reverse();\n}\n\n// for a better overview of what this is doing, read:\n\nfunction sortByPos$1(a, b) {\n return a.pos - b.pos;\n}\n\n// classic binary search\nfunction binarySearch(arr, item, comparator) {\n var low = 0;\n var high = arr.length;\n var mid;\n while (low < high) {\n mid = (low + high) >>> 1;\n if (comparator(arr[mid], item) < 0) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n}\n\n// assuming the arr is sorted, insert the item in the proper place\nfunction insertSorted(arr, item, comparator) {\n var idx = binarySearch(arr, item, comparator);\n arr.splice(idx, 0, item);\n}\n\n// Turn a path as a flat array into a tree with a single branch.\n// If any should be stemmed from the beginning of the array, that's passed\n// in as the second argument\nfunction pathToTree(path, numStemmed) {\n var root;\n var leaf;\n for (var i = numStemmed, len = path.length; i < len; i++) {\n var node = path[i];\n var currentLeaf = [node.id, node.opts, []];\n if (leaf) {\n leaf[2].push(currentLeaf);\n leaf = currentLeaf;\n } else {\n root = leaf = currentLeaf;\n }\n }\n return root;\n}\n\n// compare the IDs of two trees\nfunction compareTree(a, b) {\n return a[0] < b[0] ? -1 : 1;\n}\n\n// Merge two trees together\n// The roots of tree1 and tree2 must be the same revision\nfunction mergeTree(in_tree1, in_tree2) {\n var queue = [{tree1: in_tree1, tree2: in_tree2}];\n var conflicts = false;\n while (queue.length > 0) {\n var item = queue.pop();\n var tree1 = item.tree1;\n var tree2 = item.tree2;\n\n if (tree1[1].status || tree2[1].status) {\n tree1[1].status =\n (tree1[1].status === 'available' ||\n tree2[1].status === 'available') ? 'available' : 'missing';\n }\n\n for (var i = 0; i < tree2[2].length; i++) {\n if (!tree1[2][0]) {\n conflicts = 'new_leaf';\n tree1[2][0] = tree2[2][i];\n continue;\n }\n\n var merged = false;\n for (var j = 0; j < tree1[2].length; j++) {\n if (tree1[2][j][0] === tree2[2][i][0]) {\n queue.push({tree1: tree1[2][j], tree2: tree2[2][i]});\n merged = true;\n }\n }\n if (!merged) {\n conflicts = 'new_branch';\n insertSorted(tree1[2], tree2[2][i], compareTree);\n }\n }\n }\n return {conflicts, tree: in_tree1};\n}\n\nfunction doMerge(tree, path, dontExpand) {\n var restree = [];\n var conflicts = false;\n var merged = false;\n var res;\n\n if (!tree.length) {\n return {tree: [path], conflicts: 'new_leaf'};\n }\n\n for (var i = 0, len = tree.length; i < len; i++) {\n var branch = tree[i];\n if (branch.pos === path.pos && branch.ids[0] === path.ids[0]) {\n // Paths start at the same position and have the same root, so they need\n // merged\n res = mergeTree(branch.ids, path.ids);\n restree.push({pos: branch.pos, ids: res.tree});\n conflicts = conflicts || res.conflicts;\n merged = true;\n } else if (dontExpand !== true) {\n // The paths start at a different position, take the earliest path and\n // traverse up until it as at the same point from root as the path we\n // want to merge. If the keys match we return the longer path with the\n // other merged After stemming we don't want to expand the trees\n\n var t1 = branch.pos < path.pos ? branch : path;\n var t2 = branch.pos < path.pos ? path : branch;\n var diff = t2.pos - t1.pos;\n\n var candidateParents = [];\n\n var trees = [];\n trees.push({ids: t1.ids, diff, parent: null, parentIdx: null});\n while (trees.length > 0) {\n var item = trees.pop();\n if (item.diff === 0) {\n if (item.ids[0] === t2.ids[0]) {\n candidateParents.push(item);\n }\n continue;\n }\n var elements = item.ids[2];\n for (var j = 0, elementsLen = elements.length; j < elementsLen; j++) {\n trees.push({\n ids: elements[j],\n diff: item.diff - 1,\n parent: item.ids,\n parentIdx: j\n });\n }\n }\n\n var el = candidateParents[0];\n\n if (!el) {\n restree.push(branch);\n } else {\n res = mergeTree(el.ids, t2.ids);\n el.parent[2][el.parentIdx] = res.tree;\n restree.push({pos: t1.pos, ids: t1.ids});\n conflicts = conflicts || res.conflicts;\n merged = true;\n }\n } else {\n restree.push(branch);\n }\n }\n\n // We didnt find\n if (!merged) {\n restree.push(path);\n }\n\n restree.sort(sortByPos$1);\n\n return {\n tree: restree,\n conflicts: conflicts || 'internal_node'\n };\n}\n\n// To ensure we don't grow the revision tree infinitely, we stem old revisions\nfunction stem(tree, depth) {\n // First we break out the tree into a complete list of root to leaf paths\n var paths = rootToLeaf(tree);\n var stemmedRevs;\n\n var result;\n for (var i = 0, len = paths.length; i < len; i++) {\n // Then for each path, we cut off the start of the path based on the\n // `depth` to stem to, and generate a new set of flat trees\n var path = paths[i];\n var stemmed = path.ids;\n var node;\n if (stemmed.length > depth) {\n // only do the stemming work if we actually need to stem\n if (!stemmedRevs) {\n stemmedRevs = {}; // avoid allocating this object unnecessarily\n }\n var numStemmed = stemmed.length - depth;\n node = {\n pos: path.pos + numStemmed,\n ids: pathToTree(stemmed, numStemmed)\n };\n\n for (var s = 0; s < numStemmed; s++) {\n var rev = (path.pos + s) + '-' + stemmed[s].id;\n stemmedRevs[rev] = true;\n }\n } else { // no need to actually stem\n node = {\n pos: path.pos,\n ids: pathToTree(stemmed, 0)\n };\n }\n\n // Then we remerge all those flat trees together, ensuring that we don't\n // connect trees that would go beyond the depth limit\n if (result) {\n result = doMerge(result, node, true).tree;\n } else {\n result = [node];\n }\n }\n\n // this is memory-heavy per Chrome profiler, avoid unless we actually stemmed\n if (stemmedRevs) {\n traverseRevTree(result, function (isLeaf, pos, revHash) {\n // some revisions may have been removed in a branch but not in another\n delete stemmedRevs[pos + '-' + revHash];\n });\n }\n\n return {\n tree: result,\n revs: stemmedRevs ? Object.keys(stemmedRevs) : []\n };\n}\n\nfunction merge(tree, path, depth) {\n var newTree = doMerge(tree, path);\n var stemmed = stem(newTree.tree, depth);\n return {\n tree: stemmed.tree,\n stemmedRevs: stemmed.revs,\n conflicts: newTree.conflicts\n };\n}\n\n// return true if a rev exists in the rev tree, false otherwise\nfunction revExists(revs, rev) {\n var toVisit = revs.slice();\n var splitRev = rev.split('-');\n var targetPos = parseInt(splitRev[0], 10);\n var targetId = splitRev[1];\n\n var node;\n while ((node = toVisit.pop())) {\n if (node.pos === targetPos && node.ids[0] === targetId) {\n return true;\n }\n var branches = node.ids[2];\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: node.pos + 1, ids: branches[i]});\n }\n }\n return false;\n}\n\nfunction getTrees(node) {\n return node.ids;\n}\n\n// check if a specific revision of a doc has been deleted\n// - metadata: the metadata object from the doc store\n// - rev: (optional) the revision to check. defaults to winning revision\nfunction isDeleted(metadata, rev) {\n if (!rev) {\n rev = winningRev(metadata);\n }\n var id = rev.substring(rev.indexOf('-') + 1);\n var toVisit = metadata.rev_tree.map(getTrees);\n\n var tree;\n while ((tree = toVisit.pop())) {\n if (tree[0] === id) {\n return !!tree[1].deleted;\n }\n toVisit = toVisit.concat(tree[2]);\n }\n}\n\nfunction isLocalId(id) {\n return typeof id === 'string' && id.startsWith('_local/');\n}\n\n// returns the current leaf node for a given revision\nfunction latest(rev, metadata) {\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id, pos, opts});\n\n if (isLeaf) {\n for (var i = 0, len = history.length; i < len; i++) {\n var historyNode = history[i];\n var historyRev = historyNode.pos + '-' + historyNode.id;\n\n if (historyRev === rev) {\n // return the rev of this leaf\n return pos + '-' + id;\n }\n }\n }\n\n for (var j = 0, l = branches.length; j < l; j++) {\n toVisit.push({pos: pos + 1, ids: branches[j], history});\n }\n }\n\n /* istanbul ignore next */\n throw new Error('Unable to resolve latest revision for id ' + metadata.id + ', rev ' + rev);\n}\n\nfunction tryCatchInChangeListener(self, change, pending, lastSeq) {\n // isolate try/catches to avoid V8 deoptimizations\n try {\n self.emit('change', change, pending, lastSeq);\n } catch (e) {\n guardedConsole('error', 'Error in .on(\"change\", function):', e);\n }\n}\n\nfunction processChange(doc, metadata, opts) {\n var changeList = [{rev: doc._rev}];\n if (opts.style === 'all_docs') {\n changeList = collectLeaves(metadata.rev_tree)\n .map(function (x) { return {rev: x.rev}; });\n }\n var change = {\n id: metadata.id,\n changes: changeList,\n doc\n };\n\n if (isDeleted(metadata, doc._rev)) {\n change.deleted = true;\n }\n if (opts.conflicts) {\n change.doc._conflicts = collectConflicts(metadata);\n if (!change.doc._conflicts.length) {\n delete change.doc._conflicts;\n }\n }\n return change;\n}\n\nclass Changes$1 extends EE {\n constructor(db, opts, callback) {\n super();\n this.db = db;\n opts = opts ? clone(opts) : {};\n var complete = opts.complete = once((err, resp) => {\n if (err) {\n if (listenerCount(this, 'error') > 0) {\n this.emit('error', err);\n }\n } else {\n this.emit('complete', resp);\n }\n this.removeAllListeners();\n db.removeListener('destroyed', onDestroy);\n });\n if (callback) {\n this.on('complete', function (resp) {\n callback(null, resp);\n });\n this.on('error', callback);\n }\n const onDestroy = () => {\n this.cancel();\n };\n db.once('destroyed', onDestroy);\n\n opts.onChange = (change, pending, lastSeq) => {\n /* istanbul ignore if */\n if (this.isCancelled) {\n return;\n }\n tryCatchInChangeListener(this, change, pending, lastSeq);\n };\n\n var promise = new Promise(function (fulfill, reject) {\n opts.complete = function (err, res) {\n if (err) {\n reject(err);\n } else {\n fulfill(res);\n }\n };\n });\n this.once('cancel', function () {\n db.removeListener('destroyed', onDestroy);\n opts.complete(null, {status: 'cancelled'});\n });\n this.then = promise.then.bind(promise);\n this['catch'] = promise['catch'].bind(promise);\n this.then(function (result) {\n complete(null, result);\n }, complete);\n\n\n\n if (!db.taskqueue.isReady) {\n db.taskqueue.addTask((failed) => {\n if (failed) {\n opts.complete(failed);\n } else if (this.isCancelled) {\n this.emit('cancel');\n } else {\n this.validateChanges(opts);\n }\n });\n } else {\n this.validateChanges(opts);\n }\n }\n\n cancel() {\n this.isCancelled = true;\n if (this.db.taskqueue.isReady) {\n this.emit('cancel');\n }\n }\n\n validateChanges(opts) {\n var callback = opts.complete;\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.validate(opts, (err) => {\n if (err) {\n return callback(err);\n }\n this.doChanges(opts);\n });\n } else {\n this.doChanges(opts);\n }\n }\n\n doChanges(opts) {\n var callback = opts.complete;\n\n opts = clone(opts);\n if ('live' in opts && !('continuous' in opts)) {\n opts.continuous = opts.live;\n }\n opts.processChange = processChange;\n\n if (opts.since === 'latest') {\n opts.since = 'now';\n }\n if (!opts.since) {\n opts.since = 0;\n }\n if (opts.since === 'now') {\n this.db.info().then((info) => {\n /* istanbul ignore if */\n if (this.isCancelled) {\n callback(null, {status: 'cancelled'});\n return;\n }\n opts.since = info.update_seq;\n this.doChanges(opts);\n }, callback);\n return;\n }\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.normalize(opts);\n if (PouchDB._changesFilterPlugin.shouldFilter(this, opts)) {\n return PouchDB._changesFilterPlugin.filter(this, opts);\n }\n } else {\n ['doc_ids', 'filter', 'selector', 'view'].forEach(function (key) {\n if (key in opts) {\n guardedConsole('warn',\n 'The \"' + key + '\" option was passed in to changes/replicate, ' +\n 'but pouchdb-changes-filter plugin is not installed, so it ' +\n 'was ignored. Please install the plugin to enable filtering.'\n );\n }\n });\n }\n\n if (!('descending' in opts)) {\n opts.descending = false;\n }\n\n // 0 and 1 should return 1 document\n opts.limit = opts.limit === 0 ? 1 : opts.limit;\n opts.complete = callback;\n var newPromise = this.db._changes(opts);\n /* istanbul ignore else */\n if (newPromise && typeof newPromise.cancel === 'function') {\n const cancel = this.cancel;\n this.cancel = (...args) => {\n newPromise.cancel();\n cancel.apply(this, args);\n };\n }\n }\n}\n\n/*\n * A generic pouch adapter\n */\n\n// Wrapper for functions that call the bulkdocs api with a single doc,\n// if the first result is an error, return an error\nfunction yankError(callback, docId) {\n return function (err, results) {\n if (err || (results[0] && results[0].error)) {\n err = err || results[0];\n err.docId = docId;\n callback(err);\n } else {\n callback(null, results.length ? results[0] : results);\n }\n };\n}\n\n// clean docs given to us by the user\nfunction cleanDocs(docs) {\n for (var i = 0; i < docs.length; i++) {\n var doc = docs[i];\n if (doc._deleted) {\n delete doc._attachments; // ignore atts for deleted docs\n } else if (doc._attachments) {\n // filter out extraneous keys from _attachments\n var atts = Object.keys(doc._attachments);\n for (var j = 0; j < atts.length; j++) {\n var att = atts[j];\n doc._attachments[att] = pick(doc._attachments[att],\n ['data', 'digest', 'content_type', 'length', 'revpos', 'stub']);\n }\n }\n }\n}\n\n// compare two docs, first by _id then by _rev\nfunction compareByIdThenRev(a, b) {\n if (a._id === b._id) {\n const aStart = a._revisions ? a._revisions.start : 0;\n const bStart = b._revisions ? b._revisions.start : 0;\n return aStart - bStart;\n }\n return a._id < b._id ? -1 : 1;\n}\n\n// for every node in a revision tree computes its distance from the closest\n// leaf\nfunction computeHeight(revs) {\n var height = {};\n var edges = [];\n traverseRevTree(revs, function (isLeaf, pos, id, prnt) {\n var rev$$1 = pos + \"-\" + id;\n if (isLeaf) {\n height[rev$$1] = 0;\n }\n if (prnt !== undefined) {\n edges.push({from: prnt, to: rev$$1});\n }\n return rev$$1;\n });\n\n edges.reverse();\n edges.forEach(function (edge) {\n if (height[edge.from] === undefined) {\n height[edge.from] = 1 + height[edge.to];\n } else {\n height[edge.from] = Math.min(height[edge.from], 1 + height[edge.to]);\n }\n });\n return height;\n}\n\nfunction allDocsKeysParse(opts) {\n var keys = ('limit' in opts) ?\n opts.keys.slice(opts.skip, opts.limit + opts.skip) :\n (opts.skip > 0) ? opts.keys.slice(opts.skip) : opts.keys;\n opts.keys = keys;\n opts.skip = 0;\n delete opts.limit;\n if (opts.descending) {\n keys.reverse();\n opts.descending = false;\n }\n}\n\n// all compaction is done in a queue, to avoid attaching\n// too many listeners at once\nfunction doNextCompaction(self) {\n var task = self._compactionQueue[0];\n var opts = task.opts;\n var callback = task.callback;\n self.get('_local/compaction').catch(function () {\n return false;\n }).then(function (doc) {\n if (doc && doc.last_seq) {\n opts.last_seq = doc.last_seq;\n }\n self._compact(opts, function (err, res) {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n } else {\n callback(null, res);\n }\n nextTick(function () {\n self._compactionQueue.shift();\n if (self._compactionQueue.length) {\n doNextCompaction(self);\n }\n });\n });\n });\n}\n\nfunction appendPurgeSeq(db, docId, rev$$1) {\n return db.get('_local/purges').then(function (doc) {\n const purgeSeq = doc.purgeSeq + 1;\n doc.purges.push({\n docId,\n rev: rev$$1,\n purgeSeq,\n });\n if (doc.purges.length > self.purged_infos_limit) {\n doc.purges.splice(0, doc.purges.length - self.purged_infos_limit);\n }\n doc.purgeSeq = purgeSeq;\n return doc;\n }).catch(function (err) {\n if (err.status !== 404) {\n throw err;\n }\n return {\n _id: '_local/purges',\n purges: [{\n docId,\n rev: rev$$1,\n purgeSeq: 0,\n }],\n purgeSeq: 0,\n };\n }).then(function (doc) {\n return db.put(doc);\n });\n}\n\nfunction attachmentNameError(name) {\n if (name.charAt(0) === '_') {\n return name + ' is not a valid attachment name, attachment ' +\n 'names cannot start with \\'_\\'';\n }\n return false;\n}\n\nfunction isNotSingleDoc(doc) {\n return doc === null || typeof doc !== 'object' || Array.isArray(doc);\n}\n\nconst validRevRegex = /^\\d+-[^-]*$/;\nfunction isValidRev(rev$$1) {\n return typeof rev$$1 === 'string' && validRevRegex.test(rev$$1);\n}\n\nclass AbstractPouchDB extends EE {\n _setup() {\n this.post = adapterFun('post', function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (isNotSingleDoc(doc)) {\n return callback(createError(NOT_AN_OBJECT));\n }\n this.bulkDocs({docs: [doc]}, opts, yankError(callback, doc._id));\n }).bind(this);\n\n this.put = adapterFun('put', function (doc, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n if (isNotSingleDoc(doc)) {\n return cb(createError(NOT_AN_OBJECT));\n }\n invalidIdError(doc._id);\n if ('_rev' in doc && !isValidRev(doc._rev)) {\n return cb(createError(INVALID_REV));\n }\n if (isLocalId(doc._id) && typeof this._putLocal === 'function') {\n if (doc._deleted) {\n return this._removeLocal(doc, cb);\n } else {\n return this._putLocal(doc, cb);\n }\n }\n\n const putDoc = (next) => {\n if (typeof this._put === 'function' && opts.new_edits !== false) {\n this._put(doc, opts, next);\n } else {\n this.bulkDocs({docs: [doc]}, opts, yankError(next, doc._id));\n }\n };\n\n if (opts.force && doc._rev) {\n transformForceOptionToNewEditsOption();\n putDoc(function (err) {\n var result = err ? null : {ok: true, id: doc._id, rev: doc._rev};\n cb(err, result);\n });\n } else {\n putDoc(cb);\n }\n\n function transformForceOptionToNewEditsOption() {\n var parts = doc._rev.split('-');\n var oldRevId = parts[1];\n var oldRevNum = parseInt(parts[0], 10);\n\n var newRevNum = oldRevNum + 1;\n var newRevId = rev();\n\n doc._revisions = {\n start: newRevNum,\n ids: [newRevId, oldRevId]\n };\n doc._rev = newRevNum + '-' + newRevId;\n opts.new_edits = false;\n }\n }).bind(this);\n\n this.putAttachment = adapterFun('putAttachment', function (docId, attachmentId, rev$$1, blob, type) {\n var api = this;\n if (typeof type === 'function') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n // Lets fix in https://github.com/pouchdb/pouchdb/issues/3267\n /* istanbul ignore if */\n if (typeof type === 'undefined') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n if (!type) {\n guardedConsole('warn', 'Attachment', attachmentId, 'on document', docId, 'is missing content_type');\n }\n\n function createAttachment(doc) {\n var prevrevpos = '_rev' in doc ? parseInt(doc._rev, 10) : 0;\n doc._attachments = doc._attachments || {};\n doc._attachments[attachmentId] = {\n content_type: type,\n data: blob,\n revpos: ++prevrevpos\n };\n return api.put(doc);\n }\n\n return api.get(docId).then(function (doc) {\n if (doc._rev !== rev$$1) {\n throw createError(REV_CONFLICT);\n }\n\n return createAttachment(doc);\n }, function (err) {\n // create new doc\n /* istanbul ignore else */\n if (err.reason === MISSING_DOC.message) {\n return createAttachment({_id: docId});\n } else {\n throw err;\n }\n });\n }).bind(this);\n\n this.removeAttachment = adapterFun('removeAttachment', function (docId, attachmentId, rev$$1, callback) {\n this.get(docId, (err, obj) => {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n return;\n }\n if (obj._rev !== rev$$1) {\n callback(createError(REV_CONFLICT));\n return;\n }\n /* istanbul ignore if */\n if (!obj._attachments) {\n return callback();\n }\n delete obj._attachments[attachmentId];\n if (Object.keys(obj._attachments).length === 0) {\n delete obj._attachments;\n }\n this.put(obj, callback);\n });\n }).bind(this);\n\n this.remove = adapterFun('remove', function (docOrId, optsOrRev, opts, callback) {\n var doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n callback = optsOrRev;\n opts = {};\n } else {\n callback = opts;\n opts = optsOrRev;\n }\n }\n opts = opts || {};\n opts.was_delete = true;\n var newDoc = {_id: doc._id, _rev: (doc._rev || opts.rev)};\n newDoc._deleted = true;\n if (isLocalId(newDoc._id) && typeof this._removeLocal === 'function') {\n return this._removeLocal(doc, callback);\n }\n this.bulkDocs({docs: [newDoc]}, opts, yankError(callback, newDoc._id));\n }).bind(this);\n\n this.revsDiff = adapterFun('revsDiff', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var ids = Object.keys(req);\n\n if (!ids.length) {\n return callback(null, {});\n }\n\n var count = 0;\n var missing = new Map();\n\n function addToMissing(id, revId) {\n if (!missing.has(id)) {\n missing.set(id, {missing: []});\n }\n missing.get(id).missing.push(revId);\n }\n\n function processDoc(id, rev_tree) {\n // Is this fast enough? Maybe we should switch to a set simulated by a map\n var missingForId = req[id].slice(0);\n traverseRevTree(rev_tree, function (isLeaf, pos, revHash, ctx,\n opts) {\n var rev$$1 = pos + '-' + revHash;\n var idx = missingForId.indexOf(rev$$1);\n if (idx === -1) {\n return;\n }\n\n missingForId.splice(idx, 1);\n /* istanbul ignore if */\n if (opts.status !== 'available') {\n addToMissing(id, rev$$1);\n }\n });\n\n // Traversing the tree is synchronous, so now `missingForId` contains\n // revisions that were not found in the tree\n missingForId.forEach(function (rev$$1) {\n addToMissing(id, rev$$1);\n });\n }\n\n ids.forEach(function (id) {\n this._getRevisionTree(id, function (err, rev_tree) {\n if (err && err.status === 404 && err.message === 'missing') {\n missing.set(id, {missing: req[id]});\n } else if (err) {\n /* istanbul ignore next */\n return callback(err);\n } else {\n processDoc(id, rev_tree);\n }\n\n if (++count === ids.length) {\n // convert LazyMap to object\n var missingObj = {};\n missing.forEach(function (value, key) {\n missingObj[key] = value;\n });\n return callback(null, missingObj);\n }\n });\n }, this);\n }).bind(this);\n\n // _bulk_get API for faster replication, as described in\n // https://github.com/apache/couchdb-chttpd/pull/33\n // At the \"abstract\" level, it will just run multiple get()s in\n // parallel, because this isn't much of a performance cost\n // for local databases (except the cost of multiple transactions, which is\n // small). The http adapter overrides this in order\n // to do a more efficient single HTTP request.\n this.bulkGet = adapterFun('bulkGet', function (opts, callback) {\n bulkGet(this, opts, callback);\n }).bind(this);\n\n // compact one document and fire callback\n // by compacting we mean removing all revisions which\n // are further from the leaf in revision tree than max_height\n this.compactDocument = adapterFun('compactDocument', function (docId, maxHeight, callback) {\n this._getRevisionTree(docId, (err, revTree) => {\n /* istanbul ignore if */\n if (err) {\n return callback(err);\n }\n var height = computeHeight(revTree);\n var candidates = [];\n var revs = [];\n Object.keys(height).forEach(function (rev$$1) {\n if (height[rev$$1] > maxHeight) {\n candidates.push(rev$$1);\n }\n });\n\n traverseRevTree(revTree, function (isLeaf, pos, revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (opts.status === 'available' && candidates.indexOf(rev$$1) !== -1) {\n revs.push(rev$$1);\n }\n });\n this._doCompaction(docId, revs, callback);\n });\n }).bind(this);\n\n // compact the whole database using single document\n // compaction\n this.compact = adapterFun('compact', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n this._compactionQueue = this._compactionQueue || [];\n this._compactionQueue.push({opts, callback});\n if (this._compactionQueue.length === 1) {\n doNextCompaction(this);\n }\n }).bind(this);\n\n /* Begin api wrappers. Specific functionality to storage belongs in the _[method] */\n this.get = adapterFun('get', function (id, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n opts = opts || {};\n if (typeof id !== 'string') {\n return cb(createError(INVALID_ID));\n }\n if (isLocalId(id) && typeof this._getLocal === 'function') {\n return this._getLocal(id, cb);\n }\n var leaves = [];\n\n const finishOpenRevs = () => {\n var result = [];\n var count = leaves.length;\n /* istanbul ignore if */\n if (!count) {\n return cb(null, result);\n }\n\n // order with open_revs is unspecified\n leaves.forEach((leaf) => {\n this.get(id, {\n rev: leaf,\n revs: opts.revs,\n latest: opts.latest,\n attachments: opts.attachments,\n binary: opts.binary\n }, function (err, doc) {\n if (!err) {\n // using latest=true can produce duplicates\n var existing;\n for (var i = 0, l = result.length; i < l; i++) {\n if (result[i].ok && result[i].ok._rev === doc._rev) {\n existing = true;\n break;\n }\n }\n if (!existing) {\n result.push({ok: doc});\n }\n } else {\n result.push({missing: leaf});\n }\n count--;\n if (!count) {\n cb(null, result);\n }\n });\n });\n };\n\n if (opts.open_revs) {\n if (opts.open_revs === \"all\") {\n this._getRevisionTree(id, function (err, rev_tree) {\n /* istanbul ignore if */\n if (err) {\n return cb(err);\n }\n leaves = collectLeaves(rev_tree).map(function (leaf) {\n return leaf.rev;\n });\n finishOpenRevs();\n });\n } else {\n if (Array.isArray(opts.open_revs)) {\n leaves = opts.open_revs;\n for (var i = 0; i < leaves.length; i++) {\n var l = leaves[i];\n // looks like it's the only thing couchdb checks\n if (!isValidRev(l)) {\n return cb(createError(INVALID_REV));\n }\n }\n finishOpenRevs();\n } else {\n return cb(createError(UNKNOWN_ERROR, 'function_clause'));\n }\n }\n return; // open_revs does not like other options\n }\n\n return this._get(id, opts, (err, result) => {\n if (err) {\n err.docId = id;\n return cb(err);\n }\n\n var doc = result.doc;\n var metadata = result.metadata;\n var ctx = result.ctx;\n\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n doc._conflicts = conflicts;\n }\n }\n\n if (isDeleted(metadata, doc._rev)) {\n doc._deleted = true;\n }\n\n if (opts.revs || opts.revs_info) {\n var splittedRev = doc._rev.split('-');\n var revNo = parseInt(splittedRev[0], 10);\n var revHash = splittedRev[1];\n\n var paths = rootToLeaf(metadata.rev_tree);\n var path = null;\n\n for (var i = 0; i < paths.length; i++) {\n var currentPath = paths[i];\n const hashIndex = currentPath.ids.findIndex(x => x.id === revHash);\n var hashFoundAtRevPos = hashIndex === (revNo - 1);\n\n if (hashFoundAtRevPos || (!path && hashIndex !== -1)) {\n path = currentPath;\n }\n }\n\n /* istanbul ignore if */\n if (!path) {\n err = new Error('invalid rev tree');\n err.docId = id;\n return cb(err);\n }\n\n const pathId = doc._rev.split('-')[1];\n const indexOfRev = path.ids.findIndex(x => x.id === pathId) + 1;\n var howMany = path.ids.length - indexOfRev;\n path.ids.splice(indexOfRev, howMany);\n path.ids.reverse();\n\n if (opts.revs) {\n doc._revisions = {\n start: (path.pos + path.ids.length) - 1,\n ids: path.ids.map(function (rev$$1) {\n return rev$$1.id;\n })\n };\n }\n if (opts.revs_info) {\n var pos = path.pos + path.ids.length;\n doc._revs_info = path.ids.map(function (rev$$1) {\n pos--;\n return {\n rev: pos + '-' + rev$$1.id,\n status: rev$$1.opts.status\n };\n });\n }\n }\n\n if (opts.attachments && doc._attachments) {\n var attachments = doc._attachments;\n var count = Object.keys(attachments).length;\n if (count === 0) {\n return cb(null, doc);\n }\n Object.keys(attachments).forEach((key) => {\n this._getAttachment(doc._id, key, attachments[key], {\n binary: opts.binary,\n metadata,\n ctx\n }, function (err, data) {\n var att = doc._attachments[key];\n att.data = data;\n delete att.stub;\n delete att.length;\n if (!--count) {\n cb(null, doc);\n }\n });\n });\n } else {\n if (doc._attachments) {\n for (var key in doc._attachments) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(doc._attachments, key)) {\n doc._attachments[key].stub = true;\n }\n }\n }\n cb(null, doc);\n }\n });\n }).bind(this);\n\n // TODO: I don't like this, it forces an extra read for every\n // attachment read and enforces a confusing api between\n // adapter.js and the adapter implementation\n this.getAttachment = adapterFun('getAttachment', function (docId, attachmentId, opts, callback) {\n if (opts instanceof Function) {\n callback = opts;\n opts = {};\n }\n this._get(docId, opts, (err, res) => {\n if (err) {\n return callback(err);\n }\n if (res.doc._attachments && res.doc._attachments[attachmentId]) {\n opts.ctx = res.ctx;\n opts.binary = true;\n opts.metadata = res.metadata;\n this._getAttachment(docId, attachmentId,\n res.doc._attachments[attachmentId], opts, callback);\n } else {\n return callback(createError(MISSING_DOC));\n }\n });\n }).bind(this);\n\n this.allDocs = adapterFun('allDocs', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts.skip = typeof opts.skip !== 'undefined' ? opts.skip : 0;\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n if ('keys' in opts) {\n if (!Array.isArray(opts.keys)) {\n return callback(new TypeError('options.keys must be an array'));\n }\n var incompatibleOpt =\n ['startkey', 'endkey', 'key'].filter(function (incompatibleOpt) {\n return incompatibleOpt in opts;\n })[0];\n if (incompatibleOpt) {\n callback(createError(QUERY_PARSE_ERROR,\n 'Query parameter `' + incompatibleOpt +\n '` is not compatible with multi-get'\n ));\n return;\n }\n if (!isRemote(this)) {\n allDocsKeysParse(opts);\n if (opts.keys.length === 0) {\n return this._allDocs({limit: 0}, callback);\n }\n }\n }\n\n return this._allDocs(opts, callback);\n }).bind(this);\n\n this.close = adapterFun('close', function (callback) {\n this._closed = true;\n this.emit('closed');\n return this._close(callback);\n }).bind(this);\n\n this.info = adapterFun('info', function (callback) {\n this._info((err, info) => {\n if (err) {\n return callback(err);\n }\n // assume we know better than the adapter, unless it informs us\n info.db_name = info.db_name || this.name;\n info.auto_compaction = !!(this.auto_compaction && !isRemote(this));\n info.adapter = this.adapter;\n callback(null, info);\n });\n }).bind(this);\n\n this.id = adapterFun('id', function (callback) {\n return this._id(callback);\n }).bind(this);\n\n this.bulkDocs = adapterFun('bulkDocs', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n if (Array.isArray(req)) {\n req = {\n docs: req\n };\n }\n\n if (!req || !req.docs || !Array.isArray(req.docs)) {\n return callback(createError(MISSING_BULK_DOCS));\n }\n\n for (var i = 0; i < req.docs.length; ++i) {\n const doc = req.docs[i];\n if (isNotSingleDoc(doc)) {\n return callback(createError(NOT_AN_OBJECT));\n }\n if ('_rev' in doc && !isValidRev(doc._rev)) {\n return callback(createError(INVALID_REV));\n }\n }\n\n var attachmentError;\n req.docs.forEach(function (doc) {\n if (doc._attachments) {\n Object.keys(doc._attachments).forEach(function (name) {\n attachmentError = attachmentError || attachmentNameError(name);\n if (!doc._attachments[name].content_type) {\n guardedConsole('warn', 'Attachment', name, 'on document', doc._id, 'is missing content_type');\n }\n });\n }\n });\n\n if (attachmentError) {\n return callback(createError(BAD_REQUEST, attachmentError));\n }\n\n if (!('new_edits' in opts)) {\n if ('new_edits' in req) {\n opts.new_edits = req.new_edits;\n } else {\n opts.new_edits = true;\n }\n }\n\n var adapter = this;\n if (!opts.new_edits && !isRemote(adapter)) {\n // ensure revisions of the same doc are sorted, so that\n // the local adapter processes them correctly (#2935)\n req.docs.sort(compareByIdThenRev);\n }\n\n cleanDocs(req.docs);\n\n // in the case of conflicts, we want to return the _ids to the user\n // however, the underlying adapter may destroy the docs array, so\n // create a copy here\n var ids = req.docs.map(function (doc) {\n return doc._id;\n });\n\n this._bulkDocs(req, opts, function (err, res) {\n if (err) {\n return callback(err);\n }\n if (!opts.new_edits) {\n // this is what couch does when new_edits is false\n res = res.filter(function (x) {\n return x.error;\n });\n }\n // add ids for error/conflict responses (not required for CouchDB)\n if (!isRemote(adapter)) {\n for (var i = 0, l = res.length; i < l; i++) {\n res[i].id = res[i].id || ids[i];\n }\n }\n\n callback(null, res);\n });\n }).bind(this);\n\n this.registerDependentDatabase = adapterFun('registerDependentDatabase', function (dependentDb, callback) {\n var dbOptions = clone(this.__opts);\n if (this.__opts.view_adapter) {\n dbOptions.adapter = this.__opts.view_adapter;\n }\n\n var depDB = new this.constructor(dependentDb, dbOptions);\n\n function diffFun(doc) {\n doc.dependentDbs = doc.dependentDbs || {};\n if (doc.dependentDbs[dependentDb]) {\n return false; // no update required\n }\n doc.dependentDbs[dependentDb] = true;\n return doc;\n }\n upsert(this, '_local/_pouch_dependentDbs', diffFun).then(function () {\n callback(null, {db: depDB});\n }).catch(callback);\n }).bind(this);\n\n this.destroy = adapterFun('destroy', function (opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n var usePrefix = 'use_prefix' in this ? this.use_prefix : true;\n\n const destroyDb = () => {\n // call destroy method of the particular adaptor\n this._destroy(opts, (err, resp) => {\n if (err) {\n return callback(err);\n }\n this._destroyed = true;\n this.emit('destroyed');\n callback(null, resp || { 'ok': true });\n });\n };\n\n if (isRemote(this)) {\n // no need to check for dependent DBs if it's a remote DB\n return destroyDb();\n }\n\n this.get('_local/_pouch_dependentDbs', (err, localDoc) => {\n if (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n return callback(err);\n } else { // no dependencies\n return destroyDb();\n }\n }\n var dependentDbs = localDoc.dependentDbs;\n var PouchDB = this.constructor;\n var deletedMap = Object.keys(dependentDbs).map((name) => {\n // use_prefix is only false in the browser\n /* istanbul ignore next */\n var trueName = usePrefix ?\n name.replace(new RegExp('^' + PouchDB.prefix), '') : name;\n return new PouchDB(trueName, this.__opts).destroy();\n });\n Promise.all(deletedMap).then(destroyDb, callback);\n });\n }).bind(this);\n }\n\n _compact(opts, callback) {\n var changesOpts = {\n return_docs: false,\n last_seq: opts.last_seq || 0,\n since: opts.last_seq || 0\n };\n var promises = [];\n\n var taskId;\n var compactedDocs = 0;\n\n const onChange = (row) => {\n this.activeTasks.update(taskId, {\n completed_items: ++compactedDocs\n });\n promises.push(this.compactDocument(row.id, 0));\n };\n const onError = (err) => {\n this.activeTasks.remove(taskId, err);\n callback(err);\n };\n const onComplete = (resp) => {\n var lastSeq = resp.last_seq;\n Promise.all(promises).then(() => {\n return upsert(this, '_local/compaction', (doc) => {\n if (!doc.last_seq || doc.last_seq < lastSeq) {\n doc.last_seq = lastSeq;\n return doc;\n }\n return false; // somebody else got here first, don't update\n });\n }).then(() => {\n this.activeTasks.remove(taskId);\n callback(null, {ok: true});\n }).catch(onError);\n };\n\n this.info().then((info) => {\n taskId = this.activeTasks.add({\n name: 'database_compaction',\n total_items: info.update_seq - changesOpts.last_seq,\n });\n\n this.changes(changesOpts)\n .on('change', onChange)\n .on('complete', onComplete)\n .on('error', onError);\n });\n }\n\n changes(opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n // By default set return_docs to false if the caller has opts.live = true,\n // this will prevent us from collecting the set of changes indefinitely\n // resulting in growing memory\n opts.return_docs = ('return_docs' in opts) ? opts.return_docs : !opts.live;\n\n return new Changes$1(this, opts, callback);\n }\n\n type() {\n return (typeof this._type === 'function') ? this._type() : this.adapter;\n }\n}\n\n// The abstract purge implementation expects a doc id and the rev of a leaf node in that doc.\n// It will return errors if the rev doesn\u2019t exist or isn\u2019t a leaf.\nAbstractPouchDB.prototype.purge = adapterFun('_purge', function (docId, rev$$1, callback) {\n if (typeof this._purge === 'undefined') {\n return callback(createError(UNKNOWN_ERROR, 'Purge is not implemented in the ' + this.adapter + ' adapter.'));\n }\n var self = this;\n\n self._getRevisionTree(docId, (error, revs) => {\n if (error) {\n return callback(error);\n }\n if (!revs) {\n return callback(createError(MISSING_DOC));\n }\n let path;\n try {\n path = findPathToLeaf(revs, rev$$1);\n } catch (error) {\n return callback(error.message || error);\n }\n self._purge(docId, path, (error, result) => {\n if (error) {\n return callback(error);\n } else {\n appendPurgeSeq(self, docId, rev$$1).then(function () {\n return callback(null, result);\n });\n }\n });\n });\n});\n\nclass TaskQueue {\n constructor() {\n this.isReady = false;\n this.failed = false;\n this.queue = [];\n }\n\n execute() {\n var fun;\n if (this.failed) {\n while ((fun = this.queue.shift())) {\n fun(this.failed);\n }\n } else {\n while ((fun = this.queue.shift())) {\n fun();\n }\n }\n }\n\n fail(err) {\n this.failed = err;\n this.execute();\n }\n\n ready(db) {\n this.isReady = true;\n this.db = db;\n this.execute();\n }\n\n addTask(fun) {\n this.queue.push(fun);\n if (this.failed) {\n this.execute();\n }\n }\n}\n\nfunction parseAdapter(name, opts) {\n var match = name.match(/([a-z-]*):\\/\\/(.*)/);\n if (match) {\n // the http adapter expects the fully qualified name\n return {\n name: /https?/.test(match[1]) ? match[1] + '://' + match[2] : match[2],\n adapter: match[1]\n };\n }\n\n var adapters = PouchDB.adapters;\n var preferredAdapters = PouchDB.preferredAdapters;\n var prefix = PouchDB.prefix;\n var adapterName = opts.adapter;\n\n if (!adapterName) { // automatically determine adapter\n for (var i = 0; i < preferredAdapters.length; ++i) {\n adapterName = preferredAdapters[i];\n // check for browsers that have been upgraded from websql-only to websql+idb\n /* istanbul ignore if */\n if (adapterName === 'idb' && 'websql' in adapters &&\n hasLocalStorage() && localStorage['_pouch__websqldb_' + prefix + name]) {\n // log it, because this can be confusing during development\n guardedConsole('log', 'PouchDB is downgrading \"' + name + '\" to WebSQL to' +\n ' avoid data loss, because it was already opened with WebSQL.');\n continue; // keep using websql to avoid user data loss\n }\n break;\n }\n }\n\n var adapter = adapters[adapterName];\n\n // if adapter is invalid, then an error will be thrown later\n var usePrefix = (adapter && 'use_prefix' in adapter) ?\n adapter.use_prefix : true;\n\n return {\n name: usePrefix ? (prefix + name) : name,\n adapter: adapterName\n };\n}\n\nfunction inherits(A, B) {\n A.prototype = Object.create(B.prototype, {\n constructor: { value: A }\n });\n}\n\nfunction createClass(parent, init) {\n let klass = function (...args) {\n if (!(this instanceof klass)) {\n return new klass(...args);\n }\n init.apply(this, args);\n };\n inherits(klass, parent);\n return klass;\n}\n\n// OK, so here's the deal. Consider this code:\n// var db1 = new PouchDB('foo');\n// var db2 = new PouchDB('foo');\n// db1.destroy();\n// ^ these two both need to emit 'destroyed' events,\n// as well as the PouchDB constructor itself.\n// So we have one db object (whichever one got destroy() called on it)\n// responsible for emitting the initial event, which then gets emitted\n// by the constructor, which then broadcasts it to any other dbs\n// that may have been created with the same name.\nfunction prepareForDestruction(self) {\n\n function onDestroyed(from_constructor) {\n self.removeListener('closed', onClosed);\n if (!from_constructor) {\n self.constructor.emit('destroyed', self.name);\n }\n }\n\n function onClosed() {\n self.removeListener('destroyed', onDestroyed);\n self.constructor.emit('unref', self);\n }\n\n self.once('destroyed', onDestroyed);\n self.once('closed', onClosed);\n self.constructor.emit('ref', self);\n}\n\nclass PouchInternal extends AbstractPouchDB {\n constructor(name, opts) {\n super();\n this._setup(name, opts);\n }\n\n _setup(name, opts) {\n super._setup();\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n if (opts.deterministic_revs === undefined) {\n opts.deterministic_revs = true;\n }\n\n this.__opts = opts = clone(opts);\n\n this.auto_compaction = opts.auto_compaction;\n this.purged_infos_limit = opts.purged_infos_limit || 1000;\n this.prefix = PouchDB.prefix;\n\n if (typeof name !== 'string') {\n throw new Error('Missing/invalid DB name');\n }\n\n var prefixedName = (opts.prefix || '') + name;\n var backend = parseAdapter(prefixedName, opts);\n\n opts.name = backend.name;\n opts.adapter = opts.adapter || backend.adapter;\n\n this.name = name;\n this._adapter = opts.adapter;\n PouchDB.emit('debug', ['adapter', 'Picked adapter: ', opts.adapter]);\n\n if (!PouchDB.adapters[opts.adapter] ||\n !PouchDB.adapters[opts.adapter].valid()) {\n throw new Error('Invalid Adapter: ' + opts.adapter);\n }\n\n if (opts.view_adapter) {\n if (!PouchDB.adapters[opts.view_adapter] ||\n !PouchDB.adapters[opts.view_adapter].valid()) {\n throw new Error('Invalid View Adapter: ' + opts.view_adapter);\n }\n }\n\n this.taskqueue = new TaskQueue();\n\n this.adapter = opts.adapter;\n\n PouchDB.adapters[opts.adapter].call(this, opts, (err) => {\n if (err) {\n return this.taskqueue.fail(err);\n }\n prepareForDestruction(this);\n\n this.emit('created', this);\n PouchDB.emit('created', this.name);\n this.taskqueue.ready(this);\n });\n }\n}\n\nconst PouchDB = createClass(PouchInternal, function (name, opts) {\n PouchInternal.prototype._setup.call(this, name, opts);\n});\n\nvar f$1 = fetch;\nvar h = Headers;\n\nclass ActiveTasks {\n constructor() {\n this.tasks = {};\n }\n\n list() {\n return Object.values(this.tasks);\n }\n\n add(task) {\n const id = v4();\n this.tasks[id] = {\n id,\n name: task.name,\n total_items: task.total_items,\n created_at: new Date().toJSON()\n };\n return id;\n }\n\n get(id) {\n return this.tasks[id];\n }\n\n /* eslint-disable no-unused-vars */\n remove(id, reason) {\n delete this.tasks[id];\n return this.tasks;\n }\n\n update(id, updatedTask) {\n const task = this.tasks[id];\n if (typeof task !== 'undefined') {\n const mergedTask = {\n id: task.id,\n name: task.name,\n created_at: task.created_at,\n total_items: updatedTask.total_items || task.total_items,\n completed_items: updatedTask.completed_items || task.completed_items,\n updated_at: new Date().toJSON()\n };\n this.tasks[id] = mergedTask;\n }\n return this.tasks;\n }\n}\n\nPouchDB.adapters = {};\nPouchDB.preferredAdapters = [];\n\nPouchDB.prefix = '_pouch_';\n\nvar eventEmitter = new EE();\n\nfunction setUpEventEmitter(Pouch) {\n Object.keys(EE.prototype).forEach(function (key) {\n if (typeof EE.prototype[key] === 'function') {\n Pouch[key] = eventEmitter[key].bind(eventEmitter);\n }\n });\n\n // these are created in constructor.js, and allow us to notify each DB with\n // the same name that it was destroyed, via the constructor object\n var destructListeners = Pouch._destructionListeners = new Map();\n\n Pouch.on('ref', function onConstructorRef(db) {\n if (!destructListeners.has(db.name)) {\n destructListeners.set(db.name, []);\n }\n destructListeners.get(db.name).push(db);\n });\n\n Pouch.on('unref', function onConstructorUnref(db) {\n if (!destructListeners.has(db.name)) {\n return;\n }\n var dbList = destructListeners.get(db.name);\n var pos = dbList.indexOf(db);\n if (pos < 0) {\n /* istanbul ignore next */\n return;\n }\n dbList.splice(pos, 1);\n if (dbList.length > 1) {\n /* istanbul ignore next */\n destructListeners.set(db.name, dbList);\n } else {\n destructListeners.delete(db.name);\n }\n });\n\n Pouch.on('destroyed', function onConstructorDestroyed(name) {\n if (!destructListeners.has(name)) {\n return;\n }\n var dbList = destructListeners.get(name);\n destructListeners.delete(name);\n dbList.forEach(function (db) {\n db.emit('destroyed',true);\n });\n });\n}\n\nsetUpEventEmitter(PouchDB);\n\nPouchDB.adapter = function (id, obj, addToPreferredAdapters) {\n /* istanbul ignore else */\n if (obj.valid()) {\n PouchDB.adapters[id] = obj;\n if (addToPreferredAdapters) {\n PouchDB.preferredAdapters.push(id);\n }\n }\n};\n\nPouchDB.plugin = function (obj) {\n if (typeof obj === 'function') { // function style for plugins\n obj(PouchDB);\n } else if (typeof obj !== 'object' || Object.keys(obj).length === 0) {\n throw new Error('Invalid plugin: got \"' + obj + '\", expected an object or a function');\n } else {\n Object.keys(obj).forEach(function (id) { // object style for plugins\n PouchDB.prototype[id] = obj[id];\n });\n }\n if (this.__defaults) {\n PouchDB.__defaults = Object.assign({}, this.__defaults);\n }\n return PouchDB;\n};\n\nPouchDB.defaults = function (defaultOpts) {\n let PouchWithDefaults = createClass(PouchDB, function (name, opts) {\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n opts = Object.assign({}, PouchWithDefaults.__defaults, opts);\n PouchDB.call(this, name, opts);\n });\n\n PouchWithDefaults.preferredAdapters = PouchDB.preferredAdapters.slice();\n Object.keys(PouchDB).forEach(function (key) {\n if (!(key in PouchWithDefaults)) {\n PouchWithDefaults[key] = PouchDB[key];\n }\n });\n\n // make default options transitive\n // https://github.com/pouchdb/pouchdb/issues/5922\n PouchWithDefaults.__defaults = Object.assign({}, this.__defaults, defaultOpts);\n\n return PouchWithDefaults;\n};\n\nPouchDB.fetch = function (url, opts) {\n return f$1(url, opts);\n};\n\nPouchDB.prototype.activeTasks = PouchDB.activeTasks = new ActiveTasks();\n\n// managed automatically by set-version.js\nvar version = \"9.0.0\";\n\n// this would just be \"return doc[field]\", but fields\n// can be \"deep\" due to dot notation\nfunction getFieldFromDoc(doc, parsedField) {\n var value = doc;\n for (var i = 0, len = parsedField.length; i < len; i++) {\n var key = parsedField[i];\n value = value[key];\n if (!value) {\n break;\n }\n }\n return value;\n}\n\nfunction compare(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\n// Converts a string in dot notation to an array of its components, with backslash escaping\nfunction parseField(fieldName) {\n // fields may be deep (e.g. \"foo.bar.baz\"), so parse\n var fields = [];\n var current = '';\n for (var i = 0, len = fieldName.length; i < len; i++) {\n var ch = fieldName[i];\n if (i > 0 && fieldName[i - 1] === '\\\\' && (ch === '$' || ch === '.')) {\n // escaped delimiter\n current = current.substring(0, current.length - 1) + ch;\n } else if (ch === '.') {\n // When `.` is not escaped (above), it is a field delimiter\n fields.push(current);\n current = '';\n } else { // normal character\n current += ch;\n }\n }\n fields.push(current);\n return fields;\n}\n\nvar combinationFields = ['$or', '$nor', '$not'];\nfunction isCombinationalField(field) {\n return combinationFields.indexOf(field) > -1;\n}\n\nfunction getKey(obj) {\n return Object.keys(obj)[0];\n}\n\nfunction getValue(obj) {\n return obj[getKey(obj)];\n}\n\n\n// flatten an array of selectors joined by an $and operator\nfunction mergeAndedSelectors(selectors) {\n\n // sort to ensure that e.g. if the user specified\n // $and: [{$gt: 'a'}, {$gt: 'b'}], then it's collapsed into\n // just {$gt: 'b'}\n var res = {};\n var first = {$or: true, $nor: true};\n\n selectors.forEach(function (selector) {\n Object.keys(selector).forEach(function (field) {\n var matcher = selector[field];\n if (typeof matcher !== 'object') {\n matcher = {$eq: matcher};\n }\n\n if (isCombinationalField(field)) {\n // or, nor\n if (matcher instanceof Array) {\n if (first[field]) {\n first[field] = false;\n res[field] = matcher;\n return;\n }\n\n var entries = [];\n res[field].forEach(function (existing) {\n Object.keys(matcher).forEach(function (key) {\n var m = matcher[key];\n var longest = Math.max(Object.keys(existing).length, Object.keys(m).length);\n var merged = mergeAndedSelectors([existing, m]);\n if (Object.keys(merged).length <= longest) {\n // we have a situation like: (a :{$eq :1} || ...) && (a {$eq: 2} || ...)\n // merging would produce a $eq 2 when actually we shouldn't ever match against these merged conditions\n // merged should always contain more values to be valid\n return;\n }\n entries.push(merged);\n });\n });\n res[field] = entries;\n } else {\n // not\n res[field] = mergeAndedSelectors([matcher]);\n }\n } else {\n var fieldMatchers = res[field] = res[field] || {};\n Object.keys(matcher).forEach(function (operator) {\n var value = matcher[operator];\n\n if (operator === '$gt' || operator === '$gte') {\n return mergeGtGte(operator, value, fieldMatchers);\n } else if (operator === '$lt' || operator === '$lte') {\n return mergeLtLte(operator, value, fieldMatchers);\n } else if (operator === '$ne') {\n return mergeNe(value, fieldMatchers);\n } else if (operator === '$eq') {\n return mergeEq(value, fieldMatchers);\n } else if (operator === \"$regex\") {\n return mergeRegex(value, fieldMatchers);\n }\n fieldMatchers[operator] = value;\n });\n }\n });\n });\n\n return res;\n}\n\n\n\n// collapse logically equivalent gt/gte values\nfunction mergeGtGte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$gte !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gte) { // more specificity\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value >= fieldMatchers.$gte) { // more specificity\n delete fieldMatchers.$gte;\n fieldMatchers.$gt = value;\n }\n }\n } else if (typeof fieldMatchers.$gt !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gt) { // more specificity\n delete fieldMatchers.$gt;\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value > fieldMatchers.$gt) { // more specificity\n fieldMatchers.$gt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// collapse logically equivalent lt/lte values\nfunction mergeLtLte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$lte !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lte) { // more specificity\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value <= fieldMatchers.$lte) { // more specificity\n delete fieldMatchers.$lte;\n fieldMatchers.$lt = value;\n }\n }\n } else if (typeof fieldMatchers.$lt !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lt) { // more specificity\n delete fieldMatchers.$lt;\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value < fieldMatchers.$lt) { // more specificity\n fieldMatchers.$lt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// combine $ne values into one array\nfunction mergeNe(value, fieldMatchers) {\n if ('$ne' in fieldMatchers) {\n // there are many things this could \"not\" be\n fieldMatchers.$ne.push(value);\n } else { // doesn't exist yet\n fieldMatchers.$ne = [value];\n }\n}\n\n// add $eq into the mix\nfunction mergeEq(value, fieldMatchers) {\n // these all have less specificity than the $eq\n // TODO: check for user errors here\n delete fieldMatchers.$gt;\n delete fieldMatchers.$gte;\n delete fieldMatchers.$lt;\n delete fieldMatchers.$lte;\n delete fieldMatchers.$ne;\n fieldMatchers.$eq = value;\n}\n\n// combine $regex values into one array\nfunction mergeRegex(value, fieldMatchers) {\n if ('$regex' in fieldMatchers) {\n // a value could match multiple regexes\n fieldMatchers.$regex.push(value);\n } else { // doesn't exist yet\n fieldMatchers.$regex = [value];\n }\n}\n\n//#7458: execute function mergeAndedSelectors on nested $and\nfunction mergeAndedSelectorsNested(obj) {\n for (var prop in obj) {\n if (Array.isArray(obj)) {\n for (var i in obj) {\n if (obj[i]['$and']) {\n obj[i] = mergeAndedSelectors(obj[i]['$and']);\n }\n }\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n mergeAndedSelectorsNested(value); // <- recursive call\n }\n }\n return obj;\n}\n\n//#7458: determine id $and is present in selector (at any level)\nfunction isAndInSelector(obj, isAnd) {\n for (var prop in obj) {\n if (prop === '$and') {\n isAnd = true;\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n isAnd = isAndInSelector(value, isAnd); // <- recursive call\n }\n }\n return isAnd;\n}\n\n//\n// normalize the selector\n//\nfunction massageSelector(input) {\n var result = clone(input);\n\n //#7458: if $and is present in selector (at any level) merge nested $and\n if (isAndInSelector(result, false)) {\n result = mergeAndedSelectorsNested(result);\n if ('$and' in result) {\n result = mergeAndedSelectors(result['$and']);\n }\n }\n\n ['$or', '$nor'].forEach(function (orOrNor) {\n if (orOrNor in result) {\n // message each individual selector\n // e.g. {foo: 'bar'} becomes {foo: {$eq: 'bar'}}\n result[orOrNor].forEach(function (subSelector) {\n var fields = Object.keys(subSelector);\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = subSelector[field];\n if (typeof matcher !== 'object' || matcher === null) {\n subSelector[field] = {$eq: matcher};\n }\n }\n });\n }\n });\n\n if ('$not' in result) {\n //This feels a little like forcing, but it will work for now,\n //I would like to come back to this and make the merging of selectors a little more generic\n result['$not'] = mergeAndedSelectors([result['$not']]);\n }\n\n var fields = Object.keys(result);\n\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = result[field];\n\n if (typeof matcher !== 'object' || matcher === null) {\n matcher = {$eq: matcher};\n }\n result[field] = matcher;\n }\n\n normalizeArrayOperators(result);\n\n return result;\n}\n\n//\n// The $ne and $regex values must be placed in an array because these operators can be used multiple times on the same field.\n// When $and is used, mergeAndedSelectors takes care of putting some of them into arrays, otherwise it's done here.\n//\nfunction normalizeArrayOperators(selector) {\n Object.keys(selector).forEach(function (field) {\n var matcher = selector[field];\n\n if (Array.isArray(matcher)) {\n matcher.forEach(function (matcherItem) {\n if (matcherItem && typeof matcherItem === 'object') {\n normalizeArrayOperators(matcherItem);\n }\n });\n } else if (field === '$ne') {\n selector.$ne = [matcher];\n } else if (field === '$regex') {\n selector.$regex = [matcher];\n } else if (matcher && typeof matcher === 'object') {\n normalizeArrayOperators(matcher);\n }\n });\n}\n\nfunction pad(str, padWith, upToLength) {\n var padding = '';\n var targetLength = upToLength - str.length;\n /* istanbul ignore next */\n while (padding.length < targetLength) {\n padding += padWith;\n }\n return padding;\n}\n\nfunction padLeft(str, padWith, upToLength) {\n var padding = pad(str, padWith, upToLength);\n return padding + str;\n}\n\nvar MIN_MAGNITUDE = -324; // verified by -Number.MIN_VALUE\nvar MAGNITUDE_DIGITS = 3; // ditto\nvar SEP = ''; // set to '_' for easier debugging\n\nfunction collate(a, b) {\n\n if (a === b) {\n return 0;\n }\n\n a = normalizeKey(a);\n b = normalizeKey(b);\n\n var ai = collationIndex(a);\n var bi = collationIndex(b);\n if ((ai - bi) !== 0) {\n return ai - bi;\n }\n switch (typeof a) {\n case 'number':\n return a - b;\n case 'boolean':\n return a < b ? -1 : 1;\n case 'string':\n return stringCollate(a, b);\n }\n return Array.isArray(a) ? arrayCollate(a, b) : objectCollate(a, b);\n}\n\n// couch considers null/NaN/Infinity/-Infinity === undefined,\n// for the purposes of mapreduce indexes. also, dates get stringified.\nfunction normalizeKey(key) {\n switch (typeof key) {\n case 'undefined':\n return null;\n case 'number':\n if (key === Infinity || key === -Infinity || isNaN(key)) {\n return null;\n }\n return key;\n case 'object':\n var origKey = key;\n if (Array.isArray(key)) {\n var len = key.length;\n key = new Array(len);\n for (var i = 0; i < len; i++) {\n key[i] = normalizeKey(origKey[i]);\n }\n /* istanbul ignore next */\n } else if (key instanceof Date) {\n return key.toJSON();\n } else if (key !== null) { // generic object\n key = {};\n for (var k in origKey) {\n if (Object.prototype.hasOwnProperty.call(origKey, k)) {\n var val = origKey[k];\n if (typeof val !== 'undefined') {\n key[k] = normalizeKey(val);\n }\n }\n }\n }\n }\n return key;\n}\n\nfunction indexify(key) {\n if (key !== null) {\n switch (typeof key) {\n case 'boolean':\n return key ? 1 : 0;\n case 'number':\n return numToIndexableString(key);\n case 'string':\n // We've to be sure that key does not contain \\u0000\n // Do order-preserving replacements:\n // 0 -> 1, 1\n // 1 -> 1, 2\n // 2 -> 2, 2\n /* eslint-disable no-control-regex */\n return key\n .replace(/\\u0002/g, '\\u0002\\u0002')\n .replace(/\\u0001/g, '\\u0001\\u0002')\n .replace(/\\u0000/g, '\\u0001\\u0001');\n /* eslint-enable no-control-regex */\n case 'object':\n var isArray = Array.isArray(key);\n var arr = isArray ? key : Object.keys(key);\n var i = -1;\n var len = arr.length;\n var result = '';\n if (isArray) {\n while (++i < len) {\n result += toIndexableString(arr[i]);\n }\n } else {\n while (++i < len) {\n var objKey = arr[i];\n result += toIndexableString(objKey) +\n toIndexableString(key[objKey]);\n }\n }\n return result;\n }\n }\n return '';\n}\n\n// convert the given key to a string that would be appropriate\n// for lexical sorting, e.g. within a database, where the\n// sorting is the same given by the collate() function.\nfunction toIndexableString(key) {\n var zero = '\\u0000';\n key = normalizeKey(key);\n return collationIndex(key) + SEP + indexify(key) + zero;\n}\n\nfunction parseNumber(str, i) {\n var originalIdx = i;\n var num;\n var zero = str[i] === '1';\n if (zero) {\n num = 0;\n i++;\n } else {\n var neg = str[i] === '0';\n i++;\n var numAsString = '';\n var magAsString = str.substring(i, i + MAGNITUDE_DIGITS);\n var magnitude = parseInt(magAsString, 10) + MIN_MAGNITUDE;\n /* istanbul ignore next */\n if (neg) {\n magnitude = -magnitude;\n }\n i += MAGNITUDE_DIGITS;\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n } else {\n numAsString += ch;\n }\n i++;\n }\n numAsString = numAsString.split('.');\n if (numAsString.length === 1) {\n num = parseInt(numAsString, 10);\n } else {\n /* istanbul ignore next */\n num = parseFloat(numAsString[0] + '.' + numAsString[1]);\n }\n /* istanbul ignore next */\n if (neg) {\n num = num - 10;\n }\n /* istanbul ignore next */\n if (magnitude !== 0) {\n // parseFloat is more reliable than pow due to rounding errors\n // e.g. Number.MAX_VALUE would return Infinity if we did\n // num * Math.pow(10, magnitude);\n num = parseFloat(num + 'e' + magnitude);\n }\n }\n return {num, length : i - originalIdx};\n}\n\n// move up the stack while parsing\n// this function moved outside of parseIndexableString for performance\nfunction pop(stack, metaStack) {\n var obj = stack.pop();\n\n if (metaStack.length) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n }\n}\n\nfunction parseIndexableString(str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var collationIndex = str[i++];\n if (collationIndex === '\\u0000') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case '1':\n stack.push(null);\n break;\n case '2':\n stack.push(str[i] === '1');\n i++;\n break;\n case '3':\n var parsedNum = parseNumber(str, i);\n stack.push(parsedNum.num);\n i += parsedNum.length;\n break;\n case '4':\n var parsedStr = '';\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n }\n parsedStr += ch;\n i++;\n }\n // perform the reverse of the order-preserving replacement\n // algorithm (see above)\n /* eslint-disable no-control-regex */\n parsedStr = parsedStr.replace(/\\u0001\\u0001/g, '\\u0000')\n .replace(/\\u0001\\u0002/g, '\\u0001')\n .replace(/\\u0002\\u0002/g, '\\u0002');\n /* eslint-enable no-control-regex */\n stack.push(parsedStr);\n break;\n case '5':\n var arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '6':\n var objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n /* istanbul ignore next */\n default:\n throw new Error(\n 'bad collationIndex or unexpectedly reached end of input: ' +\n collationIndex);\n }\n }\n}\n\nfunction arrayCollate(a, b) {\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; i++) {\n var sort = collate(a[i], b[i]);\n if (sort !== 0) {\n return sort;\n }\n }\n return (a.length === b.length) ? 0 :\n (a.length > b.length) ? 1 : -1;\n}\nfunction stringCollate(a, b) {\n // See: https://github.com/daleharvey/pouchdb/issues/40\n // This is incompatible with the CouchDB implementation, but its the\n // best we can do for now\n return (a === b) ? 0 : ((a > b) ? 1 : -1);\n}\nfunction objectCollate(a, b) {\n var ak = Object.keys(a), bk = Object.keys(b);\n var len = Math.min(ak.length, bk.length);\n for (var i = 0; i < len; i++) {\n // First sort the keys\n var sort = collate(ak[i], bk[i]);\n if (sort !== 0) {\n return sort;\n }\n // if the keys are equal sort the values\n sort = collate(a[ak[i]], b[bk[i]]);\n if (sort !== 0) {\n return sort;\n }\n\n }\n return (ak.length === bk.length) ? 0 :\n (ak.length > bk.length) ? 1 : -1;\n}\n// The collation is defined by erlangs ordered terms\n// the atoms null, true, false come first, then numbers, strings,\n// arrays, then objects\n// null/undefined/NaN/Infinity/-Infinity are all considered null\nfunction collationIndex(x) {\n var id = ['boolean', 'number', 'string', 'object'];\n var idx = id.indexOf(typeof x);\n //false if -1 otherwise true, but fast!!!!1\n if (~idx) {\n if (x === null) {\n return 1;\n }\n if (Array.isArray(x)) {\n return 5;\n }\n return idx < 3 ? (idx + 2) : (idx + 3);\n }\n /* istanbul ignore next */\n if (Array.isArray(x)) {\n return 5;\n }\n}\n\n// conversion:\n// x yyy zz...zz\n// x = 0 for negative, 1 for 0, 2 for positive\n// y = exponent (for negative numbers negated) moved so that it's >= 0\n// z = mantisse\nfunction numToIndexableString(num) {\n\n if (num === 0) {\n return '1';\n }\n\n // convert number to exponential format for easier and\n // more succinct string sorting\n var expFormat = num.toExponential().split(/e\\+?/);\n var magnitude = parseInt(expFormat[1], 10);\n\n var neg = num < 0;\n\n var result = neg ? '0' : '2';\n\n // first sort by magnitude\n // it's easier if all magnitudes are positive\n var magForComparison = ((neg ? -magnitude : magnitude) - MIN_MAGNITUDE);\n var magString = padLeft((magForComparison).toString(), '0', MAGNITUDE_DIGITS);\n\n result += SEP + magString;\n\n // then sort by the factor\n var factor = Math.abs(parseFloat(expFormat[0])); // [1..10)\n /* istanbul ignore next */\n if (neg) { // for negative reverse ordering\n factor = 10 - factor;\n }\n\n var factorStr = factor.toFixed(20);\n\n // strip zeros from the end\n factorStr = factorStr.replace(/\\.?0+$/, '');\n\n result += SEP + factorStr;\n\n return result;\n}\n\n// create a comparator based on the sort object\nfunction createFieldSorter(sort) {\n\n function getFieldValuesAsArray(doc) {\n return sort.map(function (sorting) {\n var fieldName = getKey(sorting);\n var parsedField = parseField(fieldName);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n return docFieldValue;\n });\n }\n\n return function (aRow, bRow) {\n var aFieldValues = getFieldValuesAsArray(aRow.doc);\n var bFieldValues = getFieldValuesAsArray(bRow.doc);\n var collation = collate(aFieldValues, bFieldValues);\n if (collation !== 0) {\n return collation;\n }\n // this is what mango seems to do\n return compare(aRow.doc._id, bRow.doc._id);\n };\n}\n\nfunction filterInMemoryFields(rows, requestDef, inMemoryFields) {\n rows = rows.filter(function (row) {\n return rowFilter(row.doc, requestDef.selector, inMemoryFields);\n });\n\n if (requestDef.sort) {\n // in-memory sort\n var fieldSorter = createFieldSorter(requestDef.sort);\n rows = rows.sort(fieldSorter);\n if (typeof requestDef.sort[0] !== 'string' &&\n getValue(requestDef.sort[0]) === 'desc') {\n rows = rows.reverse();\n }\n }\n\n if ('limit' in requestDef || 'skip' in requestDef) {\n // have to do the limit in-memory\n var skip = requestDef.skip || 0;\n var limit = ('limit' in requestDef ? requestDef.limit : rows.length) + skip;\n rows = rows.slice(skip, limit);\n }\n return rows;\n}\n\nfunction rowFilter(doc, selector, inMemoryFields) {\n return inMemoryFields.every(function (field) {\n var matcher = selector[field];\n var parsedField = parseField(field);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n if (isCombinationalField(field)) {\n return matchCominationalSelector(field, matcher, doc);\n }\n\n return matchSelector(matcher, doc, parsedField, docFieldValue);\n });\n}\n\nfunction matchSelector(matcher, doc, parsedField, docFieldValue) {\n if (!matcher) {\n // no filtering necessary; this field is just needed for sorting\n return true;\n }\n\n // is matcher an object, if so continue recursion\n if (typeof matcher === 'object') {\n return Object.keys(matcher).every(function (maybeUserOperator) {\n var userValue = matcher[ maybeUserOperator ];\n // explicit operator\n if (maybeUserOperator.indexOf(\"$\") === 0) {\n return match(maybeUserOperator, doc, userValue, parsedField, docFieldValue);\n } else {\n var subParsedField = parseField(maybeUserOperator);\n\n if (\n docFieldValue === undefined &&\n typeof userValue !== \"object\" &&\n subParsedField.length > 0\n ) {\n // the field does not exist, return or getFieldFromDoc will throw\n return false;\n }\n\n var subDocFieldValue = getFieldFromDoc(docFieldValue, subParsedField);\n\n if (typeof userValue === \"object\") {\n // field value is an object that might contain more operators\n return matchSelector(userValue, doc, parsedField, subDocFieldValue);\n }\n\n // implicit operator\n return match(\"$eq\", doc, userValue, subParsedField, subDocFieldValue);\n }\n });\n }\n\n // no more depth, No need to recurse further\n return matcher === docFieldValue;\n}\n\nfunction matchCominationalSelector(field, matcher, doc) {\n\n if (field === '$or') {\n return matcher.some(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n }\n\n if (field === '$not') {\n return !rowFilter(doc, matcher, Object.keys(matcher));\n }\n\n //`$nor`\n return !matcher.find(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n\n}\n\nfunction match(userOperator, doc, userValue, parsedField, docFieldValue) {\n if (!matchers[userOperator]) {\n /* istanbul ignore next */\n throw new Error('unknown operator \"' + userOperator +\n '\" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, ' +\n '$nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all');\n }\n return matchers[userOperator](doc, userValue, parsedField, docFieldValue);\n}\n\nfunction fieldExists(docFieldValue) {\n return typeof docFieldValue !== 'undefined' && docFieldValue !== null;\n}\n\nfunction fieldIsNotUndefined(docFieldValue) {\n return typeof docFieldValue !== 'undefined';\n}\n\nfunction modField(docFieldValue, userValue) {\n if (typeof docFieldValue !== \"number\" ||\n parseInt(docFieldValue, 10) !== docFieldValue) {\n return false;\n }\n\n var divisor = userValue[0];\n var mod = userValue[1];\n\n return docFieldValue % divisor === mod;\n}\n\nfunction arrayContainsValue(docFieldValue, userValue) {\n return userValue.some(function (val) {\n if (docFieldValue instanceof Array) {\n return docFieldValue.some(function (docFieldValueItem) {\n return collate(val, docFieldValueItem) === 0;\n });\n }\n\n return collate(val, docFieldValue) === 0;\n });\n}\n\nfunction arrayContainsAllValues(docFieldValue, userValue) {\n return userValue.every(function (val) {\n return docFieldValue.some(function (docFieldValueItem) {\n return collate(val, docFieldValueItem) === 0;\n });\n });\n}\n\nfunction arraySize(docFieldValue, userValue) {\n return docFieldValue.length === userValue;\n}\n\nfunction regexMatch(docFieldValue, userValue) {\n var re = new RegExp(userValue);\n\n return re.test(docFieldValue);\n}\n\nfunction typeMatch(docFieldValue, userValue) {\n\n switch (userValue) {\n case 'null':\n return docFieldValue === null;\n case 'boolean':\n return typeof (docFieldValue) === 'boolean';\n case 'number':\n return typeof (docFieldValue) === 'number';\n case 'string':\n return typeof (docFieldValue) === 'string';\n case 'array':\n return docFieldValue instanceof Array;\n case 'object':\n return ({}).toString.call(docFieldValue) === '[object Object]';\n }\n}\n\nvar matchers = {\n\n '$elemMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object' && docFieldValue[0] !== null) {\n return docFieldValue.some(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.some(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$allMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n /* istanbul ignore next */\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object' && docFieldValue[0] !== null) {\n return docFieldValue.every(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.every(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$eq': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) === 0;\n },\n\n '$gte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) >= 0;\n },\n\n '$gt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) > 0;\n },\n\n '$lte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) <= 0;\n },\n\n '$lt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) < 0;\n },\n\n '$exists': function (doc, userValue, parsedField, docFieldValue) {\n //a field that is null is still considered to exist\n if (userValue) {\n return fieldIsNotUndefined(docFieldValue);\n }\n\n return !fieldIsNotUndefined(docFieldValue);\n },\n\n '$mod': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && modField(docFieldValue, userValue);\n },\n\n '$ne': function (doc, userValue, parsedField, docFieldValue) {\n return userValue.every(function (neValue) {\n return collate(docFieldValue, neValue) !== 0;\n });\n },\n '$in': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && arrayContainsValue(docFieldValue, userValue);\n },\n\n '$nin': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && !arrayContainsValue(docFieldValue, userValue);\n },\n\n '$size': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) &&\n Array.isArray(docFieldValue) &&\n arraySize(docFieldValue, userValue);\n },\n\n '$all': function (doc, userValue, parsedField, docFieldValue) {\n return Array.isArray(docFieldValue) && arrayContainsAllValues(docFieldValue, userValue);\n },\n\n '$regex': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) &&\n typeof docFieldValue == \"string\" &&\n userValue.every(function (regexValue) {\n return regexMatch(docFieldValue, regexValue);\n });\n },\n\n '$type': function (doc, userValue, parsedField, docFieldValue) {\n return typeMatch(docFieldValue, userValue);\n }\n};\n\n// return true if the given doc matches the supplied selector\nfunction matchesSelector(doc, selector) {\n /* istanbul ignore if */\n if (typeof selector !== 'object') {\n // match the CouchDB error message\n throw new Error('Selector error: expected a JSON object');\n }\n\n selector = massageSelector(selector);\n var row = {\n doc\n };\n\n var rowsMatched = filterInMemoryFields([row], { selector }, Object.keys(selector));\n return rowsMatched && rowsMatched.length === 1;\n}\n\nfunction evalFilter(input) {\n return scopeEval('\"use strict\";\\nreturn ' + input + ';', {});\n}\n\nfunction evalView(input) {\n var code = [\n 'return function(doc) {',\n ' \"use strict\";',\n ' var emitted = false;',\n ' var emit = function (a, b) {',\n ' emitted = true;',\n ' };',\n ' var view = ' + input + ';',\n ' view(doc);',\n ' if (emitted) {',\n ' return true;',\n ' }',\n '};'\n ].join('\\n');\n\n return scopeEval(code, {});\n}\n\nfunction validate(opts, callback) {\n if (opts.selector) {\n if (opts.filter && opts.filter !== '_selector') {\n var filterName = typeof opts.filter === 'string' ?\n opts.filter : 'function';\n return callback(new Error('selector invalid for filter \"' + filterName + '\"'));\n }\n }\n callback();\n}\n\nfunction normalize(opts) {\n if (opts.view && !opts.filter) {\n opts.filter = '_view';\n }\n\n if (opts.selector && !opts.filter) {\n opts.filter = '_selector';\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n if (opts.filter === '_view') {\n opts.view = normalizeDesignDocFunctionName(opts.view);\n } else {\n opts.filter = normalizeDesignDocFunctionName(opts.filter);\n }\n }\n}\n\nfunction shouldFilter(changesHandler, opts) {\n return opts.filter && typeof opts.filter === 'string' &&\n !opts.doc_ids && !isRemote(changesHandler.db);\n}\n\nfunction filter(changesHandler, opts) {\n var callback = opts.complete;\n if (opts.filter === '_view') {\n if (!opts.view || typeof opts.view !== 'string') {\n var err = createError(BAD_REQUEST,\n '`view` filter parameter not found or invalid.');\n return callback(err);\n }\n // fetch a view from a design doc, make it behave like a filter\n var viewName = parseDesignDocFunctionName(opts.view);\n changesHandler.db.get('_design/' + viewName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var mapFun = ddoc && ddoc.views && ddoc.views[viewName[1]] &&\n ddoc.views[viewName[1]].map;\n if (!mapFun) {\n return callback(createError(MISSING_DOC,\n (ddoc.views ? 'missing json key: ' + viewName[1] :\n 'missing json key: views')));\n }\n opts.filter = evalView(mapFun);\n changesHandler.doChanges(opts);\n });\n } else if (opts.selector) {\n opts.filter = function (doc) {\n return matchesSelector(doc, opts.selector);\n };\n changesHandler.doChanges(opts);\n } else {\n // fetch a filter from a design doc\n var filterName = parseDesignDocFunctionName(opts.filter);\n changesHandler.db.get('_design/' + filterName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var filterFun = ddoc && ddoc.filters && ddoc.filters[filterName[1]];\n if (!filterFun) {\n return callback(createError(MISSING_DOC,\n ((ddoc && ddoc.filters) ? 'missing json key: ' + filterName[1]\n : 'missing json key: filters')));\n }\n opts.filter = evalFilter(filterFun);\n changesHandler.doChanges(opts);\n });\n }\n}\n\nfunction applyChangesFilterPlugin(PouchDB) {\n PouchDB._changesFilterPlugin = {\n validate,\n normalize,\n shouldFilter,\n filter\n };\n}\n\n// TODO: remove from pouchdb-core (breaking)\nPouchDB.plugin(applyChangesFilterPlugin);\n\nPouchDB.version = version;\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37, Android <5 and (some?) webkit-based browsers.\n// In those versions, storing a blob will throw.\n//\n// Example Webkit error:\n// > DataCloneError: Failed to store record in an IDBObjectStore: BlobURLs are not yet supported.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\nfunction checkBlobSupport(txn, store, docIdOrCreateDoc) {\n return new Promise(function (resolve) {\n var blob$$1 = createBlob(['']);\n\n let req;\n if (typeof docIdOrCreateDoc === 'function') {\n // Store may require a specific key path, in which case we can't store the\n // blob directly in the store.\n const createDoc = docIdOrCreateDoc;\n const doc = createDoc(blob$$1);\n req = txn.objectStore(store).put(doc);\n } else {\n const docId = docIdOrCreateDoc;\n req = txn.objectStore(store).put(blob$$1, docId);\n }\n\n req.onsuccess = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome ||\n parseInt(matchedChrome[1], 10) >= 43);\n };\n\n req.onerror = txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n }).catch(function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction toObject(array) {\n return array.reduce(function (obj, item) {\n obj[item] = true;\n return obj;\n }, {});\n}\n// List of top level reserved words for doc\nvar reservedWords = toObject([\n '_id',\n '_rev',\n '_access',\n '_attachments',\n '_deleted',\n '_revisions',\n '_revs_info',\n '_conflicts',\n '_deleted_conflicts',\n '_local_seq',\n '_rev_tree',\n // replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats',\n // Specific to Couchbase Sync Gateway\n '_removed'\n]);\n\n// List of reserved words that should end up in the document\nvar dataWords = toObject([\n '_access',\n '_attachments',\n // replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats'\n]);\n\nfunction parseRevisionInfo(rev$$1) {\n if (!/^\\d+-/.test(rev$$1)) {\n return createError(INVALID_REV);\n }\n var idx = rev$$1.indexOf('-');\n var left = rev$$1.substring(0, idx);\n var right = rev$$1.substring(idx + 1);\n return {\n prefix: parseInt(left, 10),\n id: right\n };\n}\n\nfunction makeRevTreeFromRevisions(revisions, opts) {\n var pos = revisions.start - revisions.ids.length + 1;\n\n var revisionIds = revisions.ids;\n var ids = [revisionIds[0], opts, []];\n\n for (var i = 1, len = revisionIds.length; i < len; i++) {\n ids = [revisionIds[i], {status: 'missing'}, [ids]];\n }\n\n return [{\n pos,\n ids\n }];\n}\n\n// Preprocess documents, parse their revisions, assign an id and a\n// revision for new writes that are missing them, etc\nfunction parseDoc(doc, newEdits, dbOpts) {\n if (!dbOpts) {\n dbOpts = {\n deterministic_revs: true\n };\n }\n\n var nRevNum;\n var newRevId;\n var revInfo;\n var opts = {status: 'available'};\n if (doc._deleted) {\n opts.deleted = true;\n }\n\n if (newEdits) {\n if (!doc._id) {\n doc._id = uuid();\n }\n newRevId = rev(doc, dbOpts.deterministic_revs);\n if (doc._rev) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n doc._rev_tree = [{\n pos: revInfo.prefix,\n ids: [revInfo.id, {status: 'missing'}, [[newRevId, opts, []]]]\n }];\n nRevNum = revInfo.prefix + 1;\n } else {\n doc._rev_tree = [{\n pos: 1,\n ids : [newRevId, opts, []]\n }];\n nRevNum = 1;\n }\n } else {\n if (doc._revisions) {\n doc._rev_tree = makeRevTreeFromRevisions(doc._revisions, opts);\n nRevNum = doc._revisions.start;\n newRevId = doc._revisions.ids[0];\n }\n if (!doc._rev_tree) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n nRevNum = revInfo.prefix;\n newRevId = revInfo.id;\n doc._rev_tree = [{\n pos: nRevNum,\n ids: [newRevId, opts, []]\n }];\n }\n }\n\n invalidIdError(doc._id);\n\n doc._rev = nRevNum + '-' + newRevId;\n\n var result = {metadata : {}, data : {}};\n for (var key in doc) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(doc, key)) {\n var specialKey = key[0] === '_';\n if (specialKey && !reservedWords[key]) {\n var error = createError(DOC_VALIDATION, key);\n error.message = DOC_VALIDATION.message + ': ' + key;\n throw error;\n } else if (specialKey && !dataWords[key]) {\n result.metadata[key.slice(1)] = doc[key];\n } else {\n result.data[key] = doc[key];\n }\n }\n }\n return result;\n}\n\nfunction parseBase64(data) {\n try {\n return thisAtob(data);\n } catch (e) {\n var err = createError(BAD_ARG,\n 'Attachment is not a valid base64 string');\n return {error: err};\n }\n}\n\nfunction preprocessString(att, blobType, callback) {\n var asBinary = parseBase64(att.data);\n if (asBinary.error) {\n return callback(asBinary.error);\n }\n\n att.length = asBinary.length;\n if (blobType === 'blob') {\n att.data = binStringToBluffer(asBinary, att.content_type);\n } else if (blobType === 'base64') {\n att.data = thisBtoa(asBinary);\n } else { // binary\n att.data = asBinary;\n }\n binaryMd5(asBinary, function (result) {\n att.digest = 'md5-' + result;\n callback();\n });\n}\n\nfunction preprocessBlob(att, blobType, callback) {\n binaryMd5(att.data, function (md5) {\n att.digest = 'md5-' + md5;\n // size is for blobs (browser), length is for buffers (node)\n att.length = att.data.size || att.data.length || 0;\n if (blobType === 'binary') {\n blobToBinaryString(att.data, function (binString) {\n att.data = binString;\n callback();\n });\n } else if (blobType === 'base64') {\n blobToBase64(att.data, function (b64) {\n att.data = b64;\n callback();\n });\n } else {\n callback();\n }\n });\n}\n\nfunction preprocessAttachment(att, blobType, callback) {\n if (att.stub) {\n return callback();\n }\n if (typeof att.data === 'string') { // input is a base64 string\n preprocessString(att, blobType, callback);\n } else { // input is a blob\n preprocessBlob(att, blobType, callback);\n }\n}\n\nfunction preprocessAttachments(docInfos, blobType, callback) {\n\n if (!docInfos.length) {\n return callback();\n }\n\n var docv = 0;\n var overallErr;\n\n docInfos.forEach(function (docInfo) {\n var attachments = docInfo.data && docInfo.data._attachments ?\n Object.keys(docInfo.data._attachments) : [];\n var recv = 0;\n\n if (!attachments.length) {\n return done();\n }\n\n function processedAttachment(err) {\n overallErr = err;\n recv++;\n if (recv === attachments.length) {\n done();\n }\n }\n\n for (var key in docInfo.data._attachments) {\n if (Object.prototype.hasOwnProperty.call(docInfo.data._attachments, key)) {\n preprocessAttachment(docInfo.data._attachments[key],\n blobType, processedAttachment);\n }\n }\n });\n\n function done() {\n docv++;\n if (docInfos.length === docv) {\n if (overallErr) {\n callback(overallErr);\n } else {\n callback();\n }\n }\n }\n}\n\nfunction updateDoc(revLimit, prev, docInfo, results,\n i, cb, writeDoc, newEdits) {\n\n if (revExists(prev.rev_tree, docInfo.metadata.rev) && !newEdits) {\n results[i] = docInfo;\n return cb();\n }\n\n // sometimes this is pre-calculated. historically not always\n var previousWinningRev = prev.winningRev || winningRev(prev);\n var previouslyDeleted = 'deleted' in prev ? prev.deleted :\n isDeleted(prev, previousWinningRev);\n var deleted = 'deleted' in docInfo.metadata ? docInfo.metadata.deleted :\n isDeleted(docInfo.metadata);\n var isRoot = /^1-/.test(docInfo.metadata.rev);\n\n if (previouslyDeleted && !deleted && newEdits && isRoot) {\n var newDoc = docInfo.data;\n newDoc._rev = previousWinningRev;\n newDoc._id = docInfo.metadata.id;\n docInfo = parseDoc(newDoc, newEdits);\n }\n\n var merged = merge(prev.rev_tree, docInfo.metadata.rev_tree[0], revLimit);\n\n var inConflict = newEdits && ((\n (previouslyDeleted && deleted && merged.conflicts !== 'new_leaf') ||\n (!previouslyDeleted && merged.conflicts !== 'new_leaf') ||\n (previouslyDeleted && !deleted && merged.conflicts === 'new_branch')));\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[i] = err;\n return cb();\n }\n\n var newRev = docInfo.metadata.rev;\n docInfo.metadata.rev_tree = merged.tree;\n docInfo.stemmedRevs = merged.stemmedRevs || [];\n /* istanbul ignore else */\n if (prev.rev_map) {\n docInfo.metadata.rev_map = prev.rev_map; // used only by leveldb\n }\n\n // recalculate\n var winningRev$$1 = winningRev(docInfo.metadata);\n var winningRevIsDeleted = isDeleted(docInfo.metadata, winningRev$$1);\n\n // calculate the total number of documents that were added/removed,\n // from the perspective of total_rows/doc_count\n var delta = (previouslyDeleted === winningRevIsDeleted) ? 0 :\n previouslyDeleted < winningRevIsDeleted ? -1 : 1;\n\n var newRevIsDeleted;\n if (newRev === winningRev$$1) {\n // if the new rev is the same as the winning rev, we can reuse that value\n newRevIsDeleted = winningRevIsDeleted;\n } else {\n // if they're not the same, then we need to recalculate\n newRevIsDeleted = isDeleted(docInfo.metadata, newRev);\n }\n\n writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n true, delta, i, cb);\n}\n\nfunction rootIsMissing(docInfo) {\n return docInfo.metadata.rev_tree[0].ids[1].status === 'missing';\n}\n\nfunction processDocs(revLimit, docInfos, api, fetchedDocs, tx, results,\n writeDoc, opts, overallCallback) {\n\n // Default to 1000 locally\n revLimit = revLimit || 1000;\n\n function insertDoc(docInfo, resultsIdx, callback) {\n // Cant insert new deleted documents\n var winningRev$$1 = winningRev(docInfo.metadata);\n var deleted = isDeleted(docInfo.metadata, winningRev$$1);\n if ('was_delete' in opts && deleted) {\n results[resultsIdx] = createError(MISSING_DOC, 'deleted');\n return callback();\n }\n\n // 4712 - detect whether a new document was inserted with a _rev\n var inConflict = newEdits && rootIsMissing(docInfo);\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[resultsIdx] = err;\n return callback();\n }\n\n var delta = deleted ? 0 : 1;\n\n writeDoc(docInfo, winningRev$$1, deleted, deleted, false,\n delta, resultsIdx, callback);\n }\n\n var newEdits = opts.new_edits;\n var idsToDocs = new Map();\n\n var docsDone = 0;\n var docsToDo = docInfos.length;\n\n function checkAllDocsDone() {\n if (++docsDone === docsToDo && overallCallback) {\n overallCallback();\n }\n }\n\n docInfos.forEach(function (currentDoc, resultsIdx) {\n\n if (currentDoc._id && isLocalId(currentDoc._id)) {\n var fun = currentDoc._deleted ? '_removeLocal' : '_putLocal';\n api[fun](currentDoc, {ctx: tx}, function (err, res) {\n results[resultsIdx] = err || res;\n checkAllDocsDone();\n });\n return;\n }\n\n var id = currentDoc.metadata.id;\n if (idsToDocs.has(id)) {\n docsToDo--; // duplicate\n idsToDocs.get(id).push([currentDoc, resultsIdx]);\n } else {\n idsToDocs.set(id, [[currentDoc, resultsIdx]]);\n }\n });\n\n // in the case of new_edits, the user can provide multiple docs\n // with the same id. these need to be processed sequentially\n idsToDocs.forEach(function (docs, id) {\n var numDone = 0;\n\n function docWritten() {\n if (++numDone < docs.length) {\n nextDoc();\n } else {\n checkAllDocsDone();\n }\n }\n function nextDoc() {\n var value = docs[numDone];\n var currentDoc = value[0];\n var resultsIdx = value[1];\n\n if (fetchedDocs.has(id)) {\n updateDoc(revLimit, fetchedDocs.get(id), currentDoc, results,\n resultsIdx, docWritten, writeDoc, newEdits);\n } else {\n // Ensure stemming applies to new writes as well\n var merged = merge([], currentDoc.metadata.rev_tree[0], revLimit);\n currentDoc.metadata.rev_tree = merged.tree;\n currentDoc.stemmedRevs = merged.stemmedRevs || [];\n insertDoc(currentDoc, resultsIdx, docWritten);\n }\n }\n nextDoc();\n });\n}\n\n// IndexedDB requires a versioned database structure, so we use the\n// version here to manage migrations.\nvar ADAPTER_VERSION = 5;\n\n// The object stores created for each database\n// DOC_STORE stores the document meta data, its revision history and state\n// Keyed by document id\nvar DOC_STORE = 'document-store';\n// BY_SEQ_STORE stores a particular version of a document, keyed by its\n// sequence id\nvar BY_SEQ_STORE = 'by-sequence';\n// Where we store attachments\nvar ATTACH_STORE = 'attach-store';\n// Where we store many-to-many relations\n// between attachment digests and seqs\nvar ATTACH_AND_SEQ_STORE = 'attach-seq-store';\n\n// Where we store database-wide meta data in a single record\n// keyed by id: META_STORE\nvar META_STORE = 'meta-store';\n// Where we store local documents\nvar LOCAL_STORE = 'local-store';\n// Where we detect blob support\nvar DETECT_BLOB_SUPPORT_STORE = 'detect-blob-support';\n\nfunction safeJsonParse(str) {\n // This try/catch guards against stack overflow errors.\n // JSON.parse() is faster than vuvuzela.parse() but vuvuzela\n // cannot overflow.\n try {\n return JSON.parse(str);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.parse(str);\n }\n}\n\nfunction safeJsonStringify(json) {\n try {\n return JSON.stringify(json);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.stringify(json);\n }\n}\n\nfunction idbError(callback) {\n return function (evt) {\n var message = 'unknown_error';\n if (evt.target && evt.target.error) {\n message = evt.target.error.name || evt.target.error.message;\n }\n callback(createError(IDB_ERROR, message, evt.type));\n };\n}\n\n// Unfortunately, the metadata has to be stringified\n// when it is put into the database, because otherwise\n// IndexedDB can throw errors for deeply-nested objects.\n// Originally we just used JSON.parse/JSON.stringify; now\n// we use this custom vuvuzela library that avoids recursion.\n// If we could do it all over again, we'd probably use a\n// format for the revision trees other than JSON.\nfunction encodeMetadata(metadata, winningRev, deleted) {\n return {\n data: safeJsonStringify(metadata),\n winningRev,\n deletedOrLocal: deleted ? '1' : '0',\n seq: metadata.seq, // highest seq for this doc\n id: metadata.id\n };\n}\n\nfunction decodeMetadata(storedObject) {\n if (!storedObject) {\n return null;\n }\n var metadata = safeJsonParse(storedObject.data);\n metadata.winningRev = storedObject.winningRev;\n metadata.deleted = storedObject.deletedOrLocal === '1';\n metadata.seq = storedObject.seq;\n return metadata;\n}\n\n// read the doc back out from the database. we don't store the\n// _id or _rev because we already have _doc_id_rev.\nfunction decodeDoc(doc) {\n if (!doc) {\n return doc;\n }\n var idx = doc._doc_id_rev.lastIndexOf(':');\n doc._id = doc._doc_id_rev.substring(0, idx - 1);\n doc._rev = doc._doc_id_rev.substring(idx + 1);\n delete doc._doc_id_rev;\n return doc;\n}\n\n// Read a blob from the database, encoding as necessary\n// and translating from base64 if the IDB doesn't support\n// native Blobs\nfunction readBlobData(body, type, asBlob, callback) {\n if (asBlob) {\n if (!body) {\n callback(createBlob([''], {type}));\n } else if (typeof body !== 'string') { // we have blob support\n callback(body);\n } else { // no blob support\n callback(b64ToBluffer(body, type));\n }\n } else { // as base64 string\n if (!body) {\n callback('');\n } else if (typeof body !== 'string') { // we have blob support\n readAsBinaryString(body, function (binary) {\n callback(thisBtoa(binary));\n });\n } else { // no blob support\n callback(body);\n }\n }\n}\n\nfunction fetchAttachmentsIfNecessary(doc, opts, txn, cb) {\n var attachments = Object.keys(doc._attachments || {});\n if (!attachments.length) {\n return cb && cb();\n }\n var numDone = 0;\n\n function checkDone() {\n if (++numDone === attachments.length && cb) {\n cb();\n }\n }\n\n function fetchAttachment(doc, att) {\n var attObj = doc._attachments[att];\n var digest = attObj.digest;\n var req = txn.objectStore(ATTACH_STORE).get(digest);\n req.onsuccess = function (e) {\n attObj.body = e.target.result.body;\n checkDone();\n };\n }\n\n attachments.forEach(function (att) {\n if (opts.attachments && opts.include_docs) {\n fetchAttachment(doc, att);\n } else {\n doc._attachments[att].stub = true;\n checkDone();\n }\n });\n}\n\n// IDB-specific postprocessing necessary because\n// we don't know whether we stored a true Blob or\n// a base64-encoded string, and if it's a Blob it\n// needs to be read outside of the transaction context\nfunction postProcessAttachments(results, asBlob) {\n return Promise.all(results.map(function (row) {\n if (row.doc && row.doc._attachments) {\n var attNames = Object.keys(row.doc._attachments);\n return Promise.all(attNames.map(function (att) {\n var attObj = row.doc._attachments[att];\n if (!('body' in attObj)) { // already processed\n return;\n }\n var body = attObj.body;\n var type = attObj.content_type;\n return new Promise(function (resolve) {\n readBlobData(body, type, asBlob, function (data) {\n row.doc._attachments[att] = Object.assign(\n pick(attObj, ['digest', 'content_type']),\n {data}\n );\n resolve();\n });\n });\n }));\n }\n }));\n}\n\nfunction compactRevs(revs, docId, txn) {\n\n var possiblyOrphanedDigests = [];\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n var count = revs.length;\n\n function checkDone() {\n count--;\n if (!count) { // done processing all revs\n deleteOrphanedAttachments();\n }\n }\n\n function deleteOrphanedAttachments() {\n if (!possiblyOrphanedDigests.length) {\n return;\n }\n possiblyOrphanedDigests.forEach(function (digest) {\n var countReq = attAndSeqStore.index('digestSeq').count(\n IDBKeyRange.bound(\n digest + '::', digest + '::\\uffff', false, false));\n countReq.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n // orphaned\n attStore.delete(digest);\n }\n };\n });\n }\n\n revs.forEach(function (rev$$1) {\n var index = seqStore.index('_doc_id_rev');\n var key = docId + \"::\" + rev$$1;\n index.getKey(key).onsuccess = function (e) {\n var seq = e.target.result;\n if (typeof seq !== 'number') {\n return checkDone();\n }\n seqStore.delete(seq);\n\n var cursor = attAndSeqStore.index('seq')\n .openCursor(IDBKeyRange.only(seq));\n\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var digest = cursor.value.digestSeq.split('::')[0];\n possiblyOrphanedDigests.push(digest);\n attAndSeqStore.delete(cursor.primaryKey);\n cursor.continue();\n } else { // done\n checkDone();\n }\n };\n };\n });\n}\n\nfunction openTransactionSafely(idb, stores, mode) {\n try {\n return {\n txn: idb.transaction(stores, mode)\n };\n } catch (err) {\n return {\n error: err\n };\n }\n}\n\nvar changesHandler = new Changes();\n\nfunction idbBulkDocs(dbOpts, req, opts, api, idb, callback) {\n var docInfos = req.docs;\n var txn;\n var docStore;\n var bySeqStore;\n var attachStore;\n var attachAndSeqStore;\n var metaStore;\n var docInfoError;\n var metaDoc;\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var doc = docInfos[i];\n if (doc._id && isLocalId(doc._id)) {\n continue;\n }\n doc = docInfos[i] = parseDoc(doc, opts.new_edits, dbOpts);\n if (doc.error && !docInfoError) {\n docInfoError = doc;\n }\n }\n\n if (docInfoError) {\n return callback(docInfoError);\n }\n\n var allDocsProcessed = false;\n var docCountDelta = 0;\n var results = new Array(docInfos.length);\n var fetchedDocs = new Map();\n var preconditionErrored = false;\n var blobType = api._meta.blobSupport ? 'blob' : 'base64';\n\n preprocessAttachments(docInfos, blobType, function (err) {\n if (err) {\n return callback(err);\n }\n startTransaction();\n });\n\n function startTransaction() {\n\n var stores = [\n DOC_STORE, BY_SEQ_STORE,\n ATTACH_STORE,\n LOCAL_STORE, ATTACH_AND_SEQ_STORE,\n META_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(callback);\n txn.ontimeout = idbError(callback);\n txn.oncomplete = complete;\n docStore = txn.objectStore(DOC_STORE);\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n attachStore = txn.objectStore(ATTACH_STORE);\n attachAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n metaStore = txn.objectStore(META_STORE);\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result;\n updateDocCountIfReady();\n };\n\n verifyAttachments(function (err) {\n if (err) {\n preconditionErrored = true;\n return callback(err);\n }\n fetchExistingDocs();\n });\n }\n\n function onAllDocsProcessed() {\n allDocsProcessed = true;\n updateDocCountIfReady();\n }\n\n function idbProcessDocs() {\n processDocs(dbOpts.revs_limit, docInfos, api, fetchedDocs,\n txn, results, writeDoc, opts, onAllDocsProcessed);\n }\n\n function updateDocCountIfReady() {\n if (!metaDoc || !allDocsProcessed) {\n return;\n }\n // caching the docCount saves a lot of time in allDocs() and\n // info(), which is why we go to all the trouble of doing this\n metaDoc.docCount += docCountDelta;\n metaStore.put(metaDoc);\n }\n\n function fetchExistingDocs() {\n\n if (!docInfos.length) {\n return;\n }\n\n var numFetched = 0;\n\n function checkDone() {\n if (++numFetched === docInfos.length) {\n idbProcessDocs();\n }\n }\n\n function readMetadata(event) {\n var metadata = decodeMetadata(event.target.result);\n\n if (metadata) {\n fetchedDocs.set(metadata.id, metadata);\n }\n checkDone();\n }\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var docInfo = docInfos[i];\n if (docInfo._id && isLocalId(docInfo._id)) {\n checkDone(); // skip local docs\n continue;\n }\n var req = docStore.get(docInfo.metadata.id);\n req.onsuccess = readMetadata;\n }\n }\n\n function complete() {\n if (preconditionErrored) {\n return;\n }\n\n changesHandler.notify(api._meta.name);\n callback(null, results);\n }\n\n function verifyAttachment(digest, callback) {\n\n var req = attachStore.get(digest);\n req.onsuccess = function (e) {\n if (!e.target.result) {\n var err = createError(MISSING_STUB,\n 'unknown stub attachment with digest ' +\n digest);\n err.status = 412;\n callback(err);\n } else {\n callback();\n }\n };\n }\n\n function verifyAttachments(finish) {\n\n\n var digests = [];\n docInfos.forEach(function (docInfo) {\n if (docInfo.data && docInfo.data._attachments) {\n Object.keys(docInfo.data._attachments).forEach(function (filename) {\n var att = docInfo.data._attachments[filename];\n if (att.stub) {\n digests.push(att.digest);\n }\n });\n }\n });\n if (!digests.length) {\n return finish();\n }\n var numDone = 0;\n var err;\n\n function checkDone() {\n if (++numDone === digests.length) {\n finish(err);\n }\n }\n digests.forEach(function (digest) {\n verifyAttachment(digest, function (attErr) {\n if (attErr && !err) {\n err = attErr;\n }\n checkDone();\n });\n });\n }\n\n function writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n isUpdate, delta, resultsIdx, callback) {\n\n docInfo.metadata.winningRev = winningRev$$1;\n docInfo.metadata.deleted = winningRevIsDeleted;\n\n var doc = docInfo.data;\n doc._id = docInfo.metadata.id;\n doc._rev = docInfo.metadata.rev;\n\n if (newRevIsDeleted) {\n doc._deleted = true;\n }\n\n var hasAttachments = doc._attachments &&\n Object.keys(doc._attachments).length;\n if (hasAttachments) {\n return writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n docCountDelta += delta;\n updateDocCountIfReady();\n\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n function finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n var doc = docInfo.data;\n var metadata = docInfo.metadata;\n\n doc._doc_id_rev = metadata.id + '::' + metadata.rev;\n delete doc._id;\n delete doc._rev;\n\n function afterPutDoc(e) {\n var revsToDelete = docInfo.stemmedRevs || [];\n\n if (isUpdate && api.auto_compaction) {\n revsToDelete = revsToDelete.concat(compactTree(docInfo.metadata));\n }\n\n if (revsToDelete && revsToDelete.length) {\n compactRevs(revsToDelete, docInfo.metadata.id, txn);\n }\n\n metadata.seq = e.target.result;\n // Current _rev is calculated from _rev_tree on read\n // delete metadata.rev;\n var metadataToStore = encodeMetadata(metadata, winningRev$$1,\n winningRevIsDeleted);\n var metaDataReq = docStore.put(metadataToStore);\n metaDataReq.onsuccess = afterPutMetadata;\n }\n\n function afterPutDocError(e) {\n // ConstraintError, need to update, not put (see #1638 for details)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n var index = bySeqStore.index('_doc_id_rev');\n var getKeyReq = index.getKey(doc._doc_id_rev);\n getKeyReq.onsuccess = function (e) {\n var putReq = bySeqStore.put(doc, e.target.result);\n putReq.onsuccess = afterPutDoc;\n };\n }\n\n function afterPutMetadata() {\n results[resultsIdx] = {\n ok: true,\n id: metadata.id,\n rev: metadata.rev\n };\n fetchedDocs.set(docInfo.metadata.id, docInfo.metadata);\n insertAttachmentMappings(docInfo, metadata.seq, callback);\n }\n\n var putReq = bySeqStore.put(doc);\n\n putReq.onsuccess = afterPutDoc;\n putReq.onerror = afterPutDocError;\n }\n\n function writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n\n var doc = docInfo.data;\n\n var numDone = 0;\n var attachments = Object.keys(doc._attachments);\n\n function collectResults() {\n if (numDone === attachments.length) {\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n }\n\n function attachmentSaved() {\n numDone++;\n collectResults();\n }\n\n attachments.forEach(function (key) {\n var att = docInfo.data._attachments[key];\n if (!att.stub) {\n var data = att.data;\n delete att.data;\n att.revpos = parseInt(winningRev$$1, 10);\n var digest = att.digest;\n saveAttachment(digest, data, attachmentSaved);\n } else {\n numDone++;\n collectResults();\n }\n });\n }\n\n // map seqs to attachment digests, which\n // we will need later during compaction\n function insertAttachmentMappings(docInfo, seq, callback) {\n\n var attsAdded = 0;\n var attsToAdd = Object.keys(docInfo.data._attachments || {});\n\n if (!attsToAdd.length) {\n return callback();\n }\n\n function checkDone() {\n if (++attsAdded === attsToAdd.length) {\n callback();\n }\n }\n\n function add(att) {\n var digest = docInfo.data._attachments[att].digest;\n var req = attachAndSeqStore.put({\n seq,\n digestSeq: digest + '::' + seq\n });\n\n req.onsuccess = checkDone;\n req.onerror = function (e) {\n // this callback is for a constaint error, which we ignore\n // because this docid/rev has already been associated with\n // the digest (e.g. when new_edits == false)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n checkDone();\n };\n }\n for (var i = 0; i < attsToAdd.length; i++) {\n add(attsToAdd[i]); // do in parallel\n }\n }\n\n function saveAttachment(digest, data, callback) {\n\n\n var getKeyReq = attachStore.count(digest);\n getKeyReq.onsuccess = function (e) {\n var count = e.target.result;\n if (count) {\n return callback(); // already exists\n }\n var newAtt = {\n digest,\n body: data\n };\n var putReq = attachStore.put(newAtt);\n putReq.onsuccess = callback;\n };\n }\n}\n\n// Abstraction over IDBCursor and getAll()/getAllKeys() that allows us to batch our operations\n// while falling back to a normal IDBCursor operation on browsers that don't support getAll() or\n// getAllKeys(). This allows for a much faster implementation than just straight-up cursors, because\n// we're not processing each document one-at-a-time.\nfunction runBatchedCursor(objectStore, keyRange, descending, batchSize, onBatch) {\n\n if (batchSize === -1) {\n batchSize = 1000;\n }\n\n // Bail out of getAll()/getAllKeys() in the following cases:\n // 1) either method is unsupported - we need both\n // 2) batchSize is 1 (might as well use IDBCursor)\n // 3) descending \u2013 no real way to do this via getAll()/getAllKeys()\n\n var useGetAll = typeof objectStore.getAll === 'function' &&\n typeof objectStore.getAllKeys === 'function' &&\n batchSize > 1 && !descending;\n\n var keysBatch;\n var valuesBatch;\n var pseudoCursor;\n\n function onGetAll(e) {\n valuesBatch = e.target.result;\n if (keysBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function onGetAllKeys(e) {\n keysBatch = e.target.result;\n if (valuesBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function continuePseudoCursor() {\n if (!keysBatch.length) { // no more results\n return onBatch();\n }\n // fetch next batch, exclusive start\n var lastKey = keysBatch[keysBatch.length - 1];\n var newKeyRange;\n if (keyRange && keyRange.upper) {\n try {\n newKeyRange = IDBKeyRange.bound(lastKey, keyRange.upper,\n true, keyRange.upperOpen);\n } catch (e) {\n if (e.name === \"DataError\" && e.code === 0) {\n return onBatch(); // we're done, startkey and endkey are equal\n }\n }\n } else {\n newKeyRange = IDBKeyRange.lowerBound(lastKey, true);\n }\n keyRange = newKeyRange;\n keysBatch = null;\n valuesBatch = null;\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n }\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (!cursor) { // done\n return onBatch();\n }\n // regular IDBCursor acts like a batch where batch size is always 1\n onBatch([cursor.key], [cursor.value], cursor);\n }\n\n if (useGetAll) {\n pseudoCursor = {\"continue\": continuePseudoCursor};\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n } else if (descending) {\n objectStore.openCursor(keyRange, 'prev').onsuccess = onCursor;\n } else {\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n }\n}\n\n// simple shim for objectStore.getAll(), falling back to IDBCursor\nfunction getAll(objectStore, keyRange, onSuccess) {\n if (typeof objectStore.getAll === 'function') {\n // use native getAll\n objectStore.getAll(keyRange).onsuccess = onSuccess;\n return;\n }\n // fall back to cursors\n var values = [];\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (cursor) {\n values.push(cursor.value);\n cursor.continue();\n } else {\n onSuccess({\n target: {\n result: values\n }\n });\n }\n }\n\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n}\n\nfunction allDocsKeys(keys, docStore, onBatch) {\n // It's not guaranteed to be returned in right order\n var valuesBatch = new Array(keys.length);\n var count = 0;\n keys.forEach(function (key, index) {\n docStore.get(key).onsuccess = function (event) {\n if (event.target.result) {\n valuesBatch[index] = event.target.result;\n } else {\n valuesBatch[index] = {key, error: 'not_found'};\n }\n count++;\n if (count === keys.length) {\n onBatch(keys, valuesBatch, {});\n }\n };\n });\n}\n\nfunction createKeyRange(start, end, inclusiveEnd, key, descending) {\n try {\n if (start && end) {\n if (descending) {\n return IDBKeyRange.bound(end, start, !inclusiveEnd, false);\n } else {\n return IDBKeyRange.bound(start, end, false, !inclusiveEnd);\n }\n } else if (start) {\n if (descending) {\n return IDBKeyRange.upperBound(start);\n } else {\n return IDBKeyRange.lowerBound(start);\n }\n } else if (end) {\n if (descending) {\n return IDBKeyRange.lowerBound(end, !inclusiveEnd);\n } else {\n return IDBKeyRange.upperBound(end, !inclusiveEnd);\n }\n } else if (key) {\n return IDBKeyRange.only(key);\n }\n } catch (e) {\n return {error: e};\n }\n return null;\n}\n\nfunction idbAllDocs(opts, idb, callback) {\n var start = 'startkey' in opts ? opts.startkey : false;\n var end = 'endkey' in opts ? opts.endkey : false;\n var key = 'key' in opts ? opts.key : false;\n var keys = 'keys' in opts ? opts.keys : false;\n var skip = opts.skip || 0;\n var limit = typeof opts.limit === 'number' ? opts.limit : -1;\n var inclusiveEnd = opts.inclusive_end !== false;\n\n var keyRange ;\n var keyRangeError;\n if (!keys) {\n keyRange = createKeyRange(start, end, inclusiveEnd, key, opts.descending);\n keyRangeError = keyRange && keyRange.error;\n if (keyRangeError &&\n !(keyRangeError.name === \"DataError\" && keyRangeError.code === 0)) {\n // DataError with error code 0 indicates start is less than end, so\n // can just do an empty query. Else need to throw\n return callback(createError(IDB_ERROR,\n keyRangeError.name, keyRangeError.message));\n }\n }\n\n var stores = [DOC_STORE, BY_SEQ_STORE, META_STORE];\n\n if (opts.attachments) {\n stores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, stores, 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.oncomplete = onTxnComplete;\n txn.onabort = idbError(callback);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var metaStore = txn.objectStore(META_STORE);\n var docIdRevIndex = seqStore.index('_doc_id_rev');\n var results = [];\n var docCount;\n var updateSeq;\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n // get max updateSeq\n seqStore.openKeyCursor(null, 'prev').onsuccess = e => {\n var cursor = e.target.result;\n if (cursor && cursor.key) {\n updateSeq = cursor.key;\n }\n };\n }\n\n // if the user specifies include_docs=true, then we don't\n // want to block the main cursor while we're fetching the doc\n function fetchDocAsynchronously(metadata, row, winningRev$$1) {\n var key = metadata.id + \"::\" + winningRev$$1;\n docIdRevIndex.get(key).onsuccess = function onGetDoc(e) {\n row.doc = decodeDoc(e.target.result) || {};\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n row.doc._conflicts = conflicts;\n }\n }\n fetchAttachmentsIfNecessary(row.doc, opts, txn);\n };\n }\n\n function allDocsInner(winningRev$$1, metadata) {\n var row = {\n id: metadata.id,\n key: metadata.id,\n value: {\n rev: winningRev$$1\n }\n };\n var deleted = metadata.deleted;\n if (deleted) {\n if (keys) {\n results.push(row);\n // deleted docs are okay with \"keys\" requests\n row.value.deleted = true;\n row.doc = null;\n }\n } else if (skip-- <= 0) {\n results.push(row);\n if (opts.include_docs) {\n fetchDocAsynchronously(metadata, row, winningRev$$1);\n }\n }\n }\n\n function processBatch(batchValues) {\n for (var i = 0, len = batchValues.length; i < len; i++) {\n if (results.length === limit) {\n break;\n }\n var batchValue = batchValues[i];\n if (batchValue.error && keys) {\n // key was not found with \"keys\" requests\n results.push(batchValue);\n continue;\n }\n var metadata = decodeMetadata(batchValue);\n var winningRev$$1 = metadata.winningRev;\n allDocsInner(winningRev$$1, metadata);\n }\n }\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor) {\n return;\n }\n processBatch(batchValues);\n if (results.length < limit) {\n cursor.continue();\n }\n }\n\n function onGetAll(e) {\n var values = e.target.result;\n if (opts.descending) {\n values = values.reverse();\n }\n processBatch(values);\n }\n\n function onResultsReady() {\n var returnVal = {\n total_rows: docCount,\n offset: opts.skip,\n rows: results\n };\n\n /* istanbul ignore if */\n if (opts.update_seq && updateSeq !== undefined) {\n returnVal.update_seq = updateSeq;\n }\n callback(null, returnVal);\n }\n\n function onTxnComplete() {\n if (opts.attachments) {\n postProcessAttachments(results, opts.binary).then(onResultsReady);\n } else {\n onResultsReady();\n }\n }\n\n // don't bother doing any requests if start > end or limit === 0\n if (keyRangeError || limit === 0) {\n return;\n }\n if (keys) {\n return allDocsKeys(keys, docStore, onBatch);\n }\n if (limit === -1) { // just fetch everything\n return getAll(docStore, keyRange, onGetAll);\n }\n // else do a cursor\n // choose a batch size based on the skip, since we'll need to skip that many\n runBatchedCursor(docStore, keyRange, opts.descending, limit + skip, onBatch);\n}\n\nfunction countDocs(txn, cb) {\n var index = txn.objectStore(DOC_STORE).index('deletedOrLocal');\n index.count(IDBKeyRange.only('0')).onsuccess = function (e) {\n cb(e.target.result);\n };\n}\n\n// This task queue ensures that IDB open calls are done in their own tick\n\nvar running = false;\nvar queue = [];\n\nfunction tryCode(fun, err, res, PouchDB) {\n try {\n fun(err, res);\n } catch (err) {\n // Shouldn't happen, but in some odd cases\n // IndexedDB implementations might throw a sync\n // error, in which case this will at least log it.\n PouchDB.emit('error', err);\n }\n}\n\nfunction applyNext() {\n if (running || !queue.length) {\n return;\n }\n running = true;\n queue.shift()();\n}\n\nfunction enqueueTask(action, callback, PouchDB) {\n queue.push(function runAction() {\n action(function runCallback(err, res) {\n tryCode(callback, err, res, PouchDB);\n running = false;\n nextTick(function runNext() {\n applyNext(PouchDB);\n });\n });\n });\n applyNext();\n}\n\nfunction changes(opts, api, dbName, idb) {\n opts = clone(opts);\n\n if (opts.continuous) {\n var id = dbName + ':' + uuid();\n changesHandler.addListener(dbName, id, api, opts);\n changesHandler.notify(dbName);\n return {\n cancel: function () {\n changesHandler.removeListener(dbName, id);\n }\n };\n }\n\n var docIds = opts.doc_ids && new Set(opts.doc_ids);\n\n opts.since = opts.since || 0;\n var lastSeq = opts.since;\n\n var limit = 'limit' in opts ? opts.limit : -1;\n if (limit === 0) {\n limit = 1; // per CouchDB _changes spec\n }\n\n var results = [];\n var numResults = 0;\n var filter = filterChange(opts);\n var docIdsToMetadata = new Map();\n\n var txn;\n var bySeqStore;\n var docStore;\n var docIdRevIndex;\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor || !batchKeys.length) { // done\n return;\n }\n\n var winningDocs = new Array(batchKeys.length);\n var metadatas = new Array(batchKeys.length);\n\n function processMetadataAndWinningDoc(metadata, winningDoc) {\n var change = opts.processChange(winningDoc, metadata, opts);\n lastSeq = change.seq = metadata.seq;\n\n var filtered = filter(change);\n if (typeof filtered === 'object') { // anything but true/false indicates error\n return Promise.reject(filtered);\n }\n\n if (!filtered) {\n return Promise.resolve();\n }\n numResults++;\n if (opts.return_docs) {\n results.push(change);\n }\n // process the attachment immediately\n // for the benefit of live listeners\n if (opts.attachments && opts.include_docs) {\n return new Promise(function (resolve) {\n fetchAttachmentsIfNecessary(winningDoc, opts, txn, function () {\n postProcessAttachments([change], opts.binary).then(function () {\n resolve(change);\n });\n });\n });\n } else {\n return Promise.resolve(change);\n }\n }\n\n function onBatchDone() {\n var promises = [];\n for (var i = 0, len = winningDocs.length; i < len; i++) {\n if (numResults === limit) {\n break;\n }\n var winningDoc = winningDocs[i];\n if (!winningDoc) {\n continue;\n }\n var metadata = metadatas[i];\n promises.push(processMetadataAndWinningDoc(metadata, winningDoc));\n }\n\n Promise.all(promises).then(function (changes) {\n for (var i = 0, len = changes.length; i < len; i++) {\n if (changes[i]) {\n opts.onChange(changes[i]);\n }\n }\n }).catch(opts.complete);\n\n if (numResults !== limit) {\n cursor.continue();\n }\n }\n\n // Fetch all metadatas/winningdocs from this batch in parallel, then process\n // them all only once all data has been collected. This is done in parallel\n // because it's faster than doing it one-at-a-time.\n var numDone = 0;\n batchValues.forEach(function (value, i) {\n var doc = decodeDoc(value);\n var seq = batchKeys[i];\n fetchWinningDocAndMetadata(doc, seq, function (metadata, winningDoc) {\n metadatas[i] = metadata;\n winningDocs[i] = winningDoc;\n if (++numDone === batchKeys.length) {\n onBatchDone();\n }\n });\n });\n }\n\n function onGetMetadata(doc, seq, metadata, cb) {\n if (metadata.seq !== seq) {\n // some other seq is later\n return cb();\n }\n\n if (metadata.winningRev === doc._rev) {\n // this is the winning doc\n return cb(metadata, doc);\n }\n\n // fetch winning doc in separate request\n var docIdRev = doc._id + '::' + metadata.winningRev;\n var req = docIdRevIndex.get(docIdRev);\n req.onsuccess = function (e) {\n cb(metadata, decodeDoc(e.target.result));\n };\n }\n\n function fetchWinningDocAndMetadata(doc, seq, cb) {\n if (docIds && !docIds.has(doc._id)) {\n return cb();\n }\n\n var metadata = docIdsToMetadata.get(doc._id);\n if (metadata) { // cached\n return onGetMetadata(doc, seq, metadata, cb);\n }\n // metadata not cached, have to go fetch it\n docStore.get(doc._id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n docIdsToMetadata.set(doc._id, metadata);\n onGetMetadata(doc, seq, metadata, cb);\n };\n }\n\n function finish() {\n opts.complete(null, {\n results,\n last_seq: lastSeq\n });\n }\n\n function onTxnComplete() {\n if (!opts.continuous && opts.attachments) {\n // cannot guarantee that postProcessing was already done,\n // so do it again\n postProcessAttachments(results).then(finish);\n } else {\n finish();\n }\n }\n\n var objectStores = [DOC_STORE, BY_SEQ_STORE];\n if (opts.attachments) {\n objectStores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, objectStores, 'readonly');\n if (txnResult.error) {\n return opts.complete(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(opts.complete);\n txn.oncomplete = onTxnComplete;\n\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n docStore = txn.objectStore(DOC_STORE);\n docIdRevIndex = bySeqStore.index('_doc_id_rev');\n\n var keyRange = (opts.since && !opts.descending) ?\n IDBKeyRange.lowerBound(opts.since, true) : null;\n\n runBatchedCursor(bySeqStore, keyRange, opts.descending, limit, onBatch);\n}\n\nvar cachedDBs = new Map();\nvar blobSupportPromise;\nvar openReqList = new Map();\n\nfunction IdbPouch(opts, callback) {\n var api = this;\n\n enqueueTask(function (thisCallback) {\n init(api, opts, thisCallback);\n }, callback, api.constructor);\n}\n\nfunction init(api, opts, callback) {\n\n var dbName = opts.name;\n\n var idb = null;\n var idbGlobalFailureError = null;\n api._meta = null;\n\n function enrichCallbackError(callback) {\n return function (error, result) {\n if (error && error instanceof Error && !error.reason) {\n if (idbGlobalFailureError) {\n error.reason = idbGlobalFailureError;\n }\n }\n\n callback(error, result);\n };\n }\n\n // called when creating a fresh new database\n function createSchema(db) {\n var docStore = db.createObjectStore(DOC_STORE, {keyPath : 'id'});\n db.createObjectStore(BY_SEQ_STORE, {autoIncrement: true})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n db.createObjectStore(ATTACH_STORE, {keyPath: 'digest'});\n db.createObjectStore(META_STORE, {keyPath: 'id', autoIncrement: false});\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n\n // added in v2\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n // added in v3\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'});\n\n // added in v4\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 2\n // unfortunately \"deletedOrLocal\" is a misnomer now that we no longer\n // store local docs in the main doc-store, but whaddyagonnado\n function addDeletedOrLocalIndex(txn, callback) {\n var docStore = txn.objectStore(DOC_STORE);\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n docStore.openCursor().onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var deleted = isDeleted(metadata);\n metadata.deletedOrLocal = deleted ? \"1\" : \"0\";\n docStore.put(metadata);\n cursor.continue();\n } else {\n callback();\n }\n };\n }\n\n // migration to version 3 (part 1)\n function createLocalStoreSchema(db) {\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n }\n\n // migration to version 3 (part 2)\n function migrateLocalStore(txn, cb) {\n var localStore = txn.objectStore(LOCAL_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var docId = metadata.id;\n var local = isLocalId(docId);\n var rev$$1 = winningRev(metadata);\n if (local) {\n var docIdRev = docId + \"::\" + rev$$1;\n // remove all seq entries\n // associated with this docId\n var start = docId + \"::\";\n var end = docId + \"::~\";\n var index = seqStore.index('_doc_id_rev');\n var range = IDBKeyRange.bound(start, end, false, false);\n var seqCursor = index.openCursor(range);\n seqCursor.onsuccess = function (e) {\n seqCursor = e.target.result;\n if (!seqCursor) {\n // done\n docStore.delete(cursor.primaryKey);\n cursor.continue();\n } else {\n var data = seqCursor.value;\n if (data._doc_id_rev === docIdRev) {\n localStore.put(data);\n }\n seqStore.delete(seqCursor.primaryKey);\n seqCursor.continue();\n }\n };\n } else {\n cursor.continue();\n }\n } else if (cb) {\n cb();\n }\n };\n }\n\n // migration to version 4 (part 1)\n function addAttachAndSeqStore(db) {\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 4 (part 2)\n function migrateAttsAndSeqs(txn, callback) {\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n\n // need to actually populate the table. this is the expensive part,\n // so as an optimization, check first that this database even\n // contains attachments\n var req = attStore.count();\n req.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n return callback(); // done\n }\n\n seqStore.openCursor().onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return callback(); // done\n }\n var doc = cursor.value;\n var seq = cursor.primaryKey;\n var atts = Object.keys(doc._attachments || {});\n var digestMap = {};\n for (var j = 0; j < atts.length; j++) {\n var att = doc._attachments[atts[j]];\n digestMap[att.digest] = true; // uniq digests, just in case\n }\n var digests = Object.keys(digestMap);\n for (j = 0; j < digests.length; j++) {\n var digest = digests[j];\n attAndSeqStore.put({\n seq,\n digestSeq: digest + '::' + seq\n });\n }\n cursor.continue();\n };\n };\n }\n\n // migration to version 5\n // Instead of relying on on-the-fly migration of metadata,\n // this brings the doc-store to its modern form:\n // - metadata.winningrev\n // - metadata.seq\n // - stringify the metadata when storing it\n function migrateMetadata(txn) {\n\n function decodeMetadataCompat(storedObject) {\n if (!storedObject.data) {\n // old format, when we didn't store it stringified\n storedObject.deleted = storedObject.deletedOrLocal === '1';\n return storedObject;\n }\n return decodeMetadata(storedObject);\n }\n\n // ensure that every metadata has a winningRev and seq,\n // which was previously created on-the-fly but better to migrate\n var bySeqStore = txn.objectStore(BY_SEQ_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return; // done\n }\n var metadata = decodeMetadataCompat(cursor.value);\n\n metadata.winningRev = metadata.winningRev ||\n winningRev(metadata);\n\n function fetchMetadataSeq() {\n // metadata.seq was added post-3.2.0, so if it's missing,\n // we need to fetch it manually\n var start = metadata.id + '::';\n var end = metadata.id + '::\\uffff';\n var req = bySeqStore.index('_doc_id_rev').openCursor(\n IDBKeyRange.bound(start, end));\n\n var metadataSeq = 0;\n req.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n metadata.seq = metadataSeq;\n return onGetMetadataSeq();\n }\n var seq = cursor.primaryKey;\n if (seq > metadataSeq) {\n metadataSeq = seq;\n }\n cursor.continue();\n };\n }\n\n function onGetMetadataSeq() {\n var metadataToStore = encodeMetadata(metadata,\n metadata.winningRev, metadata.deleted);\n\n var req = docStore.put(metadataToStore);\n req.onsuccess = function () {\n cursor.continue();\n };\n }\n\n if (metadata.seq) {\n return onGetMetadataSeq();\n }\n\n fetchMetadataSeq();\n };\n\n }\n\n api._remote = false;\n api.type = function () {\n return 'idb';\n };\n\n api._id = toPromise(function (callback) {\n callback(null, api._meta.instanceId);\n });\n\n api._bulkDocs = function idb_bulkDocs(req, reqOpts, callback) {\n idbBulkDocs(opts, req, reqOpts, api, idb, enrichCallbackError(callback));\n };\n\n // First we look up the metadata in the ids database, then we fetch the\n // current revision(s) from the by sequence store\n api._get = function idb_get(id, opts, callback) {\n var doc;\n var metadata;\n var err;\n var txn = opts.ctx;\n if (!txn) {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n\n function finish() {\n callback(err, {doc, metadata, ctx: txn});\n }\n\n txn.objectStore(DOC_STORE).get(id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n // we can determine the result here if:\n // 1. there is no such document\n // 2. the document is deleted and we don't ask about specific rev\n // When we ask with opts.rev we expect the answer to be either\n // doc (possibly with _deleted=true) or missing error\n if (!metadata) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n\n var rev$$1;\n if (!opts.rev) {\n rev$$1 = metadata.winningRev;\n var deleted = isDeleted(metadata);\n if (deleted) {\n err = createError(MISSING_DOC, \"deleted\");\n return finish();\n }\n } else {\n rev$$1 = opts.latest ? latest(opts.rev, metadata) : opts.rev;\n }\n\n var objectStore = txn.objectStore(BY_SEQ_STORE);\n var key = metadata.id + '::' + rev$$1;\n\n objectStore.index('_doc_id_rev').get(key).onsuccess = function (e) {\n doc = e.target.result;\n if (doc) {\n doc = decodeDoc(doc);\n }\n if (!doc) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n finish();\n };\n };\n };\n\n api._getAttachment = function (docId, attachId, attachment, opts, callback) {\n var txn;\n if (opts.ctx) {\n txn = opts.ctx;\n } else {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n var digest = attachment.digest;\n var type = attachment.content_type;\n\n txn.objectStore(ATTACH_STORE).get(digest).onsuccess = function (e) {\n var body = e.target.result.body;\n readBlobData(body, type, opts.binary, function (blobData) {\n callback(null, blobData);\n });\n };\n };\n\n api._info = function idb_info(callback) {\n var updateSeq;\n var docCount;\n\n var txnResult = openTransactionSafely(idb, [META_STORE, BY_SEQ_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n txn.objectStore(BY_SEQ_STORE).openKeyCursor(null, 'prev').onsuccess = function (e) {\n var cursor = e.target.result;\n updateSeq = cursor ? cursor.key : 0;\n };\n\n txn.oncomplete = function () {\n callback(null, {\n doc_count: docCount,\n update_seq: updateSeq,\n // for debugging\n idb_attachment_format: (api._meta.blobSupport ? 'binary' : 'base64')\n });\n };\n };\n\n api._allDocs = function idb_allDocs(opts, callback) {\n idbAllDocs(opts, idb, enrichCallbackError(callback));\n };\n\n api._changes = function idbChanges(opts) {\n return changes(opts, api, dbName, idb);\n };\n\n api._close = function (callback) {\n // https://developer.mozilla.org/en-US/docs/IndexedDB/IDBDatabase#close\n // \"Returns immediately and closes the connection in a separate thread...\"\n idb.close();\n cachedDBs.delete(dbName);\n callback();\n };\n\n api._getRevisionTree = function (docId, callback) {\n var txnResult = openTransactionSafely(idb, [DOC_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n var req = txn.objectStore(DOC_STORE).get(docId);\n req.onsuccess = function (event) {\n var doc = decodeMetadata(event.target.result);\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n callback(null, doc.rev_tree);\n }\n };\n };\n\n // This function removes revisions of document docId\n // which are listed in revs and sets this document\n // revision to to rev_tree\n api._doCompaction = function (docId, revs, callback) {\n var stores = [\n DOC_STORE,\n BY_SEQ_STORE,\n ATTACH_STORE,\n ATTACH_AND_SEQ_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n\n var docStore = txn.objectStore(DOC_STORE);\n\n docStore.get(docId).onsuccess = function (event) {\n var metadata = decodeMetadata(event.target.result);\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (revs.indexOf(rev$$1) !== -1) {\n opts.status = 'missing';\n }\n });\n compactRevs(revs, docId, txn);\n var winningRev$$1 = metadata.winningRev;\n var deleted = metadata.deleted;\n txn.objectStore(DOC_STORE).put(\n encodeMetadata(metadata, winningRev$$1, deleted));\n };\n txn.onabort = idbError(callback);\n txn.oncomplete = function () {\n callback();\n };\n };\n\n\n api._getLocal = function (id, callback) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var tx = txnResult.txn;\n var req = tx.objectStore(LOCAL_STORE).get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var doc = e.target.result;\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n delete doc['_doc_id_rev']; // for backwards compat\n callback(null, doc);\n }\n };\n };\n\n api._putLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n delete doc._revisions; // ignore this, trust the rev\n var oldRev = doc._rev;\n var id = doc._id;\n if (!oldRev) {\n doc._rev = '0-1';\n } else {\n doc._rev = '0-' + (parseInt(oldRev.split('-')[1], 10) + 1);\n }\n\n var tx = opts.ctx;\n var ret;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.onerror = idbError(callback);\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n\n var oStore = tx.objectStore(LOCAL_STORE);\n var req;\n if (oldRev) {\n req = oStore.get(id);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== oldRev) {\n callback(createError(REV_CONFLICT));\n } else { // update\n var req = oStore.put(doc);\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n } else { // new doc\n req = oStore.add(doc);\n req.onerror = function (e) {\n // constraint error, already exists\n callback(createError(REV_CONFLICT));\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n };\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n\n api._removeLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var tx = opts.ctx;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n var ret;\n var id = doc._id;\n var oStore = tx.objectStore(LOCAL_STORE);\n var req = oStore.get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== doc._rev) {\n callback(createError(MISSING_DOC));\n } else {\n oStore.delete(id);\n ret = {ok: true, id, rev: '0-0'};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n }\n };\n };\n\n api._destroy = function (opts, callback) {\n changesHandler.removeAllListeners(dbName);\n\n //Close open request for \"dbName\" database to fix ie delay.\n var openReq = openReqList.get(dbName);\n if (openReq && openReq.result) {\n openReq.result.close();\n cachedDBs.delete(dbName);\n }\n var req = indexedDB.deleteDatabase(dbName);\n\n req.onsuccess = function () {\n //Remove open request from the list.\n openReqList.delete(dbName);\n if (hasLocalStorage() && (dbName in localStorage)) {\n delete localStorage[dbName];\n }\n callback(null, { 'ok': true });\n };\n\n req.onerror = idbError(callback);\n };\n\n var cached = cachedDBs.get(dbName);\n\n if (cached) {\n idb = cached.idb;\n api._meta = cached.global;\n return nextTick(function () {\n callback(null, api);\n });\n }\n\n var req = indexedDB.open(dbName, ADAPTER_VERSION);\n openReqList.set(dbName, req);\n\n req.onupgradeneeded = function (e) {\n var db = e.target.result;\n if (e.oldVersion < 1) {\n return createSchema(db); // new db, initial schema\n }\n // do migrations\n\n var txn = e.currentTarget.transaction;\n // these migrations have to be done in this function, before\n // control is returned to the event loop, because IndexedDB\n\n if (e.oldVersion < 3) {\n createLocalStoreSchema(db); // v2 -> v3\n }\n if (e.oldVersion < 4) {\n addAttachAndSeqStore(db); // v3 -> v4\n }\n\n var migrations = [\n addDeletedOrLocalIndex, // v1 -> v2\n migrateLocalStore, // v2 -> v3\n migrateAttsAndSeqs, // v3 -> v4\n migrateMetadata // v4 -> v5\n ];\n\n var i = e.oldVersion;\n\n function next() {\n var migration = migrations[i - 1];\n i++;\n if (migration) {\n migration(txn, next);\n }\n }\n\n next();\n };\n\n req.onsuccess = function (e) {\n\n idb = e.target.result;\n\n idb.onversionchange = function () {\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n idb.onabort = function (e) {\n guardedConsole('error', 'Database has a global failure', e.target.error);\n idbGlobalFailureError = e.target.error;\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n // Do a few setup operations (in parallel as much as possible):\n // 1. Fetch meta doc\n // 2. Check blob support\n // 3. Calculate docCount\n // 4. Generate an instanceId if necessary\n // 5. Store docCount and instanceId on meta doc\n\n var txn = idb.transaction([\n META_STORE,\n DETECT_BLOB_SUPPORT_STORE,\n DOC_STORE\n ], 'readwrite');\n\n var storedMetaDoc = false;\n var metaDoc;\n var docCount;\n var blobSupport;\n var instanceId;\n\n function completeSetup() {\n if (typeof blobSupport === 'undefined' || !storedMetaDoc) {\n return;\n }\n api._meta = {\n name: dbName,\n instanceId,\n blobSupport\n };\n\n cachedDBs.set(dbName, {\n idb,\n global: api._meta\n });\n callback(null, api);\n }\n\n function storeMetaDocIfReady() {\n if (typeof docCount === 'undefined' || typeof metaDoc === 'undefined') {\n return;\n }\n var instanceKey = dbName + '_id';\n if (instanceKey in metaDoc) {\n instanceId = metaDoc[instanceKey];\n } else {\n metaDoc[instanceKey] = instanceId = uuid();\n }\n metaDoc.docCount = docCount;\n txn.objectStore(META_STORE).put(metaDoc);\n }\n\n //\n // fetch or generate the instanceId\n //\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result || { id: META_STORE };\n storeMetaDocIfReady();\n };\n\n //\n // countDocs\n //\n countDocs(txn, function (count) {\n docCount = count;\n storeMetaDocIfReady();\n });\n\n //\n // check blob support\n //\n if (!blobSupportPromise) {\n // make sure blob support is only checked once\n blobSupportPromise = checkBlobSupport(txn, DETECT_BLOB_SUPPORT_STORE, 'key');\n }\n\n blobSupportPromise.then(function (val) {\n blobSupport = val;\n completeSetup();\n });\n\n // only when the metadata put transaction has completed,\n // consider the setup done\n txn.oncomplete = function () {\n storedMetaDoc = true;\n completeSetup();\n };\n txn.onabort = idbError(callback);\n };\n\n req.onerror = function (e) {\n var msg = e.target.error && e.target.error.message;\n\n if (!msg) {\n msg = 'Failed to open indexedDB, are you in private browsing mode?';\n } else if (msg.indexOf(\"stored database is a higher version\") !== -1) {\n msg = new Error('This DB was created with the newer \"indexeddb\" adapter, but you are trying to open it with the older \"idb\" adapter');\n }\n\n guardedConsole('error', msg);\n callback(createError(IDB_ERROR, msg));\n };\n}\n\nIdbPouch.valid = function () {\n // Following #7085 buggy idb versions (typically Safari < 10.1) are\n // considered valid.\n\n // On Firefox SecurityError is thrown while referencing indexedDB if cookies\n // are not allowed. `typeof indexedDB` also triggers the error.\n try {\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n return typeof indexedDB !== 'undefined' && typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n};\n\nfunction IDBPouch (PouchDB) {\n PouchDB.adapter('idb', IdbPouch, true);\n}\n\n// dead simple promise pool, inspired by https://github.com/timdp/es6-promise-pool\n// but much smaller in code size. limits the number of concurrent promises that are executed\n\n\nfunction pool(promiseFactories, limit) {\n return new Promise(function (resolve, reject) {\n var running = 0;\n var current = 0;\n var done = 0;\n var len = promiseFactories.length;\n var err;\n\n function runNext() {\n running++;\n promiseFactories[current++]().then(onSuccess, onError);\n }\n\n function doNext() {\n if (++done === len) {\n /* istanbul ignore if */\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n } else {\n runNextBatch();\n }\n }\n\n function onSuccess() {\n running--;\n doNext();\n }\n\n /* istanbul ignore next */\n function onError(thisErr) {\n running--;\n err = err || thisErr;\n doNext();\n }\n\n function runNextBatch() {\n while (running < limit && current < len) {\n runNext();\n }\n }\n\n runNextBatch();\n });\n}\n\nconst CHANGES_BATCH_SIZE = 25;\nconst MAX_SIMULTANEOUS_REVS = 50;\nconst CHANGES_TIMEOUT_BUFFER = 5000;\nconst DEFAULT_HEARTBEAT = 10000;\n\nconst supportsBulkGetMap = {};\n\nfunction readAttachmentsAsBlobOrBuffer(row) {\n const doc = row.doc || row.ok;\n const atts = doc && doc._attachments;\n if (!atts) {\n return;\n }\n Object.keys(atts).forEach(function (filename) {\n const att = atts[filename];\n att.data = b64ToBluffer(att.data, att.content_type);\n });\n}\n\nfunction encodeDocId(id) {\n if (/^_design/.test(id)) {\n return '_design/' + encodeURIComponent(id.slice(8));\n }\n if (id.startsWith('_local/')) {\n return '_local/' + encodeURIComponent(id.slice(7));\n }\n return encodeURIComponent(id);\n}\n\nfunction preprocessAttachments$1(doc) {\n if (!doc._attachments || !Object.keys(doc._attachments)) {\n return Promise.resolve();\n }\n\n return Promise.all(Object.keys(doc._attachments).map(function (key) {\n const attachment = doc._attachments[key];\n if (attachment.data && typeof attachment.data !== 'string') {\n return new Promise(function (resolve) {\n blobToBase64(attachment.data, resolve);\n }).then(function (b64) {\n attachment.data = b64;\n });\n }\n }));\n}\n\nfunction hasUrlPrefix(opts) {\n if (!opts.prefix) {\n return false;\n }\n const protocol = parseUri(opts.prefix).protocol;\n return protocol === 'http' || protocol === 'https';\n}\n\n// Get all the information you possibly can about the URI given by name and\n// return it as a suitable object.\nfunction getHost(name, opts) {\n // encode db name if opts.prefix is a url (#5574)\n if (hasUrlPrefix(opts)) {\n const dbName = opts.name.substr(opts.prefix.length);\n // Ensure prefix has a trailing slash\n const prefix = opts.prefix.replace(/\\/?$/, '/');\n name = prefix + encodeURIComponent(dbName);\n }\n\n const uri = parseUri(name);\n if (uri.user || uri.password) {\n uri.auth = {username: uri.user, password: uri.password};\n }\n\n // Split the path part of the URI into parts using '/' as the delimiter\n // after removing any leading '/' and any trailing '/'\n const parts = uri.path.replace(/(^\\/|\\/$)/g, '').split('/');\n\n uri.db = parts.pop();\n // Prevent double encoding of URI component\n if (uri.db.indexOf('%') === -1) {\n uri.db = encodeURIComponent(uri.db);\n }\n\n uri.path = parts.join('/');\n\n return uri;\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genDBUrl(opts, path) {\n return genUrl(opts, opts.db + '/' + path);\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genUrl(opts, path) {\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n const pathDel = !opts.path ? '' : '/';\n\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n return opts.protocol + '://' + opts.host +\n (opts.port ? (':' + opts.port) : '') +\n '/' + opts.path + pathDel + path;\n}\n\nfunction paramsToStr(params) {\n const paramKeys = Object.keys(params);\n if (paramKeys.length === 0) {\n return '';\n }\n\n return '?' + paramKeys.map(key => key + '=' + encodeURIComponent(params[key])).join('&');\n}\n\nfunction shouldCacheBust(opts) {\n const ua = (typeof navigator !== 'undefined' && navigator.userAgent) ?\n navigator.userAgent.toLowerCase() : '';\n const isIE = ua.indexOf('msie') !== -1;\n const isTrident = ua.indexOf('trident') !== -1;\n const isEdge = ua.indexOf('edge') !== -1;\n const isGET = !('method' in opts) || opts.method === 'GET';\n return (isIE || isTrident || isEdge) && isGET;\n}\n\n// Implements the PouchDB API for dealing with CouchDB instances over HTTP\nfunction HttpPouch(opts, callback) {\n\n // The functions that will be publicly available for HttpPouch\n const api = this;\n\n const host = getHost(opts.name, opts);\n const dbUrl = genDBUrl(host, '');\n\n opts = clone(opts);\n\n const ourFetch = async function (url, options) {\n\n options = options || {};\n options.headers = options.headers || new h();\n\n options.credentials = 'include';\n\n if (opts.auth || host.auth) {\n const nAuth = opts.auth || host.auth;\n const str = nAuth.username + ':' + nAuth.password;\n const token = thisBtoa(unescape(encodeURIComponent(str)));\n options.headers.set('Authorization', 'Basic ' + token);\n }\n\n const headers = opts.headers || {};\n Object.keys(headers).forEach(function (key) {\n options.headers.append(key, headers[key]);\n });\n\n /* istanbul ignore if */\n if (shouldCacheBust(options)) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + '_nonce=' + Date.now();\n }\n\n const fetchFun = opts.fetch || f$1;\n return await fetchFun(url, options);\n };\n\n function adapterFun$$1(name, fun) {\n return adapterFun(name, function (...args) {\n setup().then(function () {\n return fun.apply(this, args);\n }).catch(function (e) {\n const callback = args.pop();\n callback(e);\n });\n }).bind(api);\n }\n\n async function fetchJSON(url, options) {\n\n const result = {};\n\n options = options || {};\n options.headers = options.headers || new h();\n\n if (!options.headers.get('Content-Type')) {\n options.headers.set('Content-Type', 'application/json');\n }\n if (!options.headers.get('Accept')) {\n options.headers.set('Accept', 'application/json');\n }\n\n const response = await ourFetch(url, options);\n result.ok = response.ok;\n result.status = response.status;\n const json = await response.json();\n\n result.data = json;\n if (!result.ok) {\n result.data.status = result.status;\n const err = generateErrorFromResponse(result.data);\n throw err;\n }\n\n if (Array.isArray(result.data)) {\n result.data = result.data.map(function (v) {\n if (v.error || v.missing) {\n return generateErrorFromResponse(v);\n } else {\n return v;\n }\n });\n }\n\n return result;\n }\n\n let setupPromise;\n\n async function setup() {\n if (opts.skip_setup) {\n return Promise.resolve();\n }\n\n // If there is a setup in process or previous successful setup\n // done then we will use that\n // If previous setups have been rejected we will try again\n if (setupPromise) {\n return setupPromise;\n }\n\n setupPromise = fetchJSON(dbUrl).catch(function (err) {\n if (err && err.status && err.status === 404) {\n // Doesnt exist, create it\n explainError(404, 'PouchDB is just detecting if the remote exists.');\n return fetchJSON(dbUrl, {method: 'PUT'});\n } else {\n return Promise.reject(err);\n }\n }).catch(function (err) {\n // If we try to create a database that already exists, skipped in\n // istanbul since its catching a race condition.\n /* istanbul ignore if */\n if (err && err.status && err.status === 412) {\n return true;\n }\n return Promise.reject(err);\n });\n\n setupPromise.catch(function () {\n setupPromise = null;\n });\n\n return setupPromise;\n }\n\n nextTick(function () {\n callback(null, api);\n });\n\n api._remote = true;\n\n /* istanbul ignore next */\n api.type = function () {\n return 'http';\n };\n\n api.id = adapterFun$$1('id', async function (callback) {\n let result;\n try {\n const response = await ourFetch(genUrl(host, ''));\n result = await response.json();\n } catch (err) {\n result = {};\n }\n\n // Bad response or missing `uuid` should not prevent ID generation.\n const uuid$$1 = (result && result.uuid) ? (result.uuid + host.db) : genDBUrl(host, '');\n callback(null, uuid$$1);\n });\n\n // Sends a POST request to the host calling the couchdb _compact function\n // version: The version of CouchDB it is running\n api.compact = adapterFun$$1('compact', async function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n await fetchJSON(genDBUrl(host, '_compact'), {method: 'POST'});\n\n function ping() {\n api.info(function (err, res) {\n // CouchDB may send a \"compact_running:true\" if it's\n // already compacting. PouchDB Server doesn't.\n /* istanbul ignore else */\n if (res && !res.compact_running) {\n callback(null, {ok: true});\n } else {\n setTimeout(ping, opts.interval || 200);\n }\n });\n }\n // Ping the http if it's finished compaction\n ping();\n });\n\n api.bulkGet = adapterFun('bulkGet', function (opts, callback) {\n const self = this;\n\n async function doBulkGet(cb) {\n const params = {};\n if (opts.revs) {\n params.revs = true;\n }\n if (opts.attachments) {\n /* istanbul ignore next */\n params.attachments = true;\n }\n if (opts.latest) {\n params.latest = true;\n }\n try {\n const result = await fetchJSON(genDBUrl(host, '_bulk_get' + paramsToStr(params)), {\n method: 'POST',\n body: JSON.stringify({ docs: opts.docs})\n });\n\n if (opts.attachments && opts.binary) {\n result.data.results.forEach(function (res) {\n res.docs.forEach(readAttachmentsAsBlobOrBuffer);\n });\n }\n cb(null, result.data);\n } catch (error) {\n cb(error);\n }\n }\n\n /* istanbul ignore next */\n function doBulkGetShim() {\n // avoid \"url too long error\" by splitting up into multiple requests\n const batchSize = MAX_SIMULTANEOUS_REVS;\n const numBatches = Math.ceil(opts.docs.length / batchSize);\n let numDone = 0;\n const results = new Array(numBatches);\n\n function onResult(batchNum) {\n return function (err, res) {\n // err is impossible because shim returns a list of errs in that case\n results[batchNum] = res.results;\n if (++numDone === numBatches) {\n callback(null, {results: results.flat()});\n }\n };\n }\n\n for (let i = 0; i < numBatches; i++) {\n const subOpts = pick(opts, ['revs', 'attachments', 'binary', 'latest']);\n subOpts.docs = opts.docs.slice(i * batchSize,\n Math.min(opts.docs.length, (i + 1) * batchSize));\n bulkGet(self, subOpts, onResult(i));\n }\n }\n\n // mark the whole database as either supporting or not supporting _bulk_get\n const dbUrl = genUrl(host, '');\n const supportsBulkGet = supportsBulkGetMap[dbUrl];\n\n /* istanbul ignore next */\n if (typeof supportsBulkGet !== 'boolean') {\n // check if this database supports _bulk_get\n doBulkGet(function (err, res) {\n if (err) {\n supportsBulkGetMap[dbUrl] = false;\n explainError(\n err.status,\n 'PouchDB is just detecting if the remote ' +\n 'supports the _bulk_get API.'\n );\n doBulkGetShim();\n } else {\n supportsBulkGetMap[dbUrl] = true;\n callback(null, res);\n }\n });\n } else if (supportsBulkGet) {\n doBulkGet(callback);\n } else {\n doBulkGetShim();\n }\n });\n\n // Calls GET on the host, which gets back a JSON string containing\n // couchdb: A welcome string\n // version: The version of CouchDB it is running\n api._info = async function (callback) {\n try {\n await setup();\n const response = await ourFetch(genDBUrl(host, ''));\n const info = await response.json();\n info.host = genDBUrl(host, '');\n callback(null, info);\n } catch (err) {\n callback(err);\n }\n };\n\n api.fetch = async function (path, options) {\n await setup();\n const url = path.substring(0, 1) === '/' ?\n genUrl(host, path.substring(1)) :\n genDBUrl(host, path);\n return ourFetch(url, options);\n };\n\n // Get the document with the given id from the database given by host.\n // The id could be solely the _id in the database, or it may be a\n // _design/ID or _local/ID path\n api.get = adapterFun$$1('get', async function (id, opts, callback) {\n // If no options were given, set the callback to the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n const params = {};\n\n if (opts.revs) {\n params.revs = true;\n }\n\n if (opts.revs_info) {\n params.revs_info = true;\n }\n\n if (opts.latest) {\n params.latest = true;\n }\n\n if (opts.open_revs) {\n if (opts.open_revs !== \"all\") {\n opts.open_revs = JSON.stringify(opts.open_revs);\n }\n params.open_revs = opts.open_revs;\n }\n\n if (opts.rev) {\n params.rev = opts.rev;\n }\n\n if (opts.conflicts) {\n params.conflicts = opts.conflicts;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = opts.update_seq;\n }\n\n id = encodeDocId(id);\n\n function fetchAttachments(doc) {\n const atts = doc._attachments;\n const filenames = atts && Object.keys(atts);\n if (!atts || !filenames.length) {\n return;\n }\n // we fetch these manually in separate XHRs, because\n // Sync Gateway would normally send it back as multipart/mixed,\n // which we cannot parse. Also, this is more efficient than\n // receiving attachments as base64-encoded strings.\n async function fetchData(filename) {\n const att = atts[filename];\n const path = encodeDocId(doc._id) + '/' + encodeAttachmentId(filename) +\n '?rev=' + doc._rev;\n\n const response = await ourFetch(genDBUrl(host, path));\n\n let blob;\n if ('buffer' in response) {\n blob = await response.buffer();\n } else {\n /* istanbul ignore next */\n blob = await response.blob();\n }\n\n let data;\n if (opts.binary) {\n const typeFieldDescriptor = Object.getOwnPropertyDescriptor(blob.__proto__, 'type');\n if (!typeFieldDescriptor || typeFieldDescriptor.set) {\n blob.type = att.content_type;\n }\n data = blob;\n } else {\n data = await new Promise(function (resolve) {\n blobToBase64(blob, resolve);\n });\n }\n\n delete att.stub;\n delete att.length;\n att.data = data;\n }\n\n const promiseFactories = filenames.map(function (filename) {\n return function () {\n return fetchData(filename);\n };\n });\n\n // This limits the number of parallel xhr requests to 5 any time\n // to avoid issues with maximum browser request limits\n return pool(promiseFactories, 5);\n }\n\n function fetchAllAttachments(docOrDocs) {\n if (Array.isArray(docOrDocs)) {\n return Promise.all(docOrDocs.map(function (doc) {\n if (doc.ok) {\n return fetchAttachments(doc.ok);\n }\n }));\n }\n return fetchAttachments(docOrDocs);\n }\n\n const url = genDBUrl(host, id + paramsToStr(params));\n try {\n const res = await fetchJSON(url);\n if (opts.attachments) {\n await fetchAllAttachments(res.data);\n }\n callback(null, res.data);\n } catch (error) {\n error.docId = id;\n callback(error);\n }\n });\n\n\n // Delete the document given by doc from the database given by host.\n api.remove = adapterFun$$1('remove', async function (docOrId, optsOrRev, opts, cb) {\n let doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n cb = optsOrRev;\n opts = {};\n } else {\n cb = opts;\n opts = optsOrRev;\n }\n }\n\n const rev$$1 = (doc._rev || opts.rev);\n const url = genDBUrl(host, encodeDocId(doc._id)) + '?rev=' + rev$$1;\n\n try {\n const result = await fetchJSON(url, {method: 'DELETE'});\n cb(null, result.data);\n } catch (error) {\n cb(error);\n }\n });\n\n function encodeAttachmentId(attachmentId) {\n return attachmentId.split(\"/\").map(encodeURIComponent).join(\"/\");\n }\n\n // Get the attachment\n api.getAttachment = adapterFun$$1('getAttachment', async function (docId, attachmentId,\n opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n const params = opts.rev ? ('?rev=' + opts.rev) : '';\n const url = genDBUrl(host, encodeDocId(docId)) + '/' +\n encodeAttachmentId(attachmentId) + params;\n let contentType;\n try {\n const response = await ourFetch(url, {method: 'GET'});\n\n if (!response.ok) {\n throw response;\n }\n\n contentType = response.headers.get('content-type');\n let blob;\n if (typeof process !== 'undefined' && !process.browser && typeof response.buffer === 'function') {\n blob = await response.buffer();\n } else {\n /* istanbul ignore next */\n blob = await response.blob();\n }\n\n // TODO: also remove\n if (typeof process !== 'undefined' && !process.browser) {\n const typeFieldDescriptor = Object.getOwnPropertyDescriptor(blob.__proto__, 'type');\n if (!typeFieldDescriptor || typeFieldDescriptor.set) {\n blob.type = contentType;\n }\n }\n callback(null, blob);\n } catch (err) {\n callback(err);\n }\n });\n\n // Remove the attachment given by the id and rev\n api.removeAttachment = adapterFun$$1('removeAttachment', async function (\n docId,\n attachmentId,\n rev$$1,\n callback,\n ) {\n const url = genDBUrl(host, encodeDocId(docId) + '/' + encodeAttachmentId(attachmentId)) + '?rev=' + rev$$1;\n\n try {\n const result = await fetchJSON(url, {method: 'DELETE'});\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n });\n\n // Add the attachment given by blob and its contentType property\n // to the document with the given id, the revision given by rev, and\n // add it to the database given by host.\n api.putAttachment = adapterFun$$1('putAttachment', async function (\n docId,\n attachmentId,\n rev$$1,\n blob,\n type,\n callback,\n ) {\n if (typeof type === 'function') {\n callback = type;\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n const id = encodeDocId(docId) + '/' + encodeAttachmentId(attachmentId);\n let url = genDBUrl(host, id);\n if (rev$$1) {\n url += '?rev=' + rev$$1;\n }\n\n if (typeof blob === 'string') {\n // input is assumed to be a base64 string\n let binary;\n try {\n binary = thisAtob(blob);\n } catch (err) {\n return callback(createError(BAD_ARG,\n 'Attachment is not a valid base64 string'));\n }\n blob = binary ? binStringToBluffer(binary, type) : '';\n }\n\n try {\n // Add the attachment\n const result = await fetchJSON(url, {\n headers: new h({'Content-Type': type}),\n method: 'PUT',\n body: blob\n });\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n });\n\n // Update/create multiple documents given by req in the database\n // given by host.\n api._bulkDocs = async function (req, opts, callback) {\n // If new_edits=false then it prevents the database from creating\n // new revision numbers for the documents. Instead it just uses\n // the old ones. This is used in database replication.\n req.new_edits = opts.new_edits;\n\n try {\n await setup();\n await Promise.all(req.docs.map(preprocessAttachments$1));\n\n // Update/create the documents\n const result = await fetchJSON(genDBUrl(host, '_bulk_docs'), {\n method: 'POST',\n body: JSON.stringify(req)\n });\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n };\n\n // Update/create document\n api._put = async function (doc, opts, callback) {\n try {\n await setup();\n await preprocessAttachments$1(doc);\n\n const result = await fetchJSON(genDBUrl(host, encodeDocId(doc._id)), {\n method: 'PUT',\n body: JSON.stringify(doc)\n });\n callback(null, result.data);\n } catch (error) {\n error.docId = doc && doc._id;\n callback(error);\n }\n };\n\n\n // Get a listing of the documents in the database given\n // by host and ordered by increasing id.\n api.allDocs = adapterFun$$1('allDocs', async function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n const params = {};\n let body;\n let method = 'GET';\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n\n if (opts.include_docs) {\n params.include_docs = true;\n }\n\n // added in CouchDB 1.6.0\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.key) {\n params.key = JSON.stringify(opts.key);\n }\n\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n\n if (opts.startkey) {\n params.startkey = JSON.stringify(opts.startkey);\n }\n\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n\n if (opts.endkey) {\n params.endkey = JSON.stringify(opts.endkey);\n }\n\n if (typeof opts.inclusive_end !== 'undefined') {\n params.inclusive_end = !!opts.inclusive_end;\n }\n\n if (typeof opts.limit !== 'undefined') {\n params.limit = opts.limit;\n }\n\n if (typeof opts.skip !== 'undefined') {\n params.skip = opts.skip;\n }\n\n const paramStr = paramsToStr(params);\n\n if (typeof opts.keys !== 'undefined') {\n method = 'POST';\n body = {keys: opts.keys};\n }\n\n try {\n const result = await fetchJSON(genDBUrl(host, '_all_docs' + paramStr), {\n method,\n body: JSON.stringify(body)\n });\n if (opts.include_docs && opts.attachments && opts.binary) {\n result.data.rows.forEach(readAttachmentsAsBlobOrBuffer);\n }\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n });\n\n // Get a list of changes made to documents in the database given by host.\n // TODO According to the README, there should be two other methods here,\n // api.changes.addListener and api.changes.removeListener.\n api._changes = function (opts) {\n\n // We internally page the results of a changes request, this means\n // if there is a large set of changes to be returned we can start\n // processing them quicker instead of waiting on the entire\n // set of changes to return and attempting to process them at once\n const batchSize = 'batch_size' in opts ? opts.batch_size : CHANGES_BATCH_SIZE;\n\n opts = clone(opts);\n\n if (opts.continuous && !('heartbeat' in opts)) {\n opts.heartbeat = DEFAULT_HEARTBEAT;\n }\n\n let requestTimeout = ('timeout' in opts) ? opts.timeout : 30 * 1000;\n\n // ensure CHANGES_TIMEOUT_BUFFER applies\n if ('timeout' in opts && opts.timeout &&\n (requestTimeout - opts.timeout) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.timeout + CHANGES_TIMEOUT_BUFFER;\n }\n\n /* istanbul ignore if */\n if ('heartbeat' in opts && opts.heartbeat &&\n (requestTimeout - opts.heartbeat) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.heartbeat + CHANGES_TIMEOUT_BUFFER;\n }\n\n const params = {};\n if ('timeout' in opts && opts.timeout) {\n params.timeout = opts.timeout;\n }\n\n const limit = (typeof opts.limit !== 'undefined') ? opts.limit : false;\n let leftToFetch = limit;\n\n if (opts.style) {\n params.style = opts.style;\n }\n\n if (opts.include_docs || opts.filter && typeof opts.filter === 'function') {\n params.include_docs = true;\n }\n\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.continuous) {\n params.feed = 'longpoll';\n }\n\n if (opts.seq_interval) {\n params.seq_interval = opts.seq_interval;\n }\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if ('heartbeat' in opts) {\n // If the heartbeat value is false, it disables the default heartbeat\n if (opts.heartbeat) {\n params.heartbeat = opts.heartbeat;\n }\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n params.filter = opts.filter;\n }\n\n if (opts.view && typeof opts.view === 'string') {\n params.filter = '_view';\n params.view = opts.view;\n }\n\n // If opts.query_params exists, pass it through to the changes request.\n // These parameters may be used by the filter on the source database.\n if (opts.query_params && typeof opts.query_params === 'object') {\n for (const param_name in opts.query_params) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(opts.query_params, param_name)) {\n params[param_name] = opts.query_params[param_name];\n }\n }\n }\n\n let method = 'GET';\n let body;\n\n if (opts.doc_ids) {\n // set this automagically for the user; it's annoying that couchdb\n // requires both a \"filter\" and a \"doc_ids\" param.\n params.filter = '_doc_ids';\n method = 'POST';\n body = {doc_ids: opts.doc_ids };\n }\n /* istanbul ignore next */\n else if (opts.selector) {\n // set this automagically for the user, similar to above\n params.filter = '_selector';\n method = 'POST';\n body = {selector: opts.selector };\n }\n\n const controller = new AbortController();\n let lastFetchedSeq;\n\n // Get all the changes starting with the one immediately after the\n // sequence number given by since.\n const fetchData = async function (since, callback) {\n if (opts.aborted) {\n return;\n }\n params.since = since;\n // \"since\" can be any kind of json object in Cloudant/CouchDB 2.x\n /* istanbul ignore next */\n if (typeof params.since === \"object\") {\n params.since = JSON.stringify(params.since);\n }\n\n if (opts.descending) {\n if (limit) {\n params.limit = leftToFetch;\n }\n } else {\n params.limit = (!limit || leftToFetch > batchSize) ?\n batchSize : leftToFetch;\n }\n\n // Set the options for the ajax call\n const url = genDBUrl(host, '_changes' + paramsToStr(params));\n const fetchOpts = {\n signal: controller.signal,\n method,\n body: JSON.stringify(body)\n };\n lastFetchedSeq = since;\n\n /* istanbul ignore if */\n if (opts.aborted) {\n return;\n }\n\n // Get the changes\n try {\n await setup();\n const result = await fetchJSON(url, fetchOpts);\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n };\n\n // If opts.since exists, get all the changes from the sequence\n // number given by opts.since. Otherwise, get all the changes\n // from the sequence number 0.\n const results = {results: []};\n\n const fetched = function (err, res) {\n if (opts.aborted) {\n return;\n }\n let raw_results_length = 0;\n // If the result of the ajax call (res) contains changes (res.results)\n if (res && res.results) {\n raw_results_length = res.results.length;\n results.last_seq = res.last_seq;\n let pending = null;\n let lastSeq = null;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof res.pending === 'number') {\n pending = res.pending;\n }\n if (typeof results.last_seq === 'string' || typeof results.last_seq === 'number') {\n lastSeq = results.last_seq;\n }\n // For each change\n const req = {};\n req.query = opts.query_params;\n res.results = res.results.filter(function (c) {\n leftToFetch--;\n const ret = filterChange(opts)(c);\n if (ret) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(c);\n }\n if (opts.return_docs) {\n results.results.push(c);\n }\n opts.onChange(c, pending, lastSeq);\n }\n return ret;\n });\n } else if (err) {\n // In case of an error, stop listening for changes and call\n // opts.complete\n opts.aborted = true;\n opts.complete(err);\n return;\n }\n\n // The changes feed may have timed out with no results\n // if so reuse last update sequence\n if (res && res.last_seq) {\n lastFetchedSeq = res.last_seq;\n }\n\n const finished = (limit && leftToFetch <= 0) ||\n (res && raw_results_length < batchSize) ||\n (opts.descending);\n\n if ((opts.continuous && !(limit && leftToFetch <= 0)) || !finished) {\n // Queue a call to fetch again with the newest sequence number\n nextTick(function () { fetchData(lastFetchedSeq, fetched); });\n } else {\n // We're done, call the callback\n opts.complete(null, results);\n }\n };\n\n fetchData(opts.since || 0, fetched);\n\n // Return a method to cancel this method from processing any more\n return {\n cancel: function () {\n opts.aborted = true;\n controller.abort();\n }\n };\n };\n\n // Given a set of document/revision IDs (given by req), tets the subset of\n // those that do NOT correspond to revisions stored in the database.\n // See http://wiki.apache.org/couchdb/HttpPostRevsDiff\n api.revsDiff = adapterFun$$1('revsDiff', async function (req, opts, callback) {\n // If no options were given, set the callback to be the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n try {\n // Get the missing document/revision IDs\n const result = await fetchJSON(genDBUrl(host, '_revs_diff'), {\n method: 'POST',\n body: JSON.stringify(req)\n });\n callback(null, result.data);\n } catch (error) {\n callback(error);\n }\n });\n\n api._close = function (callback) {\n callback();\n };\n\n api._destroy = async function (options, callback) {\n try {\n const json = await fetchJSON(genDBUrl(host, ''), {method: 'DELETE'});\n callback(null, json);\n } catch (error) {\n if (error.status === 404) {\n callback(null, {ok: true});\n } else {\n callback(error);\n }\n }\n };\n}\n\n// HttpPouch is a valid adapter.\nHttpPouch.valid = function () {\n return true;\n};\n\nfunction HttpPouch$1 (PouchDB) {\n PouchDB.adapter('http', HttpPouch, false);\n PouchDB.adapter('https', HttpPouch, false);\n}\n\nclass QueryParseError extends Error {\n constructor(message) {\n super();\n this.status = 400;\n this.name = 'query_parse_error';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, QueryParseError);\n } catch (e) {}\n }\n}\n\nclass NotFoundError extends Error {\n constructor(message) {\n super();\n this.status = 404;\n this.name = 'not_found';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, NotFoundError);\n } catch (e) {}\n }\n}\n\nclass BuiltInError extends Error {\n constructor(message) {\n super();\n this.status = 500;\n this.name = 'invalid_value';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, BuiltInError);\n } catch (e) {}\n }\n}\n\nfunction promisedCallback(promise, callback) {\n if (callback) {\n promise.then(function (res) {\n nextTick(function () {\n callback(null, res);\n });\n }, function (reason) {\n nextTick(function () {\n callback(reason);\n });\n });\n }\n return promise;\n}\n\nfunction callbackify(fun) {\n return function (...args) {\n var cb = args.pop();\n var promise = fun.apply(this, args);\n if (typeof cb === 'function') {\n promisedCallback(promise, cb);\n }\n return promise;\n };\n}\n\n// Promise finally util similar to Q.finally\nfunction fin(promise, finalPromiseFactory) {\n return promise.then(function (res) {\n return finalPromiseFactory().then(function () {\n return res;\n });\n }, function (reason) {\n return finalPromiseFactory().then(function () {\n throw reason;\n });\n });\n}\n\nfunction sequentialize(queue, promiseFactory) {\n return function () {\n var args = arguments;\n var that = this;\n return queue.add(function () {\n return promiseFactory.apply(that, args);\n });\n };\n}\n\n// uniq an array of strings, order not guaranteed\n// similar to underscore/lodash _.uniq\nfunction uniq(arr) {\n var theSet = new Set(arr);\n var result = new Array(theSet.size);\n var index = -1;\n theSet.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nfunction mapToKeysArray(map) {\n var result = new Array(map.size);\n var index = -1;\n map.forEach(function (value, key) {\n result[++index] = key;\n });\n return result;\n}\n\nfunction createBuiltInError(name) {\n var message = 'builtin ' + name +\n ' function requires map values to be numbers' +\n ' or number arrays';\n return new BuiltInError(message);\n}\n\nfunction sum(values) {\n var result = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n if (typeof num !== 'number') {\n if (Array.isArray(num)) {\n // lists of numbers are also allowed, sum them separately\n result = typeof result === 'number' ? [result] : result;\n for (var j = 0, jLen = num.length; j < jLen; j++) {\n var jNum = num[j];\n if (typeof jNum !== 'number') {\n throw createBuiltInError('_sum');\n } else if (typeof result[j] === 'undefined') {\n result.push(jNum);\n } else {\n result[j] += jNum;\n }\n }\n } else { // not array/number\n throw createBuiltInError('_sum');\n }\n } else if (typeof result === 'number') {\n result += num;\n } else { // add number to array\n result[0] += num;\n }\n }\n return result;\n}\n\nvar log = guardedConsole.bind(null, 'log');\nvar isArray = Array.isArray;\nvar toJSON = JSON.parse;\n\nfunction evalFunctionWithEval(func, emit) {\n return scopeEval(\n \"return (\" + func.replace(/;\\s*$/, \"\") + \");\",\n {\n emit,\n sum,\n log,\n isArray,\n toJSON\n }\n );\n}\n\n/*\n * Simple task queue to sequentialize actions. Assumes\n * callbacks will eventually fire (once).\n */\n\nclass TaskQueue$1 {\n constructor() {\n this.promise = Promise.resolve();\n }\n\n add(promiseFactory) {\n this.promise = this.promise\n // just recover\n .catch(() => { })\n .then(() => promiseFactory());\n return this.promise;\n }\n\n finish() {\n return this.promise;\n }\n}\n\nfunction stringify(input) {\n if (!input) {\n return 'undefined'; // backwards compat for empty reduce\n }\n // for backwards compat with mapreduce, functions/strings are stringified\n // as-is. everything else is JSON-stringified.\n switch (typeof input) {\n case 'function':\n // e.g. a mapreduce map\n return input.toString();\n case 'string':\n // e.g. a mapreduce built-in _reduce function\n return input.toString();\n default:\n // e.g. a JSON object in the case of mango queries\n return JSON.stringify(input);\n }\n}\n\n/* create a string signature for a view so we can cache it and uniq it */\nfunction createViewSignature(mapFun, reduceFun) {\n // the \"undefined\" part is for backwards compatibility\n return stringify(mapFun) + stringify(reduceFun) + 'undefined';\n}\n\nasync function createView(sourceDB, viewName, mapFun, reduceFun, temporary, localDocName) {\n const viewSignature = createViewSignature(mapFun, reduceFun);\n\n let cachedViews;\n if (!temporary) {\n // cache this to ensure we don't try to update the same view twice\n cachedViews = sourceDB._cachedViews = sourceDB._cachedViews || {};\n if (cachedViews[viewSignature]) {\n return cachedViews[viewSignature];\n }\n }\n\n const promiseForView = sourceDB.info().then(async function (info) {\n const depDbName = info.db_name + '-mrview-' +\n (temporary ? 'temp' : stringMd5(viewSignature));\n\n // save the view name in the source db so it can be cleaned up if necessary\n // (e.g. when the _design doc is deleted, remove all associated view data)\n function diffFunction(doc) {\n doc.views = doc.views || {};\n let fullViewName = viewName;\n if (fullViewName.indexOf('/') === -1) {\n fullViewName = viewName + '/' + viewName;\n }\n const depDbs = doc.views[fullViewName] = doc.views[fullViewName] || {};\n /* istanbul ignore if */\n if (depDbs[depDbName]) {\n return; // no update necessary\n }\n depDbs[depDbName] = true;\n return doc;\n }\n await upsert(sourceDB, '_local/' + localDocName, diffFunction);\n const res = await sourceDB.registerDependentDatabase(depDbName);\n const db = res.db;\n db.auto_compaction = true;\n const view = {\n name: depDbName,\n db,\n sourceDB,\n adapter: sourceDB.adapter,\n mapFun,\n reduceFun\n };\n\n let lastSeqDoc;\n try {\n lastSeqDoc = await view.db.get('_local/lastSeq');\n } catch (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n }\n\n view.seq = lastSeqDoc ? lastSeqDoc.seq : 0;\n if (cachedViews) {\n view.db.once('destroyed', function () {\n delete cachedViews[viewSignature];\n });\n }\n return view;\n });\n\n if (cachedViews) {\n cachedViews[viewSignature] = promiseForView;\n }\n return promiseForView;\n}\n\nconst persistentQueues = {};\nconst tempViewQueue = new TaskQueue$1();\nconst CHANGES_BATCH_SIZE$1 = 50;\n\nfunction parseViewName(name) {\n // can be either 'ddocname/viewname' or just 'viewname'\n // (where the ddoc name is the same)\n return name.indexOf('/') === -1 ? [name, name] : name.split('/');\n}\n\nfunction isGenOne(changes) {\n // only return true if the current change is 1-\n // and there are no other leafs\n return changes.length === 1 && /^1-/.test(changes[0].rev);\n}\n\nfunction emitError(db, e, data) {\n try {\n db.emit('error', e);\n } catch (err) {\n guardedConsole('error',\n 'The user\\'s map/reduce function threw an uncaught error.\\n' +\n 'You can debug this error by doing:\\n' +\n 'myDatabase.on(\\'error\\', function (err) { debugger; });\\n' +\n 'Please double-check your map/reduce function.');\n guardedConsole('error', e, data);\n }\n}\n\n/**\n * Returns an \"abstract\" mapreduce object of the form:\n *\n * {\n * query: queryFun,\n * viewCleanup: viewCleanupFun\n * }\n *\n * Arguments are:\n *\n * localDoc: string\n * This is for the local doc that gets saved in order to track the\n * \"dependent\" DBs and clean them up for viewCleanup. It should be\n * unique, so that indexer plugins don't collide with each other.\n * mapper: function (mapFunDef, emit)\n * Returns a map function based on the mapFunDef, which in the case of\n * normal map/reduce is just the de-stringified function, but may be\n * something else, such as an object in the case of pouchdb-find.\n * reducer: function (reduceFunDef)\n * Ditto, but for reducing. Modules don't have to support reducing\n * (e.g. pouchdb-find).\n * ddocValidator: function (ddoc, viewName)\n * Throws an error if the ddoc or viewName is not valid.\n * This could be a way to communicate to the user that the configuration for the\n * indexer is invalid.\n */\nfunction createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator) {\n\n function tryMap(db, fun, doc) {\n // emit an event if there was an error thrown by a map function.\n // putting try/catches in a single function also avoids deoptimizations.\n try {\n fun(doc);\n } catch (e) {\n emitError(db, e, {fun, doc});\n }\n }\n\n function tryReduce(db, fun, keys, values, rereduce) {\n // same as above, but returning the result or an error. there are two separate\n // functions to avoid extra memory allocations since the tryCode() case is used\n // for custom map functions (common) vs this function, which is only used for\n // custom reduce functions (rare)\n try {\n return {output : fun(keys, values, rereduce)};\n } catch (e) {\n emitError(db, e, {fun, keys, values, rereduce});\n return {error: e};\n }\n }\n\n function sortByKeyThenValue(x, y) {\n const keyCompare = collate(x.key, y.key);\n return keyCompare !== 0 ? keyCompare : collate(x.value, y.value);\n }\n\n function sliceResults(results, limit, skip) {\n skip = skip || 0;\n if (typeof limit === 'number') {\n return results.slice(skip, limit + skip);\n } else if (skip > 0) {\n return results.slice(skip);\n }\n return results;\n }\n\n function rowToDocId(row) {\n const val = row.value;\n // Users can explicitly specify a joined doc _id, or it\n // defaults to the doc _id that emitted the key/value.\n const docId = (val && typeof val === 'object' && val._id) || row.id;\n return docId;\n }\n\n function readAttachmentsAsBlobOrBuffer(res) {\n for (const row of res.rows) {\n const atts = row.doc && row.doc._attachments;\n if (!atts) {\n continue;\n }\n for (const filename of Object.keys(atts)) {\n const att = atts[filename];\n atts[filename].data = b64ToBluffer(att.data, att.content_type);\n }\n }\n }\n\n function postprocessAttachments(opts) {\n return function (res) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(res);\n }\n return res;\n };\n }\n\n function addHttpParam(paramName, opts, params, asJson) {\n // add an http param from opts to params, optionally json-encoded\n let val = opts[paramName];\n if (typeof val !== 'undefined') {\n if (asJson) {\n val = encodeURIComponent(JSON.stringify(val));\n }\n params.push(paramName + '=' + val);\n }\n }\n\n function coerceInteger(integerCandidate) {\n if (typeof integerCandidate !== 'undefined') {\n const asNumber = Number(integerCandidate);\n // prevents e.g. '1foo' or '1.1' being coerced to 1\n if (!isNaN(asNumber) && asNumber === parseInt(integerCandidate, 10)) {\n return asNumber;\n } else {\n return integerCandidate;\n }\n }\n }\n\n function coerceOptions(opts) {\n opts.group_level = coerceInteger(opts.group_level);\n opts.limit = coerceInteger(opts.limit);\n opts.skip = coerceInteger(opts.skip);\n return opts;\n }\n\n function checkPositiveInteger(number) {\n if (number) {\n if (typeof number !== 'number') {\n return new QueryParseError(`Invalid value for integer: \"${number}\"`);\n }\n if (number < 0) {\n return new QueryParseError(`Invalid value for positive integer: \"${number}\"`);\n }\n }\n }\n\n function checkQueryParseError(options, fun) {\n const startkeyName = options.descending ? 'endkey' : 'startkey';\n const endkeyName = options.descending ? 'startkey' : 'endkey';\n\n if (typeof options[startkeyName] !== 'undefined' &&\n typeof options[endkeyName] !== 'undefined' &&\n collate(options[startkeyName], options[endkeyName]) > 0) {\n throw new QueryParseError('No rows can match your key range, ' +\n 'reverse your start_key and end_key or set {descending : true}');\n } else if (fun.reduce && options.reduce !== false) {\n if (options.include_docs) {\n throw new QueryParseError('{include_docs:true} is invalid for reduce');\n } else if (options.keys && options.keys.length > 1 &&\n !options.group && !options.group_level) {\n throw new QueryParseError('Multi-key fetches for reduce views must use ' +\n '{group: true}');\n }\n }\n for (const optionName of ['group_level', 'limit', 'skip']) {\n const error = checkPositiveInteger(options[optionName]);\n if (error) {\n throw error;\n }\n }\n }\n\n async function httpQuery(db, fun, opts) {\n // List of parameters to add to the PUT request\n let params = [];\n let body;\n let method = 'GET';\n let ok;\n\n // If opts.reduce exists and is defined, then add it to the list\n // of parameters.\n // If reduce=false then the results are that of only the map function\n // not the final result of map and reduce.\n addHttpParam('reduce', opts, params);\n addHttpParam('include_docs', opts, params);\n addHttpParam('attachments', opts, params);\n addHttpParam('limit', opts, params);\n addHttpParam('descending', opts, params);\n addHttpParam('group', opts, params);\n addHttpParam('group_level', opts, params);\n addHttpParam('skip', opts, params);\n addHttpParam('stale', opts, params);\n addHttpParam('conflicts', opts, params);\n addHttpParam('startkey', opts, params, true);\n addHttpParam('start_key', opts, params, true);\n addHttpParam('endkey', opts, params, true);\n addHttpParam('end_key', opts, params, true);\n addHttpParam('inclusive_end', opts, params);\n addHttpParam('key', opts, params, true);\n addHttpParam('update_seq', opts, params);\n\n // Format the list of parameters into a valid URI query string\n params = params.join('&');\n params = params === '' ? '' : '?' + params;\n\n // If keys are supplied, issue a POST to circumvent GET query string limits\n // see http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options\n if (typeof opts.keys !== 'undefined') {\n const MAX_URL_LENGTH = 2000;\n // according to http://stackoverflow.com/a/417184/680742,\n // the de facto URL length limit is 2000 characters\n\n const keysAsString = `keys=${encodeURIComponent(JSON.stringify(opts.keys))}`;\n if (keysAsString.length + params.length + 1 <= MAX_URL_LENGTH) {\n // If the keys are short enough, do a GET. we do this to work around\n // Safari not understanding 304s on POSTs (see pouchdb/pouchdb#1239)\n params += (params[0] === '?' ? '&' : '?') + keysAsString;\n } else {\n method = 'POST';\n if (typeof fun === 'string') {\n body = {keys: opts.keys};\n } else { // fun is {map : mapfun}, so append to this\n fun.keys = opts.keys;\n }\n }\n }\n\n // We are referencing a query defined in the design doc\n if (typeof fun === 'string') {\n const parts = parseViewName(fun);\n\n const response = await db.fetch('_design/' + parts[0] + '/_view/' + parts[1] + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method,\n body: JSON.stringify(body)\n });\n ok = response.ok;\n // status = response.status;\n const result = await response.json();\n\n if (!ok) {\n result.status = response.status;\n throw generateErrorFromResponse(result);\n }\n\n // fail the entire request if the result contains an error\n for (const row of result.rows) {\n /* istanbul ignore if */\n if (row.value && row.value.error && row.value.error === \"builtin_reduce_error\") {\n throw new Error(row.reason);\n }\n }\n\n return new Promise(function (resolve) {\n resolve(result);\n }).then(postprocessAttachments(opts));\n }\n\n // We are using a temporary view, terrible for performance, good for testing\n body = body || {};\n for (const key of Object.keys(fun)) {\n if (Array.isArray(fun[key])) {\n body[key] = fun[key];\n } else {\n body[key] = fun[key].toString();\n }\n }\n\n const response = await db.fetch('_temp_view' + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST',\n body: JSON.stringify(body)\n });\n\n ok = response.ok;\n // status = response.status;\n const result = await response.json();\n if (!ok) {\n result.status = response.status;\n throw generateErrorFromResponse(result);\n }\n\n return new Promise(function (resolve) {\n resolve(result);\n }).then(postprocessAttachments(opts));\n }\n\n // custom adapters can define their own api._query\n // and override the default behavior\n /* istanbul ignore next */\n function customQuery(db, fun, opts) {\n return new Promise(function (resolve, reject) {\n db._query(fun, opts, function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n // custom adapters can define their own api._viewCleanup\n // and override the default behavior\n /* istanbul ignore next */\n function customViewCleanup(db) {\n return new Promise(function (resolve, reject) {\n db._viewCleanup(function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n function defaultsTo(value) {\n return function (reason) {\n /* istanbul ignore else */\n if (reason.status === 404) {\n return value;\n } else {\n throw reason;\n }\n };\n }\n\n // returns a promise for a list of docs to update, based on the input docId.\n // the order doesn't matter, because post-3.2.0, bulkDocs\n // is an atomic operation in all three adapters.\n async function getDocsToPersist(docId, view, docIdsToChangesAndEmits) {\n const metaDocId = '_local/doc_' + docId;\n const defaultMetaDoc = {_id: metaDocId, keys: []};\n const docData = docIdsToChangesAndEmits.get(docId);\n const indexableKeysToKeyValues = docData[0];\n const changes = docData[1];\n\n function getMetaDoc() {\n if (isGenOne(changes)) {\n // generation 1, so we can safely assume initial state\n // for performance reasons (avoids unnecessary GETs)\n return Promise.resolve(defaultMetaDoc);\n }\n return view.db.get(metaDocId).catch(defaultsTo(defaultMetaDoc));\n }\n\n function getKeyValueDocs(metaDoc) {\n if (!metaDoc.keys.length) {\n // no keys, no need for a lookup\n return Promise.resolve({rows: []});\n }\n return view.db.allDocs({\n keys: metaDoc.keys,\n include_docs: true\n });\n }\n\n function processKeyValueDocs(metaDoc, kvDocsRes) {\n const kvDocs = [];\n const oldKeys = new Set();\n\n for (const row of kvDocsRes.rows) {\n const doc = row.doc;\n if (!doc) { // deleted\n continue;\n }\n kvDocs.push(doc);\n oldKeys.add(doc._id);\n doc._deleted = !indexableKeysToKeyValues.has(doc._id);\n if (!doc._deleted) {\n const keyValue = indexableKeysToKeyValues.get(doc._id);\n if ('value' in keyValue) {\n doc.value = keyValue.value;\n }\n }\n }\n const newKeys = mapToKeysArray(indexableKeysToKeyValues);\n for (const key of newKeys) {\n if (!oldKeys.has(key)) {\n // new doc\n const kvDoc = {\n _id: key\n };\n const keyValue = indexableKeysToKeyValues.get(key);\n if ('value' in keyValue) {\n kvDoc.value = keyValue.value;\n }\n kvDocs.push(kvDoc);\n }\n }\n metaDoc.keys = uniq(newKeys.concat(metaDoc.keys));\n kvDocs.push(metaDoc);\n\n return kvDocs;\n }\n\n const metaDoc = await getMetaDoc();\n const keyValueDocs = await getKeyValueDocs(metaDoc);\n return processKeyValueDocs(metaDoc, keyValueDocs);\n }\n\n function updatePurgeSeq(view) {\n // with this approach, we just assume to have processed all missing purges and write the latest\n // purgeSeq into the _local/purgeSeq doc.\n return view.sourceDB.get('_local/purges').then(function (res) {\n const purgeSeq = res.purgeSeq;\n return view.db.get('_local/purgeSeq').then(function (res) {\n return res._rev;\n })\n .catch(defaultsTo(undefined))\n .then(function (rev$$1) {\n return view.db.put({\n _id: '_local/purgeSeq',\n _rev: rev$$1,\n purgeSeq,\n });\n });\n }).catch(function (err) {\n if (err.status !== 404) {\n throw err;\n }\n });\n }\n\n // updates all emitted key/value docs and metaDocs in the mrview database\n // for the given batch of documents from the source database\n function saveKeyValues(view, docIdsToChangesAndEmits, seq) {\n var seqDocId = '_local/lastSeq';\n return view.db.get(seqDocId)\n .catch(defaultsTo({_id: seqDocId, seq: 0}))\n .then(function (lastSeqDoc) {\n var docIds = mapToKeysArray(docIdsToChangesAndEmits);\n return Promise.all(docIds.map(function (docId) {\n return getDocsToPersist(docId, view, docIdsToChangesAndEmits);\n })).then(function (listOfDocsToPersist) {\n var docsToPersist = listOfDocsToPersist.flat();\n lastSeqDoc.seq = seq;\n docsToPersist.push(lastSeqDoc);\n // write all docs in a single operation, update the seq once\n return view.db.bulkDocs({docs : docsToPersist});\n })\n // TODO: this should be placed somewhere else, probably? we're querying both docs twice\n // (first time when getting the actual purges).\n .then(() => updatePurgeSeq(view));\n });\n }\n\n function getQueue(view) {\n const viewName = typeof view === 'string' ? view : view.name;\n let queue = persistentQueues[viewName];\n if (!queue) {\n queue = persistentQueues[viewName] = new TaskQueue$1();\n }\n return queue;\n }\n\n async function updateView(view, opts) {\n return sequentialize(getQueue(view), function () {\n return updateViewInQueue(view, opts);\n })();\n }\n\n async function updateViewInQueue(view, opts) {\n // bind the emit function once\n let mapResults;\n let doc;\n let taskId;\n\n function emit(key, value) {\n const output = {id: doc._id, key: normalizeKey(key)};\n // Don't explicitly store the value unless it's defined and non-null.\n // This saves on storage space, because often people don't use it.\n if (typeof value !== 'undefined' && value !== null) {\n output.value = normalizeKey(value);\n }\n mapResults.push(output);\n }\n\n const mapFun = mapper(view.mapFun, emit);\n\n let currentSeq = view.seq || 0;\n\n function createTask() {\n return view.sourceDB.info().then(function (info) {\n taskId = view.sourceDB.activeTasks.add({\n name: 'view_indexing',\n total_items: info.update_seq - currentSeq,\n });\n });\n }\n\n function processChange(docIdsToChangesAndEmits, seq) {\n return function () {\n return saveKeyValues(view, docIdsToChangesAndEmits, seq);\n };\n }\n\n let indexed_docs = 0;\n const progress = {\n view: view.name,\n indexed_docs\n };\n view.sourceDB.emit('indexing', progress);\n\n const queue = new TaskQueue$1();\n\n async function processNextBatch() {\n const response = await view.sourceDB.changes({\n return_docs: true,\n conflicts: true,\n include_docs: true,\n style: 'all_docs',\n since: currentSeq,\n limit: opts.changes_batch_size\n });\n const purges = await getRecentPurges();\n return processBatch(response, purges);\n }\n\n function getRecentPurges() {\n return view.db.get('_local/purgeSeq').then(function (res) {\n return res.purgeSeq;\n })\n .catch(defaultsTo(-1))\n .then(function (purgeSeq) {\n return view.sourceDB.get('_local/purges').then(function (res) {\n const recentPurges = res.purges.filter(function (purge, index) {\n return index > purgeSeq;\n }).map((purge) => purge.docId);\n\n const uniquePurges = recentPurges.filter(function (docId, index) {\n return recentPurges.indexOf(docId) === index;\n });\n\n return Promise.all(uniquePurges.map(function (docId) {\n return view.sourceDB.get(docId).then(function (doc) {\n return { docId, doc };\n })\n .catch(defaultsTo({ docId }));\n }));\n })\n .catch(defaultsTo([]));\n });\n }\n\n function processBatch(response, purges) {\n const results = response.results;\n if (!results.length && !purges.length) {\n return;\n }\n\n for (const purge of purges) {\n const index = results.findIndex(function (change) {\n return change.id === purge.docId;\n });\n if (index < 0) {\n // mimic a db.remove() on the changes feed\n const entry = {\n _id: purge.docId,\n doc: {\n _id: purge.docId,\n _deleted: 1,\n },\n changes: [],\n };\n\n if (purge.doc) {\n // update with new winning rev after purge\n entry.doc = purge.doc;\n entry.changes.push({ rev: purge.doc._rev });\n }\n\n results.push(entry);\n }\n }\n\n const docIdsToChangesAndEmits = createDocIdsToChangesAndEmits(results);\n\n queue.add(processChange(docIdsToChangesAndEmits, currentSeq));\n\n indexed_docs = indexed_docs + results.length;\n const progress = {\n view: view.name,\n last_seq: response.last_seq,\n results_count: results.length,\n indexed_docs\n };\n view.sourceDB.emit('indexing', progress);\n view.sourceDB.activeTasks.update(taskId, {completed_items: indexed_docs});\n\n if (results.length < opts.changes_batch_size) {\n return;\n }\n return processNextBatch();\n }\n\n function createDocIdsToChangesAndEmits(results) {\n const docIdsToChangesAndEmits = new Map();\n for (const change of results) {\n if (change.doc._id[0] !== '_') {\n mapResults = [];\n doc = change.doc;\n\n if (!doc._deleted) {\n tryMap(view.sourceDB, mapFun, doc);\n }\n mapResults.sort(sortByKeyThenValue);\n\n const indexableKeysToKeyValues = createIndexableKeysToKeyValues(mapResults);\n docIdsToChangesAndEmits.set(change.doc._id, [\n indexableKeysToKeyValues,\n change.changes\n ]);\n }\n currentSeq = change.seq;\n }\n return docIdsToChangesAndEmits;\n }\n\n function createIndexableKeysToKeyValues(mapResults) {\n const indexableKeysToKeyValues = new Map();\n let lastKey;\n for (let i = 0, len = mapResults.length; i < len; i++) {\n const emittedKeyValue = mapResults[i];\n const complexKey = [emittedKeyValue.key, emittedKeyValue.id];\n if (i > 0 && collate(emittedKeyValue.key, lastKey) === 0) {\n complexKey.push(i); // dup key+id, so make it unique\n }\n indexableKeysToKeyValues.set(toIndexableString(complexKey), emittedKeyValue);\n lastKey = emittedKeyValue.key;\n }\n return indexableKeysToKeyValues;\n }\n\n try {\n await createTask();\n await processNextBatch();\n await queue.finish();\n view.seq = currentSeq;\n view.sourceDB.activeTasks.remove(taskId);\n } catch (error) {\n view.sourceDB.activeTasks.remove(taskId, error);\n }\n }\n\n function reduceView(view, results, options) {\n if (options.group_level === 0) {\n delete options.group_level;\n }\n\n const shouldGroup = options.group || options.group_level;\n const reduceFun = reducer(view.reduceFun);\n const groups = [];\n const lvl = isNaN(options.group_level)\n ? Number.POSITIVE_INFINITY\n : options.group_level;\n\n for (const result of results) {\n const last = groups[groups.length - 1];\n let groupKey = shouldGroup ? result.key : null;\n\n // only set group_level for array keys\n if (shouldGroup && Array.isArray(groupKey)) {\n groupKey = groupKey.slice(0, lvl);\n }\n\n if (last && collate(last.groupKey, groupKey) === 0) {\n last.keys.push([result.key, result.id]);\n last.values.push(result.value);\n continue;\n }\n groups.push({\n keys: [[result.key, result.id]],\n values: [result.value],\n groupKey\n });\n }\n\n results = [];\n for (const group of groups) {\n const reduceTry = tryReduce(view.sourceDB, reduceFun, group.keys, group.values, false);\n if (reduceTry.error && reduceTry.error instanceof BuiltInError) {\n // CouchDB returns an error if a built-in errors out\n throw reduceTry.error;\n }\n results.push({\n // CouchDB just sets the value to null if a non-built-in errors out\n value: reduceTry.error ? null : reduceTry.output,\n key: group.groupKey\n });\n }\n // no total_rows/offset when reducing\n return { rows: sliceResults(results, options.limit, options.skip) };\n }\n\n function queryView(view, opts) {\n return sequentialize(getQueue(view), function () {\n return queryViewInQueue(view, opts);\n })();\n }\n\n async function queryViewInQueue(view, opts) {\n let totalRows;\n const shouldReduce = view.reduceFun && opts.reduce !== false;\n const skip = opts.skip || 0;\n if (typeof opts.keys !== 'undefined' && !opts.keys.length) {\n // equivalent query\n opts.limit = 0;\n delete opts.keys;\n }\n\n async function fetchFromView(viewOpts) {\n viewOpts.include_docs = true;\n const res = await view.db.allDocs(viewOpts);\n totalRows = res.total_rows;\n\n return res.rows.map(function (result) {\n // implicit migration - in older versions of PouchDB,\n // we explicitly stored the doc as {id: ..., key: ..., value: ...}\n // this is tested in a migration test\n /* istanbul ignore next */\n if ('value' in result.doc && typeof result.doc.value === 'object' &&\n result.doc.value !== null) {\n const keys = Object.keys(result.doc.value).sort();\n // this detection method is not perfect, but it's unlikely the user\n // emitted a value which was an object with these 3 exact keys\n const expectedKeys = ['id', 'key', 'value'];\n if (!(keys < expectedKeys || keys > expectedKeys)) {\n return result.doc.value;\n }\n }\n\n const parsedKeyAndDocId = parseIndexableString(result.doc._id);\n return {\n key: parsedKeyAndDocId[0],\n id: parsedKeyAndDocId[1],\n value: ('value' in result.doc ? result.doc.value : null)\n };\n });\n }\n\n async function onMapResultsReady(rows) {\n let finalResults;\n if (shouldReduce) {\n finalResults = reduceView(view, rows, opts);\n } else if (typeof opts.keys === 'undefined') {\n finalResults = {\n total_rows: totalRows,\n offset: skip,\n rows\n };\n } else {\n // support limit, skip for keys query\n finalResults = {\n total_rows: totalRows,\n offset: skip,\n rows: sliceResults(rows,opts.limit,opts.skip)\n };\n }\n /* istanbul ignore if */\n if (opts.update_seq) {\n finalResults.update_seq = view.seq;\n }\n if (opts.include_docs) {\n const docIds = uniq(rows.map(rowToDocId));\n\n const allDocsRes = await view.sourceDB.allDocs({\n keys: docIds,\n include_docs: true,\n conflicts: opts.conflicts,\n attachments: opts.attachments,\n binary: opts.binary\n });\n const docIdsToDocs = new Map();\n for (const row of allDocsRes.rows) {\n docIdsToDocs.set(row.id, row.doc);\n }\n for (const row of rows) {\n const docId = rowToDocId(row);\n const doc = docIdsToDocs.get(docId);\n if (doc) {\n row.doc = doc;\n }\n }\n }\n return finalResults;\n }\n\n if (typeof opts.keys !== 'undefined') {\n const keys = opts.keys;\n const fetchPromises = keys.map(function (key) {\n const viewOpts = {\n startkey : toIndexableString([key]),\n endkey : toIndexableString([key, {}])\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n return fetchFromView(viewOpts);\n });\n const result = await Promise.all(fetchPromises);\n const flattenedResult = result.flat();\n return onMapResultsReady(flattenedResult);\n } else { // normal query, no 'keys'\n const viewOpts = {\n descending : opts.descending\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n let startkey;\n let endkey;\n if ('start_key' in opts) {\n startkey = opts.start_key;\n }\n if ('startkey' in opts) {\n startkey = opts.startkey;\n }\n if ('end_key' in opts) {\n endkey = opts.end_key;\n }\n if ('endkey' in opts) {\n endkey = opts.endkey;\n }\n if (typeof startkey !== 'undefined') {\n viewOpts.startkey = opts.descending ?\n toIndexableString([startkey, {}]) :\n toIndexableString([startkey]);\n }\n if (typeof endkey !== 'undefined') {\n let inclusiveEnd = opts.inclusive_end !== false;\n if (opts.descending) {\n inclusiveEnd = !inclusiveEnd;\n }\n\n viewOpts.endkey = toIndexableString(\n inclusiveEnd ? [endkey, {}] : [endkey]);\n }\n if (typeof opts.key !== 'undefined') {\n const keyStart = toIndexableString([opts.key]);\n const keyEnd = toIndexableString([opts.key, {}]);\n if (viewOpts.descending) {\n viewOpts.endkey = keyStart;\n viewOpts.startkey = keyEnd;\n } else {\n viewOpts.startkey = keyStart;\n viewOpts.endkey = keyEnd;\n }\n }\n if (!shouldReduce) {\n if (typeof opts.limit === 'number') {\n viewOpts.limit = opts.limit;\n }\n viewOpts.skip = skip;\n }\n\n const result = await fetchFromView(viewOpts);\n return onMapResultsReady(result);\n }\n }\n\n async function httpViewCleanup(db) {\n const response = await db.fetch('_view_cleanup', {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST'\n });\n return response.json();\n }\n\n async function localViewCleanup(db) {\n try {\n const metaDoc = await db.get('_local/' + localDocName);\n const docsToViews = new Map();\n\n for (const fullViewName of Object.keys(metaDoc.views)) {\n const parts = parseViewName(fullViewName);\n const designDocName = '_design/' + parts[0];\n const viewName = parts[1];\n let views = docsToViews.get(designDocName);\n if (!views) {\n views = new Set();\n docsToViews.set(designDocName, views);\n }\n views.add(viewName);\n }\n const opts = {\n keys : mapToKeysArray(docsToViews),\n include_docs : true\n };\n\n const res = await db.allDocs(opts);\n const viewsToStatus = {};\n for (const row of res.rows) {\n const ddocName = row.key.substring(8); // cuts off '_design/'\n for (const viewName of docsToViews.get(row.key)) {\n let fullViewName = ddocName + '/' + viewName;\n /* istanbul ignore if */\n if (!metaDoc.views[fullViewName]) {\n // new format, without slashes, to support PouchDB 2.2.0\n // migration test in pouchdb's browser.migration.js verifies this\n fullViewName = viewName;\n }\n const viewDBNames = Object.keys(metaDoc.views[fullViewName]);\n // design doc deleted, or view function nonexistent\n const statusIsGood = row.doc && row.doc.views &&\n row.doc.views[viewName];\n for (const viewDBName of viewDBNames) {\n viewsToStatus[viewDBName] = viewsToStatus[viewDBName] || statusIsGood;\n }\n }\n }\n\n const dbsToDelete = Object.keys(viewsToStatus)\n .filter(function (viewDBName) { return !viewsToStatus[viewDBName]; });\n\n const destroyPromises = dbsToDelete.map(function (viewDBName) {\n return sequentialize(getQueue(viewDBName), function () {\n return new db.constructor(viewDBName, db.__opts).destroy();\n })();\n });\n\n return Promise.all(destroyPromises).then(function () {\n return {ok: true};\n });\n } catch (err) {\n if (err.status === 404) {\n return {ok: true};\n } else {\n throw err;\n }\n }\n }\n\n async function queryPromised(db, fun, opts) {\n /* istanbul ignore next */\n if (typeof db._query === 'function') {\n return customQuery(db, fun, opts);\n }\n if (isRemote(db)) {\n return httpQuery(db, fun, opts);\n }\n\n const updateViewOpts = {\n changes_batch_size: db.__opts.view_update_changes_batch_size || CHANGES_BATCH_SIZE$1\n };\n\n if (typeof fun !== 'string') {\n // temp_view\n checkQueryParseError(opts, fun);\n\n tempViewQueue.add(async function () {\n const view = await createView(\n /* sourceDB */ db,\n /* viewName */ 'temp_view/temp_view',\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ true,\n /* localDocName */ localDocName);\n\n return fin(updateView(view, updateViewOpts).then(\n function () { return queryView(view, opts); }),\n function () { return view.db.destroy(); }\n );\n });\n return tempViewQueue.finish();\n } else {\n // persistent view\n const fullViewName = fun;\n const parts = parseViewName(fullViewName);\n const designDocName = parts[0];\n const viewName = parts[1];\n\n const doc = await db.get('_design/' + designDocName);\n fun = doc.views && doc.views[viewName];\n\n if (!fun) {\n // basic validator; it's assumed that every subclass would want this\n throw new NotFoundError(`ddoc ${doc._id} has no view named ${viewName}`);\n }\n\n ddocValidator(doc, viewName);\n checkQueryParseError(opts, fun);\n\n const view = await createView(\n /* sourceDB */ db,\n /* viewName */ fullViewName,\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ false,\n /* localDocName */ localDocName);\n\n if (opts.stale === 'ok' || opts.stale === 'update_after') {\n if (opts.stale === 'update_after') {\n nextTick(function () {\n updateView(view, updateViewOpts);\n });\n }\n return queryView(view, opts);\n } else { // stale not ok\n await updateView(view, updateViewOpts);\n return queryView(view, opts);\n }\n }\n }\n\n function abstractQuery(fun, opts, callback) {\n const db = this;\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = opts ? coerceOptions(opts) : {};\n\n if (typeof fun === 'function') {\n fun = {map : fun};\n }\n\n const promise = Promise.resolve().then(function () {\n return queryPromised(db, fun, opts);\n });\n promisedCallback(promise, callback);\n return promise;\n }\n\n const abstractViewCleanup = callbackify(function () {\n const db = this;\n /* istanbul ignore next */\n if (typeof db._viewCleanup === 'function') {\n return customViewCleanup(db);\n }\n if (isRemote(db)) {\n return httpViewCleanup(db);\n }\n return localViewCleanup(db);\n });\n\n return {\n query: abstractQuery,\n viewCleanup: abstractViewCleanup\n };\n}\n\nvar builtInReduce = {\n _sum: function (keys, values) {\n return sum(values);\n },\n\n _count: function (keys, values) {\n return values.length;\n },\n\n _stats: function (keys, values) {\n // no need to implement rereduce=true, because Pouch\n // will never call it\n function sumsqr(values) {\n var _sumsqr = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n _sumsqr += (num * num);\n }\n return _sumsqr;\n }\n return {\n sum : sum(values),\n min : Math.min.apply(null, values),\n max : Math.max.apply(null, values),\n count : values.length,\n sumsqr : sumsqr(values)\n };\n }\n};\n\nfunction getBuiltIn(reduceFunString) {\n if (/^_sum/.test(reduceFunString)) {\n return builtInReduce._sum;\n } else if (/^_count/.test(reduceFunString)) {\n return builtInReduce._count;\n } else if (/^_stats/.test(reduceFunString)) {\n return builtInReduce._stats;\n } else if (/^_/.test(reduceFunString)) {\n throw new Error(reduceFunString + ' is not a supported reduce function.');\n }\n}\n\nfunction mapper(mapFun, emit) {\n // for temp_views one can use emit(doc, emit), see #38\n if (typeof mapFun === \"function\" && mapFun.length === 2) {\n var origMap = mapFun;\n return function (doc) {\n return origMap(doc, emit);\n };\n } else {\n return evalFunctionWithEval(mapFun.toString(), emit);\n }\n}\n\nfunction reducer(reduceFun) {\n var reduceFunString = reduceFun.toString();\n var builtIn = getBuiltIn(reduceFunString);\n if (builtIn) {\n return builtIn;\n } else {\n return evalFunctionWithEval(reduceFunString);\n }\n}\n\nfunction ddocValidator(ddoc, viewName) {\n var fun = ddoc.views && ddoc.views[viewName];\n if (typeof fun.map !== 'string') {\n throw new NotFoundError('ddoc ' + ddoc._id + ' has no string view named ' +\n viewName + ', instead found object of type: ' + typeof fun.map);\n }\n}\n\nvar localDocName = 'mrviews';\nvar abstract = createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator);\n\nfunction query(fun, opts, callback) {\n return abstract.query.call(this, fun, opts, callback);\n}\n\nfunction viewCleanup(callback) {\n return abstract.viewCleanup.call(this, callback);\n}\n\nvar mapreduce = {\n query,\n viewCleanup\n};\n\nfunction fileHasChanged(localDoc, remoteDoc, filename) {\n return !localDoc._attachments ||\n !localDoc._attachments[filename] ||\n localDoc._attachments[filename].digest !== remoteDoc._attachments[filename].digest;\n}\n\nfunction getDocAttachments(db, doc) {\n var filenames = Object.keys(doc._attachments);\n return Promise.all(filenames.map(function (filename) {\n return db.getAttachment(doc._id, filename, {rev: doc._rev});\n }));\n}\n\nfunction getDocAttachmentsFromTargetOrSource(target, src, doc) {\n var doCheckForLocalAttachments = isRemote(src) && !isRemote(target);\n var filenames = Object.keys(doc._attachments);\n\n if (!doCheckForLocalAttachments) {\n return getDocAttachments(src, doc);\n }\n\n return target.get(doc._id).then(function (localDoc) {\n return Promise.all(filenames.map(function (filename) {\n if (fileHasChanged(localDoc, doc, filename)) {\n return src.getAttachment(doc._id, filename);\n }\n\n return target.getAttachment(localDoc._id, filename);\n }));\n }).catch(function (error) {\n /* istanbul ignore if */\n if (error.status !== 404) {\n throw error;\n }\n\n return getDocAttachments(src, doc);\n });\n}\n\nfunction createBulkGetOpts(diffs) {\n var requests = [];\n Object.keys(diffs).forEach(function (id) {\n var missingRevs = diffs[id].missing;\n missingRevs.forEach(function (missingRev) {\n requests.push({\n id,\n rev: missingRev\n });\n });\n });\n\n return {\n docs: requests,\n revs: true,\n latest: true\n };\n}\n\n//\n// Fetch all the documents from the src as described in the \"diffs\",\n// which is a mapping of docs IDs to revisions. If the state ever\n// changes to \"cancelled\", then the returned promise will be rejected.\n// Else it will be resolved with a list of fetched documents.\n//\nfunction getDocs(src, target, diffs, state) {\n diffs = clone(diffs); // we do not need to modify this\n\n var resultDocs = [],\n ok = true;\n\n function getAllDocs() {\n\n var bulkGetOpts = createBulkGetOpts(diffs);\n\n if (!bulkGetOpts.docs.length) { // optimization: skip empty requests\n return;\n }\n\n return src.bulkGet(bulkGetOpts).then(function (bulkGetResponse) {\n /* istanbul ignore if */\n if (state.cancelled) {\n throw new Error('cancelled');\n }\n return Promise.all(bulkGetResponse.results.map(function (bulkGetInfo) {\n return Promise.all(bulkGetInfo.docs.map(function (doc) {\n var remoteDoc = doc.ok;\n\n if (doc.error) {\n // when AUTO_COMPACTION is set, docs can be returned which look\n // like this: {\"missing\":\"1-7c3ac256b693c462af8442f992b83696\"}\n ok = false;\n }\n\n if (!remoteDoc || !remoteDoc._attachments) {\n return remoteDoc;\n }\n\n return getDocAttachmentsFromTargetOrSource(target, src, remoteDoc).then((attachments) => {\n var filenames = Object.keys(remoteDoc._attachments);\n attachments.forEach(function (attachment, i) {\n var att = remoteDoc._attachments[filenames[i]];\n delete att.stub;\n delete att.length;\n att.data = attachment;\n });\n\n return remoteDoc;\n });\n }));\n }))\n\n .then(function (results) {\n resultDocs = resultDocs.concat(results.flat().filter(Boolean));\n });\n });\n }\n\n function returnResult() {\n return { ok, docs:resultDocs };\n }\n\n return Promise.resolve()\n .then(getAllDocs)\n .then(returnResult);\n}\n\nvar CHECKPOINT_VERSION = 1;\nvar REPLICATOR = \"pouchdb\";\n// This is an arbitrary number to limit the\n// amount of replication history we save in the checkpoint.\n// If we save too much, the checkpoint docs will become very big,\n// if we save fewer, we'll run a greater risk of having to\n// read all the changes from 0 when checkpoint PUTs fail\n// CouchDB 2.0 has a more involved history pruning,\n// but let's go for the simple version for now.\nvar CHECKPOINT_HISTORY_SIZE = 5;\nvar LOWEST_SEQ = 0;\n\nfunction updateCheckpoint(db, id, checkpoint, session, returnValue) {\n return db.get(id).catch(function (err) {\n if (err.status === 404) {\n if (db.adapter === 'http' || db.adapter === 'https') {\n explainError(\n 404, 'PouchDB is just checking if a remote checkpoint exists.'\n );\n }\n return {\n session_id: session,\n _id: id,\n history: [],\n replicator: REPLICATOR,\n version: CHECKPOINT_VERSION\n };\n }\n throw err;\n }).then(function (doc) {\n if (returnValue.cancelled) {\n return;\n }\n\n // if the checkpoint has not changed, do not update\n if (doc.last_seq === checkpoint) {\n return;\n }\n\n // Filter out current entry for this replication\n doc.history = (doc.history || []).filter(function (item) {\n return item.session_id !== session;\n });\n\n // Add the latest checkpoint to history\n doc.history.unshift({\n last_seq: checkpoint,\n session_id: session\n });\n\n // Just take the last pieces in history, to\n // avoid really big checkpoint docs.\n // see comment on history size above\n doc.history = doc.history.slice(0, CHECKPOINT_HISTORY_SIZE);\n\n doc.version = CHECKPOINT_VERSION;\n doc.replicator = REPLICATOR;\n\n doc.session_id = session;\n doc.last_seq = checkpoint;\n\n return db.put(doc).catch(function (err) {\n if (err.status === 409) {\n // retry; someone is trying to write a checkpoint simultaneously\n return updateCheckpoint(db, id, checkpoint, session, returnValue);\n }\n throw err;\n });\n });\n}\n\nclass CheckpointerInternal {\n constructor(src, target, id, returnValue, opts = {\n writeSourceCheckpoint: true,\n writeTargetCheckpoint: true,\n }) {\n this.src = src;\n this.target = target;\n this.id = id;\n this.returnValue = returnValue;\n this.opts = opts;\n\n if (typeof opts.writeSourceCheckpoint === \"undefined\") {\n opts.writeSourceCheckpoint = true;\n }\n\n if (typeof opts.writeTargetCheckpoint === \"undefined\") {\n opts.writeTargetCheckpoint = true;\n }\n }\n\n writeCheckpoint(checkpoint, session) {\n var self = this;\n return this.updateTarget(checkpoint, session).then(function () {\n return self.updateSource(checkpoint, session);\n });\n }\n\n updateTarget(checkpoint, session) {\n if (this.opts.writeTargetCheckpoint) {\n return updateCheckpoint(this.target, this.id, checkpoint,\n session, this.returnValue);\n } else {\n return Promise.resolve(true);\n }\n }\n\n updateSource(checkpoint, session) {\n if (this.opts.writeSourceCheckpoint) {\n var self = this;\n return updateCheckpoint(this.src, this.id, checkpoint,\n session, this.returnValue)\n .catch(function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return true;\n }\n throw err;\n });\n } else {\n return Promise.resolve(true);\n }\n }\n\n getCheckpoint() {\n var self = this;\n\n if (!self.opts.writeSourceCheckpoint && !self.opts.writeTargetCheckpoint) {\n return Promise.resolve(LOWEST_SEQ);\n }\n\n if (self.opts && self.opts.writeSourceCheckpoint && !self.opts.writeTargetCheckpoint) {\n return self.src.get(self.id).then(function (sourceDoc) {\n return sourceDoc.last_seq || LOWEST_SEQ;\n }).catch(function (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n }\n\n return self.target.get(self.id).then(function (targetDoc) {\n if (self.opts && self.opts.writeTargetCheckpoint && !self.opts.writeSourceCheckpoint) {\n return targetDoc.last_seq || LOWEST_SEQ;\n }\n\n return self.src.get(self.id).then(function (sourceDoc) {\n // Since we can't migrate an old version doc to a new one\n // (no session id), we just go with the lowest seq in this case\n /* istanbul ignore if */\n if (targetDoc.version !== sourceDoc.version) {\n return LOWEST_SEQ;\n }\n\n var version;\n if (targetDoc.version) {\n version = targetDoc.version.toString();\n } else {\n version = \"undefined\";\n }\n\n if (version in comparisons) {\n return comparisons[version](targetDoc, sourceDoc);\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n }, function (err) {\n if (err.status === 404 && targetDoc.last_seq) {\n return self.src.put({\n _id: self.id,\n last_seq: LOWEST_SEQ\n }).then(function () {\n return LOWEST_SEQ;\n }, function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return targetDoc.last_seq;\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n });\n }\n throw err;\n });\n }).catch(function (err) {\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n }\n}\n\nvar comparisons = {\n \"undefined\": function (targetDoc, sourceDoc) {\n // This is the previous comparison function\n if (collate(targetDoc.last_seq, sourceDoc.last_seq) === 0) {\n return sourceDoc.last_seq;\n }\n /* istanbul ignore next */\n return 0;\n },\n \"1\": function (targetDoc, sourceDoc) {\n // This is the comparison function ported from CouchDB\n return compareReplicationLogs(sourceDoc, targetDoc).last_seq;\n }\n};\n\n// This checkpoint comparison is ported from CouchDBs source\n// they come from here:\n// https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator.erl#L863-L906\n\nfunction compareReplicationLogs(srcDoc, tgtDoc) {\n if (srcDoc.session_id === tgtDoc.session_id) {\n return {\n last_seq: srcDoc.last_seq,\n history: srcDoc.history\n };\n }\n\n return compareReplicationHistory(srcDoc.history, tgtDoc.history);\n}\n\nfunction compareReplicationHistory(sourceHistory, targetHistory) {\n // the erlang loop via function arguments is not so easy to repeat in JS\n // therefore, doing this as recursion\n var S = sourceHistory[0];\n var sourceRest = sourceHistory.slice(1);\n var T = targetHistory[0];\n var targetRest = targetHistory.slice(1);\n\n if (!S || targetHistory.length === 0) {\n return {\n last_seq: LOWEST_SEQ,\n history: []\n };\n }\n\n var sourceId = S.session_id;\n /* istanbul ignore if */\n if (hasSessionId(sourceId, targetHistory)) {\n return {\n last_seq: S.last_seq,\n history: sourceHistory\n };\n }\n\n var targetId = T.session_id;\n if (hasSessionId(targetId, sourceRest)) {\n return {\n last_seq: T.last_seq,\n history: targetRest\n };\n }\n\n return compareReplicationHistory(sourceRest, targetRest);\n}\n\nfunction hasSessionId(sessionId, history) {\n var props = history[0];\n var rest = history.slice(1);\n\n if (!sessionId || history.length === 0) {\n return false;\n }\n\n if (sessionId === props.session_id) {\n return true;\n }\n\n return hasSessionId(sessionId, rest);\n}\n\nfunction isForbiddenError(err) {\n return typeof err.status === 'number' && Math.floor(err.status / 100) === 4;\n}\n\nfunction Checkpointer(src, target, id, returnValue, opts) {\n if (!(this instanceof CheckpointerInternal)) {\n return new CheckpointerInternal(src, target, id, returnValue, opts);\n }\n return Checkpointer;\n}\n\nvar STARTING_BACK_OFF = 0;\n\nfunction backOff(opts, returnValue, error, callback) {\n if (opts.retry === false) {\n returnValue.emit('error', error);\n returnValue.removeAllListeners();\n return;\n }\n /* istanbul ignore if */\n if (typeof opts.back_off_function !== 'function') {\n opts.back_off_function = defaultBackOff;\n }\n returnValue.emit('requestError', error);\n if (returnValue.state === 'active' || returnValue.state === 'pending') {\n returnValue.emit('paused', error);\n returnValue.state = 'stopped';\n var backOffSet = function backoffTimeSet() {\n opts.current_back_off = STARTING_BACK_OFF;\n };\n var removeBackOffSetter = function removeBackOffTimeSet() {\n returnValue.removeListener('active', backOffSet);\n };\n returnValue.once('paused', removeBackOffSetter);\n returnValue.once('active', backOffSet);\n }\n\n opts.current_back_off = opts.current_back_off || STARTING_BACK_OFF;\n opts.current_back_off = opts.back_off_function(opts.current_back_off);\n setTimeout(callback, opts.current_back_off);\n}\n\nfunction sortObjectPropertiesByKey(queryParams) {\n return Object.keys(queryParams).sort(collate).reduce(function (result, key) {\n result[key] = queryParams[key];\n return result;\n }, {});\n}\n\n// Generate a unique id particular to this replication.\n// Not guaranteed to align perfectly with CouchDB's rep ids.\nfunction generateReplicationId(src, target, opts) {\n var docIds = opts.doc_ids ? opts.doc_ids.sort(collate) : '';\n var filterFun = opts.filter ? opts.filter.toString() : '';\n var queryParams = '';\n var filterViewName = '';\n var selector = '';\n\n // possibility for checkpoints to be lost here as behaviour of\n // JSON.stringify is not stable (see #6226)\n /* istanbul ignore if */\n if (opts.selector) {\n selector = JSON.stringify(opts.selector);\n }\n\n if (opts.filter && opts.query_params) {\n queryParams = JSON.stringify(sortObjectPropertiesByKey(opts.query_params));\n }\n\n if (opts.filter && opts.filter === '_view') {\n filterViewName = opts.view.toString();\n }\n\n return Promise.all([src.id(), target.id()]).then(function (res) {\n var queryData = res[0] + res[1] + filterFun + filterViewName +\n queryParams + docIds + selector;\n return new Promise(function (resolve) {\n binaryMd5(queryData, resolve);\n });\n }).then(function (md5sum) {\n // can't use straight-up md5 alphabet, because\n // the char '/' is interpreted as being for attachments,\n // and + is also not url-safe\n md5sum = md5sum.replace(/\\//g, '.').replace(/\\+/g, '_');\n return '_local/' + md5sum;\n });\n}\n\nfunction replicate(src, target, opts, returnValue, result) {\n var batches = []; // list of batches to be processed\n var currentBatch; // the batch currently being processed\n var pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n }; // next batch, not yet ready to be processed\n var writingCheckpoint = false; // true while checkpoint is being written\n var changesCompleted = false; // true when all changes received\n var replicationCompleted = false; // true when replication has completed\n // initial_last_seq is the state of the source db before\n // replication started, and it is _not_ updated during\n // replication or used anywhere else, as opposed to last_seq\n var initial_last_seq = 0;\n var last_seq = 0;\n var continuous = opts.continuous || opts.live || false;\n var batch_size = opts.batch_size || 100;\n var batches_limit = opts.batches_limit || 10;\n var style = opts.style || 'all_docs';\n var changesPending = false; // true while src.changes is running\n var doc_ids = opts.doc_ids;\n var selector = opts.selector;\n var repId;\n var checkpointer;\n var changedDocs = [];\n // Like couchdb, every replication gets a unique session id\n var session = uuid();\n var taskId;\n\n result = result || {\n ok: true,\n start_time: new Date().toISOString(),\n docs_read: 0,\n docs_written: 0,\n doc_write_failures: 0,\n errors: []\n };\n\n var changesOpts = {};\n returnValue.ready(src, target);\n\n function initCheckpointer() {\n if (checkpointer) {\n return Promise.resolve();\n }\n return generateReplicationId(src, target, opts).then(function (res) {\n repId = res;\n\n var checkpointOpts = {};\n if (opts.checkpoint === false) {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'source') {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'target') {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: true };\n } else {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: true };\n }\n\n checkpointer = new Checkpointer(src, target, repId, returnValue, checkpointOpts);\n });\n }\n\n function writeDocs() {\n changedDocs = [];\n\n if (currentBatch.docs.length === 0) {\n return;\n }\n var docs = currentBatch.docs;\n var bulkOpts = {timeout: opts.timeout};\n return target.bulkDocs({docs, new_edits: false}, bulkOpts).then(function (res) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n\n // `res` doesn't include full documents (which live in `docs`), so we create a map of\n // (id -> error), and check for errors while iterating over `docs`\n var errorsById = Object.create(null);\n res.forEach(function (res) {\n if (res.error) {\n errorsById[res.id] = res;\n }\n });\n\n var errorsNo = Object.keys(errorsById).length;\n result.doc_write_failures += errorsNo;\n result.docs_written += docs.length - errorsNo;\n\n docs.forEach(function (doc) {\n var error = errorsById[doc._id];\n if (error) {\n result.errors.push(error);\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (error.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('denied', clone(error));\n } else {\n throw error;\n }\n } else {\n changedDocs.push(doc);\n }\n });\n\n }, function (err) {\n result.doc_write_failures += docs.length;\n throw err;\n });\n }\n\n function finishBatch() {\n if (currentBatch.error) {\n throw new Error('There was a problem getting docs.');\n }\n result.last_seq = last_seq = currentBatch.seq;\n var outResult = clone(result);\n if (changedDocs.length) {\n outResult.docs = changedDocs;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof currentBatch.pending === 'number') {\n outResult.pending = currentBatch.pending;\n delete currentBatch.pending;\n }\n returnValue.emit('change', outResult);\n }\n writingCheckpoint = true;\n\n src.info().then(function (info) {\n var task = src.activeTasks.get(taskId);\n if (!currentBatch || !task) {\n return;\n }\n\n var completed = task.completed_items || 0;\n var total_items = parseInt(info.update_seq, 10) - parseInt(initial_last_seq, 10);\n src.activeTasks.update(taskId, {\n completed_items: completed + currentBatch.changes.length,\n total_items\n });\n });\n\n return checkpointer.writeCheckpoint(currentBatch.seq,\n session).then(function () {\n returnValue.emit('checkpoint', { 'checkpoint': currentBatch.seq });\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n currentBatch = undefined;\n getChanges();\n }).catch(function (err) {\n onCheckpointError(err);\n throw err;\n });\n }\n\n function getDiffs() {\n var diff = {};\n currentBatch.changes.forEach(function (change) {\n returnValue.emit('checkpoint', { 'revs_diff': change });\n // Couchbase Sync Gateway emits these, but we can ignore them\n /* istanbul ignore if */\n if (change.id === \"_user/\") {\n return;\n }\n diff[change.id] = change.changes.map(function (x) {\n return x.rev;\n });\n });\n return target.revsDiff(diff).then(function (diffs) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n // currentBatch.diffs elements are deleted as the documents are written\n currentBatch.diffs = diffs;\n });\n }\n\n function getBatchDocs() {\n return getDocs(src, target, currentBatch.diffs, returnValue).then(function (got) {\n currentBatch.error = !got.ok;\n got.docs.forEach(function (doc) {\n delete currentBatch.diffs[doc._id];\n result.docs_read++;\n currentBatch.docs.push(doc);\n });\n });\n }\n\n function startNextBatch() {\n if (returnValue.cancelled || currentBatch) {\n return;\n }\n if (batches.length === 0) {\n processPendingBatch(true);\n return;\n }\n currentBatch = batches.shift();\n returnValue.emit('checkpoint', { 'start_next_batch': currentBatch.seq });\n getDiffs()\n .then(getBatchDocs)\n .then(writeDocs)\n .then(finishBatch)\n .then(startNextBatch)\n .catch(function (err) {\n abortReplication('batch processing terminated with error', err);\n });\n }\n\n\n function processPendingBatch(immediate) {\n if (pendingBatch.changes.length === 0) {\n if (batches.length === 0 && !currentBatch) {\n if ((continuous && changesOpts.live) || changesCompleted) {\n returnValue.state = 'pending';\n returnValue.emit('paused');\n }\n if (changesCompleted) {\n completeReplication();\n }\n }\n return;\n }\n if (\n immediate ||\n changesCompleted ||\n pendingBatch.changes.length >= batch_size\n ) {\n batches.push(pendingBatch);\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n if (returnValue.state === 'pending' || returnValue.state === 'stopped') {\n returnValue.state = 'active';\n returnValue.emit('active');\n }\n startNextBatch();\n }\n }\n\n\n function abortReplication(reason, err) {\n if (replicationCompleted) {\n return;\n }\n if (!err.message) {\n err.message = reason;\n }\n result.ok = false;\n result.status = 'aborting';\n batches = [];\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n completeReplication(err);\n }\n\n\n function completeReplication(fatalError) {\n if (replicationCompleted) {\n return;\n }\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n result.status = 'cancelled';\n if (writingCheckpoint) {\n return;\n }\n }\n result.status = result.status || 'complete';\n result.end_time = new Date().toISOString();\n result.last_seq = last_seq;\n replicationCompleted = true;\n\n src.activeTasks.remove(taskId, fatalError);\n\n if (fatalError) {\n // need to extend the error because Firefox considers \".result\" read-only\n fatalError = createError(fatalError);\n fatalError.result = result;\n\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (fatalError.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('error', fatalError);\n returnValue.removeAllListeners();\n } else {\n backOff(opts, returnValue, fatalError, function () {\n replicate(src, target, opts, returnValue);\n });\n }\n } else {\n returnValue.emit('complete', result);\n returnValue.removeAllListeners();\n }\n }\n\n function onChange(change, pending, lastSeq) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof pending === 'number') {\n pendingBatch.pending = pending;\n }\n\n var filter = filterChange(opts)(change);\n if (!filter) {\n // update processed items count by 1\n var task = src.activeTasks.get(taskId);\n if (task) {\n // we can assume that task exists here? shouldn't be deleted by here.\n var completed = task.completed_items || 0;\n src.activeTasks.update(taskId, {completed_items: ++completed});\n }\n return;\n }\n pendingBatch.seq = change.seq || lastSeq;\n pendingBatch.changes.push(change);\n returnValue.emit('checkpoint', { 'pending_batch': pendingBatch.seq });\n nextTick(function () {\n processPendingBatch(batches.length === 0 && changesOpts.live);\n });\n }\n\n\n function onChangesComplete(changes) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n\n // if no results were returned then we're done,\n // else fetch more\n if (changes.results.length > 0) {\n changesOpts.since = changes.results[changes.results.length - 1].seq;\n getChanges();\n processPendingBatch(true);\n } else {\n\n var complete = function () {\n if (continuous) {\n changesOpts.live = true;\n getChanges();\n } else {\n changesCompleted = true;\n }\n processPendingBatch(true);\n };\n\n // update the checkpoint so we start from the right seq next time\n if (!currentBatch && changes.results.length === 0) {\n writingCheckpoint = true;\n checkpointer.writeCheckpoint(changes.last_seq,\n session).then(function () {\n writingCheckpoint = false;\n result.last_seq = last_seq = changes.last_seq;\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n } else {\n complete();\n }\n })\n .catch(onCheckpointError);\n } else {\n complete();\n }\n }\n }\n\n\n function onChangesError(err) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n abortReplication('changes rejected', err);\n }\n\n\n function getChanges() {\n if (!(\n !changesPending &&\n !changesCompleted &&\n batches.length < batches_limit\n )) {\n return;\n }\n changesPending = true;\n function abortChanges() {\n changes.cancel();\n }\n function removeListener() {\n returnValue.removeListener('cancel', abortChanges);\n }\n\n if (returnValue._changes) { // remove old changes() and listeners\n returnValue.removeListener('cancel', returnValue._abortChanges);\n returnValue._changes.cancel();\n }\n returnValue.once('cancel', abortChanges);\n\n var changes = src.changes(changesOpts)\n .on('change', onChange);\n changes.then(removeListener, removeListener);\n changes.then(onChangesComplete)\n .catch(onChangesError);\n\n if (opts.retry) {\n // save for later so we can cancel if necessary\n returnValue._changes = changes;\n returnValue._abortChanges = abortChanges;\n }\n }\n\n function createTask(checkpoint) {\n return src.info().then(function (info) {\n var total_items = typeof opts.since === 'undefined' ?\n parseInt(info.update_seq, 10) - parseInt(checkpoint, 10) :\n parseInt(info.update_seq, 10);\n\n taskId = src.activeTasks.add({\n name: `${continuous ? 'continuous ' : ''}replication from ${info.db_name}` ,\n total_items,\n });\n\n return checkpoint;\n });\n }\n\n function startChanges() {\n initCheckpointer().then(function () {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n return checkpointer.getCheckpoint().then(createTask).then(function (checkpoint) {\n last_seq = checkpoint;\n initial_last_seq = checkpoint;\n changesOpts = {\n since: last_seq,\n limit: batch_size,\n batch_size,\n style,\n doc_ids,\n selector,\n return_docs: true // required so we know when we're done\n };\n if (opts.filter) {\n if (typeof opts.filter !== 'string') {\n // required for the client-side filter in onChange\n changesOpts.include_docs = true;\n } else { // ddoc filter\n changesOpts.filter = opts.filter;\n }\n }\n if ('heartbeat' in opts) {\n changesOpts.heartbeat = opts.heartbeat;\n }\n if ('timeout' in opts) {\n changesOpts.timeout = opts.timeout;\n }\n if (opts.query_params) {\n changesOpts.query_params = opts.query_params;\n }\n if (opts.view) {\n changesOpts.view = opts.view;\n }\n getChanges();\n });\n }).catch(function (err) {\n abortReplication('getCheckpoint rejected with ', err);\n });\n }\n\n /* istanbul ignore next */\n function onCheckpointError(err) {\n writingCheckpoint = false;\n abortReplication('writeCheckpoint completed with error', err);\n }\n\n /* istanbul ignore if */\n if (returnValue.cancelled) { // cancelled immediately\n completeReplication();\n return;\n }\n\n if (!returnValue._addedListeners) {\n returnValue.once('cancel', completeReplication);\n\n if (typeof opts.complete === 'function') {\n returnValue.once('error', opts.complete);\n returnValue.once('complete', function (result) {\n opts.complete(null, result);\n });\n }\n returnValue._addedListeners = true;\n }\n\n if (typeof opts.since === 'undefined') {\n startChanges();\n } else {\n initCheckpointer().then(function () {\n writingCheckpoint = true;\n return checkpointer.writeCheckpoint(opts.since, session);\n }).then(function () {\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n last_seq = opts.since;\n startChanges();\n }).catch(onCheckpointError);\n }\n}\n\n// We create a basic promise so the caller can cancel the replication possibly\n// before we have actually started listening to changes etc\nclass Replication extends EE {\n constructor() {\n super();\n this.cancelled = false;\n this.state = 'pending';\n const promise = new Promise((fulfill, reject) => {\n this.once('complete', fulfill);\n this.once('error', reject);\n });\n this.then = function (resolve, reject) {\n return promise.then(resolve, reject);\n };\n this.catch = function (reject) {\n return promise.catch(reject);\n };\n // As we allow error handling via \"error\" event as well,\n // put a stub in here so that rejecting never throws UnhandledError.\n this.catch(function () {});\n }\n\n cancel() {\n this.cancelled = true;\n this.state = 'cancelled';\n this.emit('cancel');\n }\n\n ready(src, target) {\n if (this._readyCalled) {\n return;\n }\n this._readyCalled = true;\n\n const onDestroy = () => {\n this.cancel();\n };\n src.once('destroyed', onDestroy);\n target.once('destroyed', onDestroy);\n function cleanup() {\n src.removeListener('destroyed', onDestroy);\n target.removeListener('destroyed', onDestroy);\n }\n this.once('complete', cleanup);\n this.once('error', cleanup);\n }\n}\n\nfunction toPouch(db, opts) {\n var PouchConstructor = opts.PouchConstructor;\n if (typeof db === 'string') {\n return new PouchConstructor(db, opts);\n } else {\n return db;\n }\n}\n\nfunction replicateWrapper(src, target, opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n\n if (opts.doc_ids && !Array.isArray(opts.doc_ids)) {\n throw createError(BAD_REQUEST,\n \"`doc_ids` filter parameter is not a list.\");\n }\n\n opts.complete = callback;\n opts = clone(opts);\n opts.continuous = opts.continuous || opts.live;\n opts.retry = ('retry' in opts) ? opts.retry : false;\n opts.PouchConstructor = opts.PouchConstructor || this;\n var replicateRet = new Replication(opts);\n var srcPouch = toPouch(src, opts);\n var targetPouch = toPouch(target, opts);\n replicate(srcPouch, targetPouch, opts, replicateRet);\n return replicateRet;\n}\n\nfunction sync(src, target, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n opts = clone(opts);\n opts.PouchConstructor = opts.PouchConstructor || this;\n src = toPouch(src, opts);\n target = toPouch(target, opts);\n return new Sync(src, target, opts, callback);\n}\n\nclass Sync extends EE {\n constructor(src, target, opts, callback) {\n super();\n this.canceled = false;\n\n const optsPush = opts.push ? Object.assign({}, opts, opts.push) : opts;\n const optsPull = opts.pull ? Object.assign({}, opts, opts.pull) : opts;\n\n this.push = replicateWrapper(src, target, optsPush);\n this.pull = replicateWrapper(target, src, optsPull);\n\n this.pushPaused = true;\n this.pullPaused = true;\n\n const pullChange = (change) => {\n this.emit('change', {\n direction: 'pull',\n change\n });\n };\n const pushChange = (change) => {\n this.emit('change', {\n direction: 'push',\n change\n });\n };\n const pushDenied = (doc) => {\n this.emit('denied', {\n direction: 'push',\n doc\n });\n };\n const pullDenied = (doc) => {\n this.emit('denied', {\n direction: 'pull',\n doc\n });\n };\n const pushPaused = () => {\n this.pushPaused = true;\n /* istanbul ignore if */\n if (this.pullPaused) {\n this.emit('paused');\n }\n };\n const pullPaused = () => {\n this.pullPaused = true;\n /* istanbul ignore if */\n if (this.pushPaused) {\n this.emit('paused');\n }\n };\n const pushActive = () => {\n this.pushPaused = false;\n /* istanbul ignore if */\n if (this.pullPaused) {\n this.emit('active', {\n direction: 'push'\n });\n }\n };\n const pullActive = () => {\n this.pullPaused = false;\n /* istanbul ignore if */\n if (this.pushPaused) {\n this.emit('active', {\n direction: 'pull'\n });\n }\n };\n\n let removed = {};\n\n const removeAll = (type) => { // type is 'push' or 'pull'\n return (event, func) => {\n const isChange = event === 'change' &&\n (func === pullChange || func === pushChange);\n const isDenied = event === 'denied' &&\n (func === pullDenied || func === pushDenied);\n const isPaused = event === 'paused' &&\n (func === pullPaused || func === pushPaused);\n const isActive = event === 'active' &&\n (func === pullActive || func === pushActive);\n\n if (isChange || isDenied || isPaused || isActive) {\n if (!(event in removed)) {\n removed[event] = {};\n }\n removed[event][type] = true;\n if (Object.keys(removed[event]).length === 2) {\n // both push and pull have asked to be removed\n this.removeAllListeners(event);\n }\n }\n };\n };\n\n if (opts.live) {\n this.push.on('complete', this.pull.cancel.bind(this.pull));\n this.pull.on('complete', this.push.cancel.bind(this.push));\n }\n\n function addOneListener(ee, event, listener) {\n if (ee.listeners(event).indexOf(listener) == -1) {\n ee.on(event, listener);\n }\n }\n\n this.on('newListener', function (event) {\n if (event === 'change') {\n addOneListener(this.pull, 'change', pullChange);\n addOneListener(this.push, 'change', pushChange);\n } else if (event === 'denied') {\n addOneListener(this.pull, 'denied', pullDenied);\n addOneListener(this.push, 'denied', pushDenied);\n } else if (event === 'active') {\n addOneListener(this.pull, 'active', pullActive);\n addOneListener(this.push, 'active', pushActive);\n } else if (event === 'paused') {\n addOneListener(this.pull, 'paused', pullPaused);\n addOneListener(this.push, 'paused', pushPaused);\n }\n });\n\n this.on('removeListener', function (event) {\n if (event === 'change') {\n this.pull.removeListener('change', pullChange);\n this.push.removeListener('change', pushChange);\n } else if (event === 'denied') {\n this.pull.removeListener('denied', pullDenied);\n this.push.removeListener('denied', pushDenied);\n } else if (event === 'active') {\n this.pull.removeListener('active', pullActive);\n this.push.removeListener('active', pushActive);\n } else if (event === 'paused') {\n this.pull.removeListener('paused', pullPaused);\n this.push.removeListener('paused', pushPaused);\n }\n });\n\n this.pull.on('removeListener', removeAll('pull'));\n this.push.on('removeListener', removeAll('push'));\n\n const promise = Promise.all([\n this.push,\n this.pull\n ]).then((resp) => {\n const out = {\n push: resp[0],\n pull: resp[1]\n };\n this.emit('complete', out);\n if (callback) {\n callback(null, out);\n }\n this.removeAllListeners();\n return out;\n }, (err) => {\n this.cancel();\n if (callback) {\n // if there's a callback, then the callback can receive\n // the error event\n callback(err);\n } else {\n // if there's no callback, then we're safe to emit an error\n // event, which would otherwise throw an unhandled error\n // due to 'error' being a special event in EventEmitters\n this.emit('error', err);\n }\n this.removeAllListeners();\n if (callback) {\n // no sense throwing if we're already emitting an 'error' event\n throw err;\n }\n });\n\n this.then = function (success, err) {\n return promise.then(success, err);\n };\n\n this.catch = function (err) {\n return promise.catch(err);\n };\n }\n\n cancel() {\n if (!this.canceled) {\n this.canceled = true;\n this.push.cancel();\n this.pull.cancel();\n }\n }\n}\n\nfunction replication(PouchDB) {\n PouchDB.replicate = replicateWrapper;\n PouchDB.sync = sync;\n\n Object.defineProperty(PouchDB.prototype, 'replicate', {\n get: function () {\n var self = this;\n if (typeof this.replicateMethods === 'undefined') {\n this.replicateMethods = {\n from: function (other, opts, callback) {\n return self.constructor.replicate(other, self, opts, callback);\n },\n to: function (other, opts, callback) {\n return self.constructor.replicate(self, other, opts, callback);\n }\n };\n }\n return this.replicateMethods;\n }\n });\n\n PouchDB.prototype.sync = function (dbName, opts, callback) {\n return this.constructor.sync(this, dbName, opts, callback);\n };\n}\n\nPouchDB.plugin(IDBPouch)\n .plugin(HttpPouch$1)\n .plugin(mapreduce)\n .plugin(replication);\n\n// Pull from src because pouchdb-node/pouchdb-browser themselves\n\nexport default PouchDB;\n", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", "// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;", "var exports$1 = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports$1;\n _dewExec = true;\n var R = typeof Reflect === \"object\" ? Reflect : null;\n var ReflectApply = R && typeof R.apply === \"function\" ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n };\n var ReflectOwnKeys;\n if (R && typeof R.ownKeys === \"function\") {\n ReflectOwnKeys = R.ownKeys;\n } else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n } else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n }\n function ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n }\n var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n };\n function EventEmitter() {\n EventEmitter.init.call(this);\n }\n exports$1 = EventEmitter;\n exports$1.once = once;\n\n // Backwards-compat with node 0.10.x\n EventEmitter.EventEmitter = EventEmitter;\n EventEmitter.prototype._events = undefined;\n EventEmitter.prototype._eventsCount = 0;\n EventEmitter.prototype._maxListeners = undefined;\n\n // By default EventEmitters will print a warning if more than 10 listeners are\n // added to it. This is a useful default which helps finding memory leaks.\n var defaultMaxListeners = 10;\n function checkListener(listener) {\n if (typeof listener !== \"function\") {\n throw new TypeError(\"The \\\"listener\\\" argument must be of type Function. Received type \" + typeof listener);\n }\n }\n Object.defineProperty(EventEmitter, \"defaultMaxListeners\", {\n enumerable: true,\n get: function () {\n return defaultMaxListeners;\n },\n set: function (arg) {\n if (typeof arg !== \"number\" || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError(\"The value of \\\"defaultMaxListeners\\\" is out of range. It must be a non-negative number. Received \" + arg + \".\");\n }\n defaultMaxListeners = arg;\n }\n });\n EventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || undefined;\n };\n\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== \"number\" || n < 0 || NumberIsNaN(n)) {\n throw new RangeError(\"The value of \\\"n\\\" is out of range. It must be a non-negative number. Received \" + n + \".\");\n }\n this._maxListeners = n;\n return this;\n };\n function _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n }\n EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n };\n EventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = type === \"error\";\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error(\"Unhandled error.\" + (er ? \" (\" + er.message + \")\" : \"\"));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n var handler = events[type];\n if (handler === undefined) return false;\n if (typeof handler === \"function\") {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);\n }\n return true;\n };\n function _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit(\"newListener\", type, listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === \"function\") {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error(\"Possible EventEmitter memory leak detected. \" + existing.length + \" \" + String(type) + \" listeners \" + \"added. Use emitter.setMaxListeners() to \" + \"increase limit\");\n w.name = \"MaxListenersExceededWarning\";\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n return target;\n }\n EventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n };\n EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n function onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n }\n function _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n }\n EventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n };\n EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n // Emits a 'removeListener' event if and only if the listener was removed.\n EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit(\"removeListener\", type, list.listener || listener);\n }\n } else if (typeof list !== \"function\") {\n position = -1;\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit(\"removeListener\", type, originalListener || listener);\n }\n return this;\n };\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === \"removeListener\") continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners(\"removeListener\");\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === \"function\") {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n return this;\n };\n function _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === \"function\") return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n }\n EventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n };\n EventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n };\n EventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === \"function\") {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n };\n EventEmitter.prototype.listenerCount = listenerCount;\n function listenerCount(type) {\n var events = this._events;\n if (events !== undefined) {\n var evlistener = events[type];\n if (typeof evlistener === \"function\") {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n return 0;\n }\n EventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n };\n function arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i) copy[i] = arr[i];\n return copy;\n }\n function spliceOne(list, index) {\n for (; index + 1 < list.length; index++) list[index] = list[index + 1];\n list.pop();\n }\n function unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n }\n function once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === \"function\") {\n emitter.removeListener(\"error\", errorListener);\n }\n resolve([].slice.call(arguments));\n }\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n if (name !== \"error\") {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n }\n function addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === \"function\") {\n eventTargetAgnosticAddListener(emitter, \"error\", handler, flags);\n }\n }\n function eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === \"function\") {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === \"function\") {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError(\"The \\\"emitter\\\" argument must be of type EventEmitter. Received type \" + typeof emitter);\n }\n }\n return exports$1;\n}\n\nconst exports = dew();\nexports['once'];\n\n// https://github.com/denoland/deno_std/blob/d005433c709054af87aca54f57a446b4f7966f11/node/events.ts#L501-L638\r\nexports.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\nexports.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} = exports;\n\nexport { EventEmitter, exports as default, defaultMaxListeners, init, listenerCount, on, once };\n", "import {\n GraffitiErrorInvalidSchema,\n GraffitiErrorInvalidUri,\n GraffitiErrorPatchError,\n GraffitiErrorPatchTestFailed,\n} from \"@graffiti-garden/api\";\nimport type {\n Graffiti,\n GraffitiObjectBase,\n GraffitiLocation,\n GraffitiPatch,\n JSONSchema4,\n GraffitiSession,\n} from \"@graffiti-garden/api\";\nimport type { Ajv } from \"ajv\";\nimport type { applyPatch } from \"fast-json-patch\";\n\nexport const locationToUri: Graffiti[\"locationToUri\"] = (location) => {\n return `${location.source}/${encodeURIComponent(location.actor)}/${encodeURIComponent(location.name)}`;\n};\n\nexport const uriToLocation: Graffiti[\"uriToLocation\"] = (uri) => {\n const parts = uri.split(\"/\");\n const nameEncoded = parts.pop();\n const webIdEncoded = parts.pop();\n if (!nameEncoded || !webIdEncoded || !parts.length) {\n throw new GraffitiErrorInvalidUri();\n }\n return {\n name: decodeURIComponent(nameEncoded),\n actor: decodeURIComponent(webIdEncoded),\n source: parts.join(\"/\"),\n };\n};\n\nexport function randomBase64(numBytes: number = 16) {\n const bytes = new Uint8Array(numBytes);\n crypto.getRandomValues(bytes);\n // Convert it to base64\n const base64 = btoa(String.fromCodePoint(...bytes));\n // Make sure it is url safe\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/\\=+$/, \"\");\n}\n\nexport function unpackLocationOrUri(locationOrUri: GraffitiLocation | string) {\n if (typeof locationOrUri === \"string\") {\n return {\n location: uriToLocation(locationOrUri),\n uri: locationOrUri,\n };\n } else {\n return {\n location: {\n name: locationOrUri.name,\n actor: locationOrUri.actor,\n source: locationOrUri.source,\n },\n uri: locationToUri(locationOrUri),\n };\n }\n}\n\nexport function isObjectNewer(\n left: GraffitiObjectBase,\n right: GraffitiObjectBase,\n) {\n return (\n left.lastModified > right.lastModified ||\n (left.lastModified === right.lastModified &&\n !left.tombstone &&\n right.tombstone)\n );\n}\n\nexport function applyGraffitiPatch<Prop extends keyof GraffitiPatch>(\n apply: typeof applyPatch,\n prop: Prop,\n patch: GraffitiPatch,\n object: GraffitiObjectBase,\n): void {\n const ops = patch[prop];\n if (!ops || !ops.length) return;\n try {\n object[prop] = apply(object[prop], ops, true, false).newDocument;\n } catch (e) {\n if (\n typeof e === \"object\" &&\n e &&\n \"name\" in e &&\n typeof e.name === \"string\" &&\n \"message\" in e &&\n typeof e.message === \"string\"\n ) {\n if (e.name === \"TEST_OPERATION_FAILED\") {\n throw new GraffitiErrorPatchTestFailed(e.message);\n } else {\n throw new GraffitiErrorPatchError(e.name + \": \" + e.message);\n }\n } else {\n throw e;\n }\n }\n}\n\nexport function attemptAjvCompile<Schema extends JSONSchema4>(\n ajv: Ajv,\n schema: Schema,\n) {\n try {\n return ajv.compile(schema);\n } catch (error) {\n throw new GraffitiErrorInvalidSchema(\n error instanceof Error ? error.message : undefined,\n );\n }\n}\n\nexport function maskGraffitiObject(\n object: GraffitiObjectBase,\n channels: string[],\n session?: GraffitiSession | null,\n): void {\n if (object.actor !== session?.actor) {\n object.allowed = object.allowed && session ? [session.actor] : undefined;\n object.channels = object.channels.filter((channel) =>\n channels.includes(channel),\n );\n }\n}\nexport function isActorAllowedGraffitiObject(\n object: GraffitiObjectBase,\n session?: GraffitiSession | null,\n) {\n return (\n object.allowed === undefined ||\n object.allowed === null ||\n (!!session?.actor &&\n (object.actor === session.actor ||\n object.allowed.includes(session.actor)))\n );\n}\n", "/// <reference types=\"./repeater.d.ts\" />\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\n\n/** An error subclass which is thrown when there are too many pending push or next operations on a single repeater. */\r\nvar RepeaterOverflowError = /** @class */ (function (_super) {\r\n __extends(RepeaterOverflowError, _super);\r\n function RepeaterOverflowError(message) {\r\n var _this = _super.call(this, message) || this;\r\n Object.defineProperty(_this, \"name\", {\r\n value: \"RepeaterOverflowError\",\r\n enumerable: false,\r\n });\r\n if (typeof Object.setPrototypeOf === \"function\") {\r\n Object.setPrototypeOf(_this, _this.constructor.prototype);\r\n }\r\n else {\r\n _this.__proto__ = _this.constructor.prototype;\r\n }\r\n if (typeof Error.captureStackTrace === \"function\") {\r\n Error.captureStackTrace(_this, _this.constructor);\r\n }\r\n return _this;\r\n }\r\n return RepeaterOverflowError;\r\n}(Error));\r\n/** A buffer which allows you to push a set amount of values to the repeater without pushes waiting or throwing errors. */\r\nvar FixedBuffer = /** @class */ (function () {\r\n function FixedBuffer(capacity) {\r\n if (capacity < 0) {\r\n throw new RangeError(\"Capacity may not be less than 0\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(FixedBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FixedBuffer.prototype, \"full\", {\r\n get: function () {\r\n return this._q.length >= this._c;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n FixedBuffer.prototype.add = function (value) {\r\n if (this.full) {\r\n throw new Error(\"Buffer full\");\r\n }\r\n else {\r\n this._q.push(value);\r\n }\r\n };\r\n FixedBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return FixedBuffer;\r\n}());\r\n// TODO: Use a circular buffer here.\r\n/** Sliding buffers allow you to push a set amount of values to the repeater without pushes waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the earliest values added. */\r\nvar SlidingBuffer = /** @class */ (function () {\r\n function SlidingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(SlidingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(SlidingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SlidingBuffer.prototype.add = function (value) {\r\n while (this._q.length >= this._c) {\r\n this._q.shift();\r\n }\r\n this._q.push(value);\r\n };\r\n SlidingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return SlidingBuffer;\r\n}());\r\n/** Dropping buffers allow you to push a set amount of values to the repeater without the push function waiting or throwing errors. If the number of values exceeds the capacity set in the constructor, the buffer will discard the latest values added. */\r\nvar DroppingBuffer = /** @class */ (function () {\r\n function DroppingBuffer(capacity) {\r\n if (capacity < 1) {\r\n throw new RangeError(\"Capacity may not be less than 1\");\r\n }\r\n this._c = capacity;\r\n this._q = [];\r\n }\r\n Object.defineProperty(DroppingBuffer.prototype, \"empty\", {\r\n get: function () {\r\n return this._q.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DroppingBuffer.prototype, \"full\", {\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DroppingBuffer.prototype.add = function (value) {\r\n if (this._q.length < this._c) {\r\n this._q.push(value);\r\n }\r\n };\r\n DroppingBuffer.prototype.remove = function () {\r\n if (this.empty) {\r\n throw new Error(\"Buffer empty\");\r\n }\r\n return this._q.shift();\r\n };\r\n return DroppingBuffer;\r\n}());\r\n/** Makes sure promise-likes don\u2019t cause unhandled rejections. */\r\nfunction swallow(value) {\r\n if (value != null && typeof value.then === \"function\") {\r\n value.then(NOOP, NOOP);\r\n }\r\n}\r\n/*** REPEATER STATES ***/\r\n/** The following is an enumeration of all possible repeater states. These states are ordered, and a repeater may only advance to higher states. */\r\n/** The initial state of the repeater. */\r\nvar Initial = 0;\r\n/** Repeaters advance to this state the first time the next method is called on the repeater. */\r\nvar Started = 1;\r\n/** Repeaters advance to this state when the stop function is called. */\r\nvar Stopped = 2;\r\n/** Repeaters advance to this state when there are no values left to be pulled from the repeater. */\r\nvar Done = 3;\r\n/** Repeaters advance to this state if an error is thrown into the repeater. */\r\nvar Rejected = 4;\r\n/** The maximum number of push or next operations which may exist on a single repeater. */\r\nvar MAX_QUEUE_LENGTH = 1024;\r\nvar NOOP = function () { };\r\n/** A helper function used to mimic the behavior of async generators where the final iteration is consumed. */\r\nfunction consumeExecution(r) {\r\n var err = r.err;\r\n var execution = Promise.resolve(r.execution).then(function (value) {\r\n if (err != null) {\r\n throw err;\r\n }\r\n return value;\r\n });\r\n r.err = undefined;\r\n r.execution = execution.then(function () { return undefined; }, function () { return undefined; });\r\n return r.pending === undefined ? execution : r.pending.then(function () { return execution; });\r\n}\r\n/** A helper function for building iterations from values. Promises are unwrapped, so that iterations never have their value property set to a promise. */\r\nfunction createIteration(r, value) {\r\n var done = r.state >= Done;\r\n return Promise.resolve(value).then(function (value) {\r\n if (!done && r.state >= Rejected) {\r\n return consumeExecution(r).then(function (value) { return ({\r\n value: value,\r\n done: true,\r\n }); });\r\n }\r\n return { value: value, done: done };\r\n });\r\n}\r\n/**\r\n * This function is bound and passed to the executor as the stop argument.\r\n *\r\n * Advances state to Stopped.\r\n */\r\nfunction stop(r, err) {\r\n var e_1, _a;\r\n if (r.state >= Stopped) {\r\n return;\r\n }\r\n r.state = Stopped;\r\n r.onnext();\r\n r.onstop();\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n if (r.pushes.length === 0 &&\r\n (typeof r.buffer === \"undefined\" || r.buffer.empty)) {\r\n finish(r);\r\n }\r\n else {\r\n try {\r\n for (var _b = __values(r.pushes), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var push_1 = _d.value;\r\n push_1.resolve();\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n}\r\n/**\r\n * The difference between stopping a repeater vs finishing a repeater is that stopping a repeater allows next to continue to drain values from the push queue and buffer, while finishing a repeater will clear all pending values and end iteration immediately. Once, a repeater is finished, all iterations will have the done property set to true.\r\n *\r\n * Advances state to Done.\r\n */\r\nfunction finish(r) {\r\n var e_2, _a;\r\n if (r.state >= Done) {\r\n return;\r\n }\r\n if (r.state < Stopped) {\r\n stop(r);\r\n }\r\n r.state = Done;\r\n r.buffer = undefined;\r\n try {\r\n for (var _b = __values(r.nexts), _d = _b.next(); !_d.done; _d = _b.next()) {\r\n var next = _d.value;\r\n var execution = r.pending === undefined\r\n ? consumeExecution(r)\r\n : r.pending.then(function () { return consumeExecution(r); });\r\n next.resolve(createIteration(r, execution));\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n r.pushes = [];\r\n r.nexts = [];\r\n}\r\n/**\r\n * Called when a promise passed to push rejects, or when a push call is unhandled.\r\n *\r\n * Advances state to Rejected.\r\n */\r\nfunction reject(r) {\r\n if (r.state >= Rejected) {\r\n return;\r\n }\r\n if (r.state < Done) {\r\n finish(r);\r\n }\r\n r.state = Rejected;\r\n}\r\n/** This function is bound and passed to the executor as the push argument. */\r\nfunction push(r, value) {\r\n swallow(value);\r\n if (r.pushes.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to push are allowed on a single repeater.\");\r\n }\r\n else if (r.state >= Stopped) {\r\n return Promise.resolve(undefined);\r\n }\r\n var valueP = r.pending === undefined\r\n ? Promise.resolve(value)\r\n : r.pending.then(function () { return value; });\r\n valueP = valueP.catch(function (err) {\r\n if (r.state < Stopped) {\r\n r.err = err;\r\n }\r\n reject(r);\r\n return undefined; // void :(\r\n });\r\n var nextP;\r\n if (r.nexts.length) {\r\n var next_1 = r.nexts.shift();\r\n next_1.resolve(createIteration(r, valueP));\r\n if (r.nexts.length) {\r\n nextP = Promise.resolve(r.nexts[0].value);\r\n }\r\n else if (typeof r.buffer !== \"undefined\" && !r.buffer.full) {\r\n nextP = Promise.resolve(undefined);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return (r.onnext = resolve); });\r\n }\r\n }\r\n else if (typeof r.buffer !== \"undefined\" && !r.buffer.full) {\r\n r.buffer.add(valueP);\r\n nextP = Promise.resolve(undefined);\r\n }\r\n else {\r\n nextP = new Promise(function (resolve) { return r.pushes.push({ resolve: resolve, value: valueP }); });\r\n }\r\n // If an error is thrown into the repeater via the next or throw methods, we give the repeater a chance to handle this by rejecting the promise returned from push. If the push call is not immediately handled we throw the next iteration of the repeater.\r\n // To check that the promise returned from push is floating, we modify the then and catch methods of the returned promise so that they flip the floating flag. The push function actually does not return a promise, because modern engines do not call the then and catch methods on native promises. By making next a plain old javascript object, we ensure that the then and catch methods will be called.\r\n var floating = true;\r\n var next = {};\r\n var unhandled = nextP.catch(function (err) {\r\n if (floating) {\r\n throw err;\r\n }\r\n return undefined; // void :(\r\n });\r\n next.then = function (onfulfilled, onrejected) {\r\n floating = false;\r\n return Promise.prototype.then.call(nextP, onfulfilled, onrejected);\r\n };\r\n next.catch = function (onrejected) {\r\n floating = false;\r\n return Promise.prototype.catch.call(nextP, onrejected);\r\n };\r\n next.finally = nextP.finally.bind(nextP);\r\n r.pending = valueP\r\n .then(function () { return unhandled; })\r\n .catch(function (err) {\r\n r.err = err;\r\n reject(r);\r\n });\r\n return next;\r\n}\r\n/**\r\n * Creates the stop callable promise which is passed to the executor\r\n */\r\nfunction createStop(r) {\r\n var stop1 = stop.bind(null, r);\r\n var stopP = new Promise(function (resolve) { return (r.onstop = resolve); });\r\n stop1.then = stopP.then.bind(stopP);\r\n stop1.catch = stopP.catch.bind(stopP);\r\n stop1.finally = stopP.finally.bind(stopP);\r\n return stop1;\r\n}\r\n/**\r\n * Calls the executor passed into the constructor. This function is called the first time the next method is called on the repeater.\r\n *\r\n * Advances state to Started.\r\n */\r\nfunction execute(r) {\r\n if (r.state >= Started) {\r\n return;\r\n }\r\n r.state = Started;\r\n var push1 = push.bind(null, r);\r\n var stop1 = createStop(r);\r\n r.execution = new Promise(function (resolve) { return resolve(r.executor(push1, stop1)); });\r\n // TODO: We should consider stopping all repeaters when the executor settles.\r\n r.execution.catch(function () { return stop(r); });\r\n}\r\nvar records = new WeakMap();\r\n// NOTE: While repeaters implement and are assignable to the AsyncGenerator interface, and you can use the types interchangeably, we don\u2019t use typescript\u2019s implements syntax here because this would make supporting earlier versions of typescript trickier. This is because TypeScript version 3.6 changed the iterator types by adding the TReturn and TNext type parameters.\r\nvar Repeater = /** @class */ (function () {\r\n function Repeater(executor, buffer) {\r\n records.set(this, {\r\n executor: executor,\r\n buffer: buffer,\r\n err: undefined,\r\n state: Initial,\r\n pushes: [],\r\n nexts: [],\r\n pending: undefined,\r\n execution: undefined,\r\n onnext: NOOP,\r\n onstop: NOOP,\r\n });\r\n }\r\n Repeater.prototype.next = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.nexts.length >= MAX_QUEUE_LENGTH) {\r\n throw new RepeaterOverflowError(\"No more than \" + MAX_QUEUE_LENGTH + \" pending calls to next are allowed on a single repeater.\");\r\n }\r\n if (r.state <= Initial) {\r\n execute(r);\r\n }\r\n r.onnext(value);\r\n if (typeof r.buffer !== \"undefined\" && !r.buffer.empty) {\r\n var result = createIteration(r, r.buffer.remove());\r\n if (r.pushes.length) {\r\n var push_2 = r.pushes.shift();\r\n r.buffer.add(push_2.value);\r\n r.onnext = push_2.resolve;\r\n }\r\n return result;\r\n }\r\n else if (r.pushes.length) {\r\n var push_3 = r.pushes.shift();\r\n r.onnext = push_3.resolve;\r\n return createIteration(r, push_3.value);\r\n }\r\n else if (r.state >= Stopped) {\r\n finish(r);\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return new Promise(function (resolve) { return r.nexts.push({ resolve: resolve, value: value }); });\r\n };\r\n Repeater.prototype.return = function (value) {\r\n swallow(value);\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n finish(r);\r\n // We override the execution because return should always return the value passed in.\r\n r.execution = Promise.resolve(r.execution).then(function () { return value; });\r\n return createIteration(r, consumeExecution(r));\r\n };\r\n Repeater.prototype.throw = function (err) {\r\n var r = records.get(this);\r\n if (r === undefined) {\r\n throw new Error(\"WeakMap error\");\r\n }\r\n if (r.state <= Initial ||\r\n r.state >= Stopped ||\r\n (typeof r.buffer !== \"undefined\" && !r.buffer.empty)) {\r\n finish(r);\r\n // If r.err is already set, that mean the repeater has already produced an error, so we throw that error rather than the error passed in, because doing so might be more informative for the caller.\r\n if (r.err == null) {\r\n r.err = err;\r\n }\r\n return createIteration(r, consumeExecution(r));\r\n }\r\n return this.next(Promise.reject(err));\r\n };\r\n Repeater.prototype[Symbol.asyncIterator] = function () {\r\n return this;\r\n };\r\n // TODO: Remove these static methods from the class.\r\n Repeater.race = race;\r\n Repeater.merge = merge;\r\n Repeater.zip = zip;\r\n Repeater.latest = latest;\r\n return Repeater;\r\n}());\r\n/*** COMBINATOR FUNCTIONS ***/\r\n// TODO: move these combinators to their own file.\r\nfunction getIterators(values, options) {\r\n var e_3, _a;\r\n var iters = [];\r\n var _loop_1 = function (value) {\r\n if (value != null && typeof value[Symbol.asyncIterator] === \"function\") {\r\n iters.push(value[Symbol.asyncIterator]());\r\n }\r\n else if (value != null && typeof value[Symbol.iterator] === \"function\") {\r\n iters.push(value[Symbol.iterator]());\r\n }\r\n else {\r\n iters.push((function valueToAsyncIterator() {\r\n return __asyncGenerator(this, arguments, function valueToAsyncIterator_1() {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!options.yieldValues) return [3 /*break*/, 3];\r\n return [4 /*yield*/, __await(value)];\r\n case 1: return [4 /*yield*/, _a.sent()];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n if (!options.returnValues) return [3 /*break*/, 5];\r\n return [4 /*yield*/, __await(value)];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n })());\r\n }\r\n };\r\n try {\r\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\r\n var value = values_1_1.value;\r\n _loop_1(value);\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n return iters;\r\n}\r\n// NOTE: whenever you see any variables called `advance` or `advances`, know that it is a hack to get around the fact that `Promise.race` leaks memory. These variables are intended to be set to the resolve function of a promise which is constructed and awaited as an alternative to Promise.race. For more information, see this comment in the Node.js issue tracker: https://github.com/nodejs/node/issues/17469#issuecomment-685216777.\r\nfunction race(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, finalIteration, iteration, i_1, _loop_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n iteration = void 0;\r\n i_1 = 0;\r\n _loop_2 = function () {\r\n var j, iters_1, iters_1_1, iter;\r\n var e_4, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n j = i_1;\r\n try {\r\n for (iters_1 = (e_4 = void 0, __values(iters)), iters_1_1 = iters_1.next(); !iters_1_1.done; iters_1_1 = iters_1.next()) {\r\n iter = iters_1_1.value;\r\n Promise.resolve(iter.next()).then(function (iteration) {\r\n if (iteration.done) {\r\n stop();\r\n if (finalIteration === undefined) {\r\n finalIteration = iteration;\r\n }\r\n }\r\n else if (i_1 === j) {\r\n // This iterator has won, advance i and resolve the promise.\r\n i_1++;\r\n advance(iteration);\r\n }\r\n }, function (err) { return stop(err); });\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (iters_1_1 && !iters_1_1.done && (_a = iters_1.return)) _a.call(iters_1);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 1:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n return [5 /*yield**/, _loop_2()];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 4: return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.race(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction merge(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { yieldValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advances, stopped, finalIteration;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_5, _a;\r\n stopped = true;\r\n try {\r\n for (var advances_1 = __values(advances), advances_1_1 = advances_1.next(); !advances_1_1.done; advances_1_1 = advances_1.next()) {\r\n var advance = advances_1_1.value;\r\n advance();\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (advances_1_1 && !advances_1_1.done && (_a = advances_1.return)) _a.call(advances_1);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, , 6, 9]);\r\n _b.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n advances[i] = resolve;\r\n })];\r\n case 2:\r\n iteration = _b.sent();\r\n if (!(iteration !== undefined)) return [3 /*break*/, 4];\r\n if (iteration.done) {\r\n finalIteration = iteration;\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, push(iteration.value)];\r\n case 3:\r\n _b.sent();\r\n _b.label = 4;\r\n case 4: return [3 /*break*/, 1];\r\n case 5: return [3 /*break*/, 9];\r\n case 6:\r\n _a = iter.return;\r\n if (!_a) return [3 /*break*/, 8];\r\n return [4 /*yield*/, iter.return()];\r\n case 7:\r\n _a = (_b.sent());\r\n _b.label = 8;\r\n case 8:\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, finalIteration && finalIteration.value];\r\n case 3:\r\n stop();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction zip(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, { returnValues: true });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, stopped, iterations, values;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n stopped = false;\r\n stop.then(function () {\r\n advance();\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 6, 8]);\r\n _a.label = 2;\r\n case 2:\r\n if (!!stopped) return [3 /*break*/, 5];\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 3:\r\n iterations = _a.sent();\r\n if (iterations === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values = iterations.map(function (iteration) { return iteration.value; });\r\n if (iterations.some(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values];\r\n }\r\n return [4 /*yield*/, push(values)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5: return [3 /*break*/, 8];\r\n case 6:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 7:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\r\nfunction latest(contenders) {\r\n var _this = this;\r\n var iters = getIterators(contenders, {\r\n yieldValues: true,\r\n returnValues: true,\r\n });\r\n return new Repeater(function (push, stop) { return __awaiter(_this, void 0, void 0, function () {\r\n var advance, advances, stopped, iterations_1, values_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!iters.length) {\r\n stop();\r\n return [2 /*return*/, []];\r\n }\r\n advances = [];\r\n stopped = false;\r\n stop.then(function () {\r\n var e_6, _a;\r\n advance();\r\n try {\r\n for (var advances_2 = __values(advances), advances_2_1 = advances_2.next(); !advances_2_1.done; advances_2_1 = advances_2.next()) {\r\n var advance1 = advances_2_1.value;\r\n advance1();\r\n }\r\n }\r\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\r\n finally {\r\n try {\r\n if (advances_2_1 && !advances_2_1.done && (_a = advances_2.return)) _a.call(advances_2);\r\n }\r\n finally { if (e_6) throw e_6.error; }\r\n }\r\n stopped = true;\r\n });\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 7]);\r\n Promise.all(iters.map(function (iter) { return iter.next(); })).then(function (iterations) { return advance(iterations); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advance = resolve); })];\r\n case 2:\r\n iterations_1 = _a.sent();\r\n if (iterations_1 === undefined) {\r\n return [2 /*return*/];\r\n }\r\n values_2 = iterations_1.map(function (iteration) { return iteration.value; });\r\n if (iterations_1.every(function (iteration) { return iteration.done; })) {\r\n return [2 /*return*/, values_2];\r\n }\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n // We continuously yield and mutate the same values array so we shallow copy it each time it is pushed.\r\n _a.sent();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter, i) { return __awaiter(_this, void 0, void 0, function () {\r\n var iteration;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (iterations_1[i].done) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!!stopped) return [3 /*break*/, 4];\r\n Promise.resolve(iter.next()).then(function (iteration) { return advances[i](iteration); }, function (err) { return stop(err); });\r\n return [4 /*yield*/, new Promise(function (resolve) { return (advances[i] = resolve); })];\r\n case 2:\r\n iteration = _a.sent();\r\n if (iteration === undefined) {\r\n return [2 /*return*/, iterations_1[i].value];\r\n }\r\n else if (iteration.done) {\r\n return [2 /*return*/, iteration.value];\r\n }\r\n values_2[i] = iteration.value;\r\n return [4 /*yield*/, push(values_2.slice())];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }))];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n stop();\r\n return [4 /*yield*/, Promise.all(iters.map(function (iter) { return iter.return && iter.return(); }))];\r\n case 6:\r\n _a.sent();\r\n return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n}\n\nexport { DroppingBuffer, FixedBuffer, MAX_QUEUE_LENGTH, Repeater, RepeaterOverflowError, SlidingBuffer };\n//# sourceMappingURL=repeater.js.map\n", "export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});", "import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n", "import Ajv from \"ajv-draft-04\";\nimport type {\n Graffiti,\n GraffitiSession,\n JSONSchema4,\n} from \"@graffiti-garden/api\";\nimport type { GraffitiObjectBase } from \"@graffiti-garden/api\";\nimport { Repeater } from \"@repeaterjs/repeater\";\nimport { applyPatch } from \"fast-json-patch\";\nimport {\n applyGraffitiPatch,\n attemptAjvCompile,\n isActorAllowedGraffitiObject,\n locationToUri,\n maskGraffitiObject,\n unpackLocationOrUri,\n} from \"./utilities.js\";\n\ntype SynchronizeEvent = CustomEvent<{\n oldObject: GraffitiObjectBase;\n newObject?: GraffitiObjectBase;\n}>;\n\ntype GraffitiDatabaseMethods = Pick<\n Graffiti,\n \"get\" | \"put\" | \"patch\" | \"delete\" | \"discover\" | \"recoverOrphans\"\n>;\n\n/**\n * Wraps a partial implementation of the [Graffiti API](https://api.graffiti.garden/classes/Graffiti.html)\n * to provide the [`synchronize`](https://api.graffiti.garden/classes/Graffiti.html#synchronize) method.\n * The partial implementation must include the primary database methods:\n * `get`, `put`, `patch`, `delete`, and `discover`.\n */\nexport class GraffitiSynchronize\n implements\n Pick<\n Graffiti,\n | \"put\"\n | \"get\"\n | \"patch\"\n | \"delete\"\n | \"discover\"\n | \"recoverOrphans\"\n | \"synchronizeDiscover\"\n | \"synchronizeGet\"\n | \"synchronizeRecoverOrphans\"\n >\n{\n protected readonly synchronizeEvents = new EventTarget();\n protected readonly ajv: Ajv;\n protected readonly graffiti: GraffitiDatabaseMethods;\n\n // Pass in the ajv instance\n // and database methods to wrap\n constructor(graffiti: GraffitiDatabaseMethods, ajv?: Ajv) {\n this.ajv = ajv ?? new Ajv({ strict: false });\n this.graffiti = graffiti;\n }\n\n protected synchronizeDispatch(\n oldObject: GraffitiObjectBase,\n newObject?: GraffitiObjectBase,\n ) {\n const event: SynchronizeEvent = new CustomEvent(\"change\", {\n detail: {\n oldObject,\n newObject,\n },\n });\n this.synchronizeEvents.dispatchEvent(event);\n }\n\n get: Graffiti[\"get\"] = async (...args) => {\n const object = await this.graffiti.get(...args);\n this.synchronizeDispatch(object);\n return object;\n };\n\n put: Graffiti[\"put\"] = async (...args) => {\n const oldObject = await this.graffiti.put(...args);\n const partialObject = args[0];\n const newObject: GraffitiObjectBase = {\n ...oldObject,\n value: partialObject.value,\n channels: partialObject.channels,\n allowed: partialObject.allowed,\n tombstone: false,\n };\n this.synchronizeDispatch(oldObject, newObject);\n return oldObject;\n };\n\n patch: Graffiti[\"patch\"] = async (...args) => {\n const oldObject = await this.graffiti.patch(...args);\n const newObject: GraffitiObjectBase = { ...oldObject };\n newObject.tombstone = false;\n for (const prop of [\"value\", \"channels\", \"allowed\"] as const) {\n applyGraffitiPatch(applyPatch, prop, args[0], newObject);\n }\n this.synchronizeDispatch(oldObject, newObject);\n return oldObject;\n };\n\n delete: Graffiti[\"delete\"] = async (...args) => {\n const oldObject = await this.graffiti.delete(...args);\n this.synchronizeDispatch(oldObject);\n return oldObject;\n };\n\n protected objectStream<Schema extends JSONSchema4>(\n iterator: ReturnType<typeof Graffiti.prototype.discover<Schema>>,\n ) {\n const dispatch = this.synchronizeDispatch.bind(this);\n const wrapper = async function* () {\n let result = await iterator.next();\n while (!result.done) {\n if (!result.value.error) {\n dispatch(result.value.value);\n }\n yield result.value;\n result = await iterator.next();\n }\n return result.value;\n };\n return wrapper();\n }\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const iterator = this.graffiti.discover(...args);\n return this.objectStream(iterator);\n };\n\n recoverOrphans: Graffiti[\"recoverOrphans\"] = (...args) => {\n const iterator = this.graffiti.recoverOrphans(...args);\n return this.objectStream(iterator);\n };\n\n protected synchronize<Schema extends JSONSchema4>(\n matchObject: (object: GraffitiObjectBase) => boolean,\n channels: string[],\n schema: Schema,\n session?: GraffitiSession | null,\n ) {\n const validate = attemptAjvCompile(this.ajv, schema);\n\n const repeater: ReturnType<\n typeof Graffiti.prototype.synchronizeDiscover<typeof schema>\n > = new Repeater(async (push, stop) => {\n const callback = (event: SynchronizeEvent) => {\n const { oldObject: oldObjectRaw, newObject: newObjectRaw } =\n event.detail;\n\n for (const objectRaw of [newObjectRaw, oldObjectRaw]) {\n if (\n objectRaw &&\n matchObject(objectRaw) &&\n isActorAllowedGraffitiObject(objectRaw, session)\n ) {\n const object = { ...objectRaw };\n maskGraffitiObject(object, channels, session);\n if (validate(object)) {\n push({ value: object });\n break;\n }\n }\n }\n };\n\n this.synchronizeEvents.addEventListener(\n \"change\",\n callback as EventListener,\n );\n await stop;\n this.synchronizeEvents.removeEventListener(\n \"change\",\n callback as EventListener,\n );\n });\n\n return repeater;\n }\n\n synchronizeDiscover: Graffiti[\"synchronizeDiscover\"] = (...args) => {\n const [channels, schema, session] = args;\n function matchObject(object: GraffitiObjectBase) {\n return object.channels.some((channel) => channels.includes(channel));\n }\n return this.synchronize(matchObject, channels, schema, session);\n };\n\n synchronizeGet: Graffiti[\"synchronizeGet\"] = (...args) => {\n const [locationOrUri, schema, session] = args;\n function matchObject(object: GraffitiObjectBase) {\n const objectUri = locationToUri(object);\n const { uri } = unpackLocationOrUri(locationOrUri);\n return objectUri === uri;\n }\n return this.synchronize(matchObject, [], schema, session);\n };\n\n synchronizeRecoverOrphans: Graffiti[\"synchronizeRecoverOrphans\"] = (\n ...args\n ) => {\n const [schema, session] = args;\n function matchObject(object: GraffitiObjectBase) {\n return object.actor === session.actor && object.channels.length === 0;\n }\n return this.synchronize(matchObject, [], schema, session);\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "qnBAAA,IAAAA,EAAAC,GAAA,QCAA,IAAAC,EAAA,GAAAC,GAAAD,EAAA,eAAAE,GAAA,kBAAAC,GAAA,YAAAC,GAAA,iBAAAC,GAAA,aAAAC,GAAA,qBAAAC,GAAA,sBAAAC,GAAA,uBAAAC,GAAA,UAAAC,GAAA,mBAAAC,GAAA,kBAAAC,GAAA,qBAAAC,GAAA,cAAAC,GAAA,+BAAAC,GAAA,8BAAAC,GAAA,kBAAAC,GAAA,UAAAC,GAAA,gBAAAC,GAAA,gCAAAC,GAAA,SAAAC,GAAA,SAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,aAAAC,GAAA,QAAAC,GAAA,cAAAC,GAAA,YAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,SAAAC,GAAA,gBAAAC,GAAA,QAAAC,GAAA,aAAAC,GAAA,aAAAC,GAAA,SAAAC,GAAA,aAAAC,GAAA,wCAAAC,GAAA,WAAAC,GAAA,SAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,mBAAAC,GAAA,aAAAC,GAAA,QAAAC,GAAA,OAAAC,GAAA,SAAAC,GAAA,cAAAC,GAAA,QAAAC,GAAA,aAAAC,GAAA,SAAAC,GAAA,oBAAAC,GAAA,wBAAAC,GAAA,eAAAC,GAAA,YAAAC,GAAA,uBAAAC,GAAA,mBAAAC,GAAA,kBAAAC,GAAA,yBAAAC,GAAA,wCAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,YAAAC,GAAA,aAAAC,KAAA,SAASC,GAAcC,EAAM,CAC3B,MAAM,IAAI,MAAM,mBAAqBA,EAAO,mDAAmD,CACjG,CAOA,SAASC,IAAkB,CACrB,CAACC,IAAY,CAACC,KAElBD,GAAW,GACPC,GAAa,OACfC,GAAQD,GAAa,OAAOC,EAAK,EAGjCC,GAAa,GAEXD,GAAM,QACRE,GAAW,EACf,CAEA,SAASA,IAAa,CACpB,GAAI,CAAAJ,GAEJ,KAAIK,EAAU,WAAWN,GAAiB,CAAC,EAC3CC,GAAW,GAGX,QADIM,EAAMJ,GAAM,OACVI,GAAK,CAGT,IAFAL,GAAeC,GACfA,GAAQ,CAAC,EACF,EAAEC,GAAaG,GAChBL,IACFA,GAAaE,EAAU,EAAE,IAAI,EAEjCA,GAAa,GACbG,EAAMJ,GAAM,MACd,CACAD,GAAe,KACfD,GAAW,GACX,aAAaK,CAAO,EACtB,CAEA,SAASjC,GAAUmC,EAAK,CACtB,IAAIC,EAAO,IAAI,MAAM,UAAU,OAAS,CAAC,EACzC,GAAI,UAAU,OAAS,EACrB,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCD,EAAKC,EAAI,CAAC,EAAI,UAAUA,CAAC,EAE7BP,GAAM,KAAK,IAAIQ,GAAKH,EAAKC,CAAI,CAAC,EAC1BN,GAAM,SAAW,GAAK,CAACF,IACzB,WAAWI,GAAY,CAAC,CAC5B,CAEA,SAASM,GAAKH,EAAKI,EAAO,CACxB,KAAK,IAAMJ,EACX,KAAK,MAAQI,CACf,CAsCA,SAASC,IAAO,CAAC,CAKjB,SAAS7E,GAAe+D,EAAM,CAAED,GAAc,gBAAgB,CAAG,CAIjE,SAASxC,GAAOyC,EAAM,CAAED,GAAc,QAAQ,CAAG,CACjD,SAAShE,IAAqB,CAAE,MAAO,CAAC,CAAG,CAC3C,SAASD,IAAoB,CAAE,MAAO,CAAC,CAAG,CAU1C,SAASgB,GAAOiE,EAAWC,EAAS,CAClC,GAAI,CAACD,EAAW,MAAM,IAAI,MAAMC,GAAW,iBAAiB,CAC9D,CAcA,SAAShD,IAAsC,CAAE,MAAO,EAAO,CA8B/D,SAAS4B,IAAS,CAChB,OAAOqB,GAAa,IAAI,EAAI,GAC9B,CAGA,SAAShD,GAAOiD,EAAmB,CACjC,IAAIC,EAAU,KAAK,OAAO,KAAK,IAAI,EAAIF,GAAa,IAAI,GAAK,IAAI,EAC7DG,EAAYH,GAAa,IAAI,EAAI,KACjCI,EAAU,KAAK,MAAMD,CAAS,EAAID,EAClCG,EAAc,KAAK,MAAOF,EAAY,EAAK,GAAG,EAClD,OAAIF,IACFG,EAAUA,EAAUH,EAAkB,CAAC,EACvCI,EAAcA,EAAcJ,EAAkB,CAAC,EAC3CI,EAAc,IAChBD,IACAC,GAAeC,KAGZ,CAACF,EAASC,CAAW,CAC9B,CAWA,SAAS9C,IAAM,CAAE,OAAOlB,EAAQ,CAQhC,SAASa,GAAW6B,EAAM,CAAE,MAAO,CAAC,CAAG,CA1MvC,IAIII,GACAF,GACAC,GACAE,GAyDAX,GACA/C,GACAiC,GACAjB,GAOAf,GACAgB,GACAiC,GACAC,GAEApC,GAIAX,GAEA4C,GAEAvC,GACAH,GAEAgC,GASAjC,GACAZ,GACAiC,GAEAb,GACA5B,GACAsB,GAIA8B,GACAhD,GACAmB,GACAiC,GACAhB,GACAF,GACAJ,GACAY,GACAhC,GAIAqB,GAWAlC,GACAyD,GACgE/C,GAChEd,GACAD,GACAa,GACAC,GACAmD,GACAF,GACAC,GACAhD,GACAmC,GACAE,GACAhB,GACAR,GACAR,GACAV,GACAkD,GAEA4B,GAKEO,GAYFD,GAuBArF,GACAR,GACAC,GACiCc,GACjCgC,GACAF,GACAY,GACAD,GACAzB,GACAqB,GACAC,GAEAzB,GA3MJmE,GAAAC,GAAA,KAAAC,IAAAC,IAAAH,IAIIrB,GAAQ,CAAC,EACTF,GAAW,GAEXG,GAAa,GAqDjBO,GAAK,UAAU,IAAM,UAAY,CAC/B,KAAK,IAAI,MAAM,KAAM,KAAK,KAAK,CACjC,EAEIlB,GAAQ,UACR/C,GAAO,MACPiC,GAAW,UACXjB,GAAM,CACR,KAAM,WACN,KAAM,OAAO,UAAc,IAAc,UAAU,SAAW,SAAW,OACzE,IAAK,IACL,KAAM,QACN,IAAK,MACP,EACIf,GAAO,CAAC,eAAe,EACvBgB,GAAW,CAAC,EACZiC,GAAU,UACVC,GAAW,CAAC,EAEZpC,GAAc,SAASsD,EAASa,EAAM,CACxC,QAAQ,MAAMA,EAAQA,EAAO,KAAQ,IAAMb,CAAO,CACpD,EAEIjE,GAAU,SAASiD,EAAM,CAAED,GAAc,SAAS,CAAG,EAErDJ,GAAQ,SAASmC,EAAM,CAAE,MAAO,EAAG,EAEnC1E,GAAM,UAAW,CAAE,MAAO,GAAK,EAC/BH,GAAQ,SAAS8E,EAAK,CAAC,EAEvB9C,GAAU,CACZ,KAAM,OACN,UAAW,GACX,WAAY,GACZ,OAAQ,EACV,EAIIjC,GAAU,GACVZ,GAAY0E,GACZzC,GAAiB,CAAC,EAElBb,GAAS,CAAC,EACV5B,GAAW,GACXsB,GAAS,CAAC,EAIV8B,GAAa8B,GACb9E,GAAQ8E,GACR3D,GAAW,UAAW,CAAE,MAAO,CAAC,CAAG,EACnCiC,GAAgBjC,GAChBiB,GAAcjB,GACde,GAAO4C,GACPhD,GAAOgD,GACPpC,GAAYoC,GACZpE,GAA8B,CAAC,EAI/BqB,GAAW,CACb,UAAW,GACX,MAAO,GACP,GAAI,GACJ,KAAM,GACN,SAAU,GACV,QAAS,GACT,SAAU,GACV,IAAK,GACL,gBAAiB,EACnB,EACIlC,GAAmBiF,GACnBxB,GAAsCwB,GAC0BvE,GAAgBuE,GAChFrF,GAAgBqF,GAChBtF,GAAYsF,GACZzE,GAA6ByE,GAC7BxE,GAA4BwE,GAC5BrB,GAAS,OACTF,GAAS,OACTC,GAAQ,OACRhD,GAAQsE,GACRnC,GAAM,EACNE,GAAO,EACPhB,GAAW,gBACXR,GAAY,KACZR,GAAQ,OACRV,GAAmB,CAAC,EACpBkD,GAAuByB,GAEvBG,GAAe,CACjB,IAAK,OAAO,YAAgB,IAAc,YAAY,IAAI,KAAK,WAAW,EAAI,OAC9E,OAAQ,OAAO,YAAgB,IAAc,YAAY,OAAS,MACpE,EACIA,GAAa,MAAQ,SACnBO,GAAY,KAAK,IAAI,EAErBP,GAAa,QAAUA,GAAa,OAAO,kBAC7CO,GAAYP,GAAa,OAAO,iBAElCA,GAAa,IAAM,IAAM,KAAK,IAAI,EAAIO,IAOpCD,GAAa,IAehBtD,GAAO,OAAS,SAAS+D,EAAM,CAC9B,IAAIC,EAAOhE,GAAO+D,CAAI,EACtB,OAAI,OAAO,OAAW,IACbC,EAAK,CAAC,EAAIV,GAAaU,EAAK,CAAC,EAE/B,OAAOA,EAAK,CAAC,EAAIV,EAAU,EAAI,OAAOU,EAAK,CAAC,CAAC,CACtD,EAEI/F,GAAgB,GAChBR,GAAU,CAAC,EACXC,GAAe,EACkBc,GAAc+B,GAC/CC,GAAOD,GACPD,GAAMC,GACNW,GAAiBX,GACjBU,GAAqBV,GACrBf,GAAOqD,GACPhC,GAAkBN,GAClBO,GAAsBP,GAEtBlB,GAAU,CACZ,QAAAuC,GACA,SAAAC,GACA,KAAAnD,GACA,SAAAiC,GACA,QAAA5B,GACA,QAAAiC,GACA,UAAA7C,GACA,eAAAiC,GACA,QAAAtB,GACA,eAAAd,GACA,QAAAP,GACA,aAAAC,GACA,cAAAO,GACA,GAAAsC,GACA,YAAA/B,GACA,KAAAgC,GACA,IAAAF,GACA,eAAAY,GACA,mBAAAD,GACA,KAAAzB,GACA,gBAAAqB,GACA,oBAAAC,GACA,UAAAZ,GACA,OAAAX,GACA,SAAA5B,GACA,OAAAsB,GACA,OAAAK,GACA,OAAAqC,GACA,mBAAA7D,GACA,kBAAAD,GACA,WAAAkD,GACA,MAAAhD,GACA,SAAAmB,GACA,cAAAiC,GACA,YAAAhB,GACA,KAAAF,GACA,KAAAJ,GACA,UAAAY,GACA,4BAAAhC,GACA,OAAAI,GACA,SAAAiB,GACA,iBAAAlC,GACA,oCAAAyD,GACA,oCAAAtB,GACA,YAAAN,GACA,SAAAY,GACA,cAAA/B,GACA,cAAAd,GACA,UAAAD,GACA,2BAAAa,GACA,0BAAAC,GACA,OAAAmD,GACA,MAAAD,GACA,OAAAD,GACA,MAAA/C,GACA,MAAAmD,GACA,MAAA1C,GACA,IAAAG,GACA,IAAAO,GACA,MAAA+B,GACA,KAAA9C,GACA,SAAAgB,GACA,IAAAe,GACA,KAAAE,GACA,SAAAhB,GACA,UAAAR,GACA,OAAAY,GACA,MAAApB,GACA,iBAAAV,GACA,qBAAAkD,EACF,IClRA,IAAA6C,EAAAC,GAAA,KAAAD,OCEA,SAASE,IAAQ,CACf,GAAIC,GAAY,OAAOC,GACvBD,GAAa,GACbC,GAAU,WAAaC,EACvBD,GAAU,YAAcE,EACxBF,GAAU,cAAgBG,EAK1B,QAJIC,EAAS,CAAC,EACVC,EAAY,CAAC,EACbC,EAAM,OAAO,WAAe,IAAc,WAAa,MACvDC,EAAO,mEACF,EAAI,EAAGC,EAAMD,EAAK,OAAQ,EAAIC,EAAK,EAAE,EAC5CJ,EAAO,CAAC,EAAIG,EAAK,CAAC,EAClBF,EAAUE,EAAK,WAAW,CAAC,CAAC,EAAI,EAKlCF,EAAU,EAAiB,EAAI,GAC/BA,EAAU,EAAiB,EAAI,GAC/B,SAASI,EAAQC,EAAK,CACpB,IAAIF,EAAME,EAAI,OACd,GAAIF,EAAM,EAAI,EACZ,MAAM,IAAI,MAAM,gDAAgD,EAKlE,IAAIG,EAAWD,EAAI,QAAQ,GAAG,EAC1BC,IAAa,KAAIA,EAAWH,GAChC,IAAII,EAAkBD,IAAaH,EAAM,EAAI,EAAIG,EAAW,EAC5D,MAAO,CAACA,EAAUC,CAAe,CACnC,CAGA,SAASX,EAAWS,EAAK,CACvB,IAAIG,EAAOJ,EAAQC,CAAG,EAClBC,EAAWE,EAAK,CAAC,EACjBD,EAAkBC,EAAK,CAAC,EAC5B,OAAQF,EAAWC,GAAmB,EAAI,EAAIA,CAChD,CACA,SAASE,EAAYJ,EAAKC,EAAUC,EAAiB,CACnD,OAAQD,EAAWC,GAAmB,EAAI,EAAIA,CAChD,CACA,SAASV,EAAYQ,EAAK,CACxB,IAAIK,EACAF,EAAOJ,EAAQC,CAAG,EAClBC,EAAWE,EAAK,CAAC,EACjBD,EAAkBC,EAAK,CAAC,EACxBG,EAAM,IAAIV,EAAIQ,EAAYJ,EAAKC,EAAUC,CAAe,CAAC,EACzDK,EAAU,EAGVT,EAAMI,EAAkB,EAAID,EAAW,EAAIA,EAC3CO,EACJ,IAAKA,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EACxBH,EAAMV,EAAUK,EAAI,WAAWQ,CAAC,CAAC,GAAK,GAAKb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,GAAK,GAAKb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,GAAK,EAAIb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,EAC3JF,EAAIC,GAAS,EAAIF,GAAO,GAAK,IAC7BC,EAAIC,GAAS,EAAIF,GAAO,EAAI,IAC5BC,EAAIC,GAAS,EAAIF,EAAM,IAEzB,OAAIH,IAAoB,IACtBG,EAAMV,EAAUK,EAAI,WAAWQ,CAAC,CAAC,GAAK,EAAIb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,GAAK,EAC9EF,EAAIC,GAAS,EAAIF,EAAM,KAErBH,IAAoB,IACtBG,EAAMV,EAAUK,EAAI,WAAWQ,CAAC,CAAC,GAAK,GAAKb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,GAAK,EAAIb,EAAUK,EAAI,WAAWQ,EAAI,CAAC,CAAC,GAAK,EACvHF,EAAIC,GAAS,EAAIF,GAAO,EAAI,IAC5BC,EAAIC,GAAS,EAAIF,EAAM,KAElBC,CACT,CACA,SAASG,EAAgBC,EAAK,CAC5B,OAAOhB,EAAOgB,GAAO,GAAK,EAAE,EAAIhB,EAAOgB,GAAO,GAAK,EAAE,EAAIhB,EAAOgB,GAAO,EAAI,EAAE,EAAIhB,EAAOgB,EAAM,EAAE,CAClG,CACA,SAASC,EAAYC,EAAOC,EAAOC,EAAK,CAGtC,QAFIT,EACAU,EAAS,CAAC,EACLP,EAAIK,EAAOL,EAAIM,EAAKN,GAAK,EAChCH,GAAOO,EAAMJ,CAAC,GAAK,GAAK,WAAaI,EAAMJ,EAAI,CAAC,GAAK,EAAI,QAAUI,EAAMJ,EAAI,CAAC,EAAI,KAClFO,EAAO,KAAKN,EAAgBJ,CAAG,CAAC,EAElC,OAAOU,EAAO,KAAK,EAAE,CACvB,CACA,SAAStB,EAAcmB,EAAO,CAQ5B,QAPIP,EACAP,EAAMc,EAAM,OACZI,EAAalB,EAAM,EACnBmB,EAAQ,CAAC,EACTC,EAAiB,MAGZV,EAAI,EAAGW,EAAOrB,EAAMkB,EAAYR,EAAIW,EAAMX,GAAKU,EACtDD,EAAM,KAAKN,EAAYC,EAAOJ,EAAGA,EAAIU,EAAiBC,EAAOA,EAAOX,EAAIU,CAAc,CAAC,EAIzF,OAAIF,IAAe,GACjBX,EAAMO,EAAMd,EAAM,CAAC,EACnBmB,EAAM,KAAKvB,EAAOW,GAAO,CAAC,EAAIX,EAAOW,GAAO,EAAI,EAAE,EAAI,IAAI,GACjDW,IAAe,IACxBX,GAAOO,EAAMd,EAAM,CAAC,GAAK,GAAKc,EAAMd,EAAM,CAAC,EAC3CmB,EAAM,KAAKvB,EAAOW,GAAO,EAAE,EAAIX,EAAOW,GAAO,EAAI,EAAE,EAAIX,EAAOW,GAAO,EAAI,EAAE,EAAI,GAAG,GAE7EY,EAAM,KAAK,EAAE,CACtB,CACA,OAAO3B,EACT,CAIA,SAAS8B,IAAQ,CACf,GAAIC,GAAY,OAAOC,GACvBD,GAAa,GAEb,OAAAC,GAAU,KAAO,SAAUC,EAAQC,EAAQC,EAAMC,EAAMC,EAAQ,CAC7D,IAAIC,EAAGC,EACHC,EAAOH,EAAS,EAAID,EAAO,EAC3BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,EAAQ,GACRzB,EAAIiB,EAAOE,EAAS,EAAI,EACxBO,EAAIT,EAAO,GAAK,EAChBU,EAAIZ,EAAOC,EAAShB,CAAC,EAKzB,IAJAA,GAAK0B,EACLN,EAAIO,GAAK,GAAK,CAACF,GAAS,EACxBE,IAAM,CAACF,EACPA,GAASH,EACFG,EAAQ,EAAGL,EAAIA,EAAI,IAAML,EAAOC,EAAShB,CAAC,EAAGA,GAAK0B,EAAGD,GAAS,EAAG,CAIxE,IAHAJ,EAAID,GAAK,GAAK,CAACK,GAAS,EACxBL,IAAM,CAACK,EACPA,GAASP,EACFO,EAAQ,EAAGJ,EAAIA,EAAI,IAAMN,EAAOC,EAAShB,CAAC,EAAGA,GAAK0B,EAAGD,GAAS,EAAG,CACxE,GAAIL,IAAM,EACRA,EAAI,EAAII,MACH,IAAIJ,IAAMG,EACf,OAAOF,EAAI,KAAOM,EAAI,GAAK,GAAK,MAEhCN,EAAIA,EAAI,KAAK,IAAI,EAAGH,CAAI,EACxBE,EAAIA,EAAII,EAEV,OAAQG,EAAI,GAAK,GAAKN,EAAI,KAAK,IAAI,EAAGD,EAAIF,CAAI,CAChD,EACAJ,GAAU,MAAQ,SAAUC,EAAQa,EAAOZ,EAAQC,EAAMC,EAAMC,EAAQ,CACrE,IAAIC,EAAGC,EAAG,EACNC,EAAOH,EAAS,EAAID,EAAO,EAC3BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBM,EAAKX,IAAS,GAAK,KAAK,IAAI,EAAG,GAAG,EAAI,KAAK,IAAI,EAAG,GAAG,EAAI,EACzDlB,EAAIiB,EAAO,EAAIE,EAAS,EACxBO,EAAIT,EAAO,EAAI,GACfU,EAAIC,EAAQ,GAAKA,IAAU,GAAK,EAAIA,EAAQ,EAAI,EAAI,EA+BxD,IA9BAA,EAAQ,KAAK,IAAIA,CAAK,EAClB,MAAMA,CAAK,GAAKA,IAAU,KAC5BP,EAAI,MAAMO,CAAK,EAAI,EAAI,EACvBR,EAAIG,IAEJH,EAAI,KAAK,MAAM,KAAK,IAAIQ,CAAK,EAAI,KAAK,GAAG,EACrCA,GAAS,EAAI,KAAK,IAAI,EAAG,CAACR,CAAC,GAAK,IAClCA,IACA,GAAK,GAEHA,EAAII,GAAS,EACfI,GAASC,EAAK,EAEdD,GAASC,EAAK,KAAK,IAAI,EAAG,EAAIL,CAAK,EAEjCI,EAAQ,GAAK,IACfR,IACA,GAAK,GAEHA,EAAII,GAASD,GACfF,EAAI,EACJD,EAAIG,GACKH,EAAII,GAAS,GACtBH,GAAKO,EAAQ,EAAI,GAAK,KAAK,IAAI,EAAGV,CAAI,EACtCE,EAAIA,EAAII,IAERH,EAAIO,EAAQ,KAAK,IAAI,EAAGJ,EAAQ,CAAC,EAAI,KAAK,IAAI,EAAGN,CAAI,EACrDE,EAAI,IAGDF,GAAQ,EAAGH,EAAOC,EAAShB,CAAC,EAAIqB,EAAI,IAAKrB,GAAK0B,EAAGL,GAAK,IAAKH,GAAQ,EAAG,CAG7E,IAFAE,EAAIA,GAAKF,EAAOG,EAChBC,GAAQJ,EACDI,EAAO,EAAGP,EAAOC,EAAShB,CAAC,EAAIoB,EAAI,IAAKpB,GAAK0B,EAAGN,GAAK,IAAKE,GAAQ,EAAG,CAC5EP,EAAOC,EAAShB,EAAI0B,CAAC,GAAKC,EAAI,GAChC,EACOb,EACT,CAIA,SAASgB,IAAM,CACb,GAAIC,GAAU,OAAOC,GACrBD,GAAW,GACX,IAAME,EAASrD,GAAM,EACfsD,EAAUtB,GAAM,EAChBuB,EAAsB,OAAO,QAAW,YAAc,OAAO,OAAO,KAAW,WACnF,OAAO,IAAO,4BAA4B,EAC1C,KACFH,GAAQ,OAASI,EACjBJ,GAAQ,WAAaK,EACrBL,GAAQ,kBAAoB,GAC5B,IAAMM,EAAe,WACrBN,GAAQ,WAAaM,EAgBrBF,EAAO,oBAAsBG,EAAkB,EAC3C,CAACH,EAAO,qBAAuB,OAAO,QAAY,KAAe,OAAO,QAAQ,OAAU,YAC5F,QAAQ,MAAM,+IAAoJ,EAEpK,SAASG,GAAoB,CAE3B,GAAI,CACF,IAAMzC,EAAM,IAAI,WAAW,CAAC,EACtB0C,EAAQ,CACZ,IAAK,UAAY,CACf,MAAO,GACT,CACF,EACA,cAAO,eAAeA,EAAO,WAAW,SAAS,EACjD,OAAO,eAAe1C,EAAK0C,CAAK,EACzB1C,EAAI,IAAI,IAAM,EACvB,MAAY,CACV,MAAO,EACT,CACF,CACA,OAAO,eAAesC,EAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAKA,EAAO,SAAS,IAAI,EACzB,OAAO,KAAK,MACd,CACF,CAAC,EACD,OAAO,eAAeA,EAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAKA,EAAO,SAAS,IAAI,EACzB,OAAO,KAAK,UACd,CACF,CAAC,EACD,SAASK,EAAaC,EAAQ,CAC5B,GAAIA,EAASJ,EACX,MAAM,IAAI,WAAW,cAAiBI,EAAS,gCAAmC,EAGpF,IAAMC,EAAM,IAAI,WAAWD,CAAM,EACjC,cAAO,eAAeC,EAAKP,EAAO,SAAS,EACpCO,CACT,CAYA,SAASP,EAAOQ,EAAKC,EAAkBH,EAAQ,CAE7C,GAAI,OAAOE,GAAQ,SAAU,CAC3B,GAAI,OAAOC,GAAqB,SAC9B,MAAM,IAAI,UAAU,oEAAsE,EAE5F,OAAOC,EAAYF,CAAG,CACxB,CACA,OAAOG,EAAKH,EAAKC,EAAkBH,CAAM,CAC3C,CACAN,EAAO,SAAW,KAElB,SAASW,EAAKnB,EAAOiB,EAAkBH,EAAQ,CAC7C,GAAI,OAAOd,GAAU,SACnB,OAAOoB,EAAWpB,EAAOiB,CAAgB,EAE3C,GAAI,YAAY,OAAOjB,CAAK,EAC1B,OAAOqB,EAAcrB,CAAK,EAE5B,GAAIA,GAAS,KACX,MAAM,IAAI,UAAU,kHAAyH,OAAOA,CAAK,EAK3J,GAHIsB,GAAWtB,EAAO,WAAW,GAAKA,GAASsB,GAAWtB,EAAM,OAAQ,WAAW,GAG/E,OAAO,kBAAsB,MAAgBsB,GAAWtB,EAAO,iBAAiB,GAAKA,GAASsB,GAAWtB,EAAM,OAAQ,iBAAiB,GAC1I,OAAOuB,EAAgBvB,EAAOiB,EAAkBH,CAAM,EAExD,GAAI,OAAOd,GAAU,SACnB,MAAM,IAAI,UAAU,uEAAyE,EAE/F,IAAMwB,EAAUxB,EAAM,SAAWA,EAAM,QAAQ,EAC/C,GAAIwB,GAAW,MAAQA,IAAYxB,EACjC,OAAOQ,EAAO,KAAKgB,EAASP,EAAkBH,CAAM,EAEtD,IAAMW,EAAIC,EAAW1B,CAAK,EAC1B,GAAIyB,EAAG,OAAOA,EACd,GAAI,OAAO,OAAW,KAAe,OAAO,aAAe,MAAQ,OAAOzB,EAAM,OAAO,WAAW,GAAM,WACtG,OAAOQ,EAAO,KAAKR,EAAM,OAAO,WAAW,EAAE,QAAQ,EAAGiB,EAAkBH,CAAM,EAElF,MAAM,IAAI,UAAU,kHAAyH,OAAOd,CAAK,CAC3J,CAUAQ,EAAO,KAAO,SAAUR,EAAOiB,EAAkBH,EAAQ,CACvD,OAAOK,EAAKnB,EAAOiB,EAAkBH,CAAM,CAC7C,EAIA,OAAO,eAAeN,EAAO,UAAW,WAAW,SAAS,EAC5D,OAAO,eAAeA,EAAQ,UAAU,EACxC,SAASmB,EAAWC,EAAM,CACxB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,wCAA0C,EACzD,GAAIA,EAAO,EAChB,MAAM,IAAI,WAAW,cAAiBA,EAAO,gCAAmC,CAEpF,CACA,SAASC,EAAMD,EAAME,EAAMC,EAAU,CAEnC,OADAJ,EAAWC,CAAI,EACXA,GAAQ,EACHf,EAAae,CAAI,EAEtBE,IAAS,OAIJ,OAAOC,GAAa,SAAWlB,EAAae,CAAI,EAAE,KAAKE,EAAMC,CAAQ,EAAIlB,EAAae,CAAI,EAAE,KAAKE,CAAI,EAEvGjB,EAAae,CAAI,CAC1B,CAMApB,EAAO,MAAQ,SAAUoB,EAAME,EAAMC,EAAU,CAC7C,OAAOF,EAAMD,EAAME,EAAMC,CAAQ,CACnC,EACA,SAASb,EAAYU,EAAM,CACzB,OAAAD,EAAWC,CAAI,EACRf,EAAae,EAAO,EAAI,EAAII,EAAQJ,CAAI,EAAI,CAAC,CACtD,CAKApB,EAAO,YAAc,SAAUoB,EAAM,CACnC,OAAOV,EAAYU,CAAI,CACzB,EAIApB,EAAO,gBAAkB,SAAUoB,EAAM,CACvC,OAAOV,EAAYU,CAAI,CACzB,EACA,SAASR,EAAWa,EAAQF,EAAU,CAIpC,IAHI,OAAOA,GAAa,UAAYA,IAAa,MAC/CA,EAAW,QAET,CAACvB,EAAO,WAAWuB,CAAQ,EAC7B,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAErD,IAAMjB,EAAS3D,EAAW8E,EAAQF,CAAQ,EAAI,EAC1ChB,EAAMF,EAAaC,CAAM,EACvBoB,EAASnB,EAAI,MAAMkB,EAAQF,CAAQ,EACzC,OAAIG,IAAWpB,IAIbC,EAAMA,EAAI,MAAM,EAAGmB,CAAM,GAEpBnB,CACT,CACA,SAASoB,EAAcC,EAAO,CAC5B,IAAMtB,EAASsB,EAAM,OAAS,EAAI,EAAIJ,EAAQI,EAAM,MAAM,EAAI,EACxDrB,EAAMF,EAAaC,CAAM,EAC/B,QAAS1C,EAAI,EAAGA,EAAI0C,EAAQ1C,GAAK,EAC/B2C,EAAI3C,CAAC,EAAIgE,EAAMhE,CAAC,EAAI,IAEtB,OAAO2C,CACT,CACA,SAASM,EAAcgB,EAAW,CAChC,GAAIf,GAAWe,EAAW,UAAU,EAAG,CACrC,IAAMC,EAAO,IAAI,WAAWD,CAAS,EACrC,OAAOd,EAAgBe,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,CACtE,CACA,OAAOH,EAAcE,CAAS,CAChC,CACA,SAASd,EAAgBa,EAAOG,EAAYzB,EAAQ,CAClD,GAAIyB,EAAa,GAAKH,EAAM,WAAaG,EACvC,MAAM,IAAI,WAAW,sCAAwC,EAE/D,GAAIH,EAAM,WAAaG,GAAczB,GAAU,GAC7C,MAAM,IAAI,WAAW,sCAAwC,EAE/D,IAAIC,EACJ,OAAIwB,IAAe,QAAazB,IAAW,OACzCC,EAAM,IAAI,WAAWqB,CAAK,EACjBtB,IAAW,OACpBC,EAAM,IAAI,WAAWqB,EAAOG,CAAU,EAEtCxB,EAAM,IAAI,WAAWqB,EAAOG,EAAYzB,CAAM,EAIhD,OAAO,eAAeC,EAAKP,EAAO,SAAS,EACpCO,CACT,CACA,SAASW,EAAWc,EAAK,CACvB,GAAIhC,EAAO,SAASgC,CAAG,EAAG,CACxB,IAAM9E,EAAMsE,EAAQQ,EAAI,MAAM,EAAI,EAC5BzB,EAAMF,EAAanD,CAAG,EAC5B,OAAIqD,EAAI,SAAW,GAGnByB,EAAI,KAAKzB,EAAK,EAAG,EAAGrD,CAAG,EAChBqD,CACT,CACA,GAAIyB,EAAI,SAAW,OACjB,OAAI,OAAOA,EAAI,QAAW,UAAYC,GAAYD,EAAI,MAAM,EACnD3B,EAAa,CAAC,EAEhBsB,EAAcK,CAAG,EAE1B,GAAIA,EAAI,OAAS,UAAY,MAAM,QAAQA,EAAI,IAAI,EACjD,OAAOL,EAAcK,EAAI,IAAI,CAEjC,CACA,SAASR,EAAQlB,EAAQ,CAGvB,GAAIA,GAAUJ,EACZ,MAAM,IAAI,WAAW,0DAAiEA,EAAa,SAAS,EAAE,EAAI,QAAQ,EAE5H,OAAOI,EAAS,CAClB,CACA,SAASL,EAAWK,EAAQ,CAC1B,MAAI,CAACA,GAAUA,IAEbA,EAAS,GAEJN,EAAO,MAAM,CAACM,CAAM,CAC7B,CACAN,EAAO,SAAW,SAAkBiB,EAAG,CACrC,OAAOA,GAAK,MAAQA,EAAE,YAAc,IAAQA,IAAMjB,EAAO,SAC3D,EACAA,EAAO,QAAU,SAAiBkC,EAAGjB,EAAG,CAGtC,GAFIH,GAAWoB,EAAG,UAAU,IAAGA,EAAIlC,EAAO,KAAKkC,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpEpB,GAAWG,EAAG,UAAU,IAAGA,EAAIjB,EAAO,KAAKiB,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpE,CAACjB,EAAO,SAASkC,CAAC,GAAK,CAAClC,EAAO,SAASiB,CAAC,EAC3C,MAAM,IAAI,UAAU,uEAA2E,EAEjG,GAAIiB,IAAMjB,EAAG,MAAO,GACpB,IAAIkB,EAAID,EAAE,OACNE,EAAInB,EAAE,OACV,QAASrD,EAAI,EAAGV,EAAM,KAAK,IAAIiF,EAAGC,CAAC,EAAGxE,EAAIV,EAAK,EAAEU,EAC/C,GAAIsE,EAAEtE,CAAC,IAAMqD,EAAErD,CAAC,EAAG,CACjBuE,EAAID,EAAEtE,CAAC,EACPwE,EAAInB,EAAErD,CAAC,EACP,KACF,CAEF,OAAIuE,EAAIC,EAAU,GACdA,EAAID,EAAU,EACX,CACT,EACAnC,EAAO,WAAa,SAAoBuB,EAAU,CAChD,OAAQ,OAAOA,CAAQ,EAAE,YAAY,EAAG,CACtC,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,GACT,QACE,MAAO,EACX,CACF,EACAvB,EAAO,OAAS,SAAgBqC,EAAM/B,EAAQ,CAC5C,GAAI,CAAC,MAAM,QAAQ+B,CAAI,EACrB,MAAM,IAAI,UAAU,6CAA+C,EAErE,GAAIA,EAAK,SAAW,EAClB,OAAOrC,EAAO,MAAM,CAAC,EAEvB,IAAIpC,EACJ,GAAI0C,IAAW,OAEb,IADAA,EAAS,EACJ1C,EAAI,EAAGA,EAAIyE,EAAK,OAAQ,EAAEzE,EAC7B0C,GAAU+B,EAAKzE,CAAC,EAAE,OAGtB,IAAMe,EAASqB,EAAO,YAAYM,CAAM,EACpCgC,EAAM,EACV,IAAK1E,EAAI,EAAGA,EAAIyE,EAAK,OAAQ,EAAEzE,EAAG,CAChC,IAAI2C,EAAM8B,EAAKzE,CAAC,EAChB,GAAIkD,GAAWP,EAAK,UAAU,EACxB+B,EAAM/B,EAAI,OAAS5B,EAAO,QACvBqB,EAAO,SAASO,CAAG,IAAGA,EAAMP,EAAO,KAAKO,CAAG,GAChDA,EAAI,KAAK5B,EAAQ2D,CAAG,GAEpB,WAAW,UAAU,IAAI,KAAK3D,EAAQ4B,EAAK+B,CAAG,UAEtCtC,EAAO,SAASO,CAAG,EAG7BA,EAAI,KAAK5B,EAAQ2D,CAAG,MAFpB,OAAM,IAAI,UAAU,6CAA+C,EAIrEA,GAAO/B,EAAI,MACb,CACA,OAAO5B,CACT,EACA,SAAShC,EAAW8E,EAAQF,EAAU,CACpC,GAAIvB,EAAO,SAASyB,CAAM,EACxB,OAAOA,EAAO,OAEhB,GAAI,YAAY,OAAOA,CAAM,GAAKX,GAAWW,EAAQ,WAAW,EAC9D,OAAOA,EAAO,WAEhB,GAAI,OAAOA,GAAW,SACpB,MAAM,IAAI,UAAU,2FAAoG,OAAOA,CAAM,EAEvI,IAAMvE,EAAMuE,EAAO,OACbc,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,GAC3D,GAAI,CAACA,GAAarF,IAAQ,EAAG,MAAO,GAGpC,IAAIsF,EAAc,GAClB,OACE,OAAQjB,EAAU,CAChB,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOrE,EACT,IAAK,OACL,IAAK,QACH,OAAOuF,GAAYhB,CAAM,EAAE,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOvE,EAAM,EACf,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOwF,GAAcjB,CAAM,EAAE,OAC/B,QACE,GAAIe,EACF,OAAOD,EAAY,GAAKE,GAAYhB,CAAM,EAAE,OAE9CF,GAAY,GAAKA,GAAU,YAAY,EACvCiB,EAAc,EAClB,CAEJ,CACAxC,EAAO,WAAarD,EACpB,SAASgG,EAAapB,EAAUtD,EAAOC,EAAK,CAC1C,IAAIsE,EAAc,GA2BlB,IAlBIvE,IAAU,QAAaA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ,KAAK,UAGbC,IAAQ,QAAaA,EAAM,KAAK,UAClCA,EAAM,KAAK,QAETA,GAAO,KAKXA,KAAS,EACTD,KAAW,EACPC,GAAOD,GACT,MAAO,GAGT,IADKsD,IAAUA,EAAW,UAExB,OAAQA,EAAU,CAChB,IAAK,MACH,OAAOqB,EAAS,KAAM3E,EAAOC,CAAG,EAClC,IAAK,OACL,IAAK,QACH,OAAO2E,EAAU,KAAM5E,EAAOC,CAAG,EACnC,IAAK,QACH,OAAO4E,GAAW,KAAM7E,EAAOC,CAAG,EACpC,IAAK,SACL,IAAK,SACH,OAAO6E,GAAY,KAAM9E,EAAOC,CAAG,EACrC,IAAK,SACH,OAAO8E,GAAY,KAAM/E,EAAOC,CAAG,EACrC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO+E,EAAa,KAAMhF,EAAOC,CAAG,EACtC,QACE,GAAIsE,EAAa,MAAM,IAAI,UAAU,qBAAuBjB,CAAQ,EACpEA,GAAYA,EAAW,IAAI,YAAY,EACvCiB,EAAc,EAClB,CAEJ,CAQAxC,EAAO,UAAU,UAAY,GAC7B,SAASkD,EAAKjC,EAAGkC,EAAGlE,EAAG,CACrB,IAAMrB,EAAIqD,EAAEkC,CAAC,EACblC,EAAEkC,CAAC,EAAIlC,EAAEhC,CAAC,EACVgC,EAAEhC,CAAC,EAAIrB,CACT,CACAoC,EAAO,UAAU,OAAS,UAAkB,CAC1C,IAAM9C,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASU,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BsF,EAAK,KAAMtF,EAAGA,EAAI,CAAC,EAErB,OAAO,IACT,EACAoC,EAAO,UAAU,OAAS,UAAkB,CAC1C,IAAM9C,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASU,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BsF,EAAK,KAAMtF,EAAGA,EAAI,CAAC,EACnBsF,EAAK,KAAMtF,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EACAoC,EAAO,UAAU,OAAS,UAAkB,CAC1C,IAAM9C,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASU,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BsF,EAAK,KAAMtF,EAAGA,EAAI,CAAC,EACnBsF,EAAK,KAAMtF,EAAI,EAAGA,EAAI,CAAC,EACvBsF,EAAK,KAAMtF,EAAI,EAAGA,EAAI,CAAC,EACvBsF,EAAK,KAAMtF,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EACAoC,EAAO,UAAU,SAAW,UAAoB,CAC9C,IAAMM,EAAS,KAAK,OACpB,OAAIA,IAAW,EAAU,GACrB,UAAU,SAAW,EAAUuC,EAAU,KAAM,EAAGvC,CAAM,EACrDqC,EAAa,MAAM,KAAM,SAAS,CAC3C,EACA3C,EAAO,UAAU,eAAiBA,EAAO,UAAU,SACnDA,EAAO,UAAU,OAAS,SAAgBiB,EAAG,CAC3C,GAAI,CAACjB,EAAO,SAASiB,CAAC,EAAG,MAAM,IAAI,UAAU,2BAA2B,EACxE,OAAI,OAASA,EAAU,GAChBjB,EAAO,QAAQ,KAAMiB,CAAC,IAAM,CACrC,EACAjB,EAAO,UAAU,QAAU,UAAmB,CAC5C,IAAIoD,EAAM,GACJC,EAAMzD,GAAQ,kBACpB,OAAAwD,EAAM,KAAK,SAAS,MAAO,EAAGC,CAAG,EAAE,QAAQ,UAAW,KAAK,EAAE,KAAK,EAC9D,KAAK,OAASA,IAAKD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACIrD,IACFC,EAAO,UAAUD,CAAmB,EAAIC,EAAO,UAAU,SAE3DA,EAAO,UAAU,QAAU,SAAiBsD,EAAQrF,EAAOC,EAAKqF,EAAWC,EAAS,CAIlF,GAHI1C,GAAWwC,EAAQ,UAAU,IAC/BA,EAAStD,EAAO,KAAKsD,EAAQA,EAAO,OAAQA,EAAO,UAAU,GAE3D,CAACtD,EAAO,SAASsD,CAAM,EACzB,MAAM,IAAI,UAAU,iFAA0F,OAAOA,CAAM,EAc7H,GAZIrF,IAAU,SACZA,EAAQ,GAENC,IAAQ,SACVA,EAAMoF,EAASA,EAAO,OAAS,GAE7BC,IAAc,SAChBA,EAAY,GAEVC,IAAY,SACdA,EAAU,KAAK,QAEbvF,EAAQ,GAAKC,EAAMoF,EAAO,QAAUC,EAAY,GAAKC,EAAU,KAAK,OACtE,MAAM,IAAI,WAAW,oBAAoB,EAE3C,GAAID,GAAaC,GAAWvF,GAASC,EACnC,MAAO,GAET,GAAIqF,GAAaC,EACf,MAAO,GAET,GAAIvF,GAASC,EACX,MAAO,GAMT,GAJAD,KAAW,EACXC,KAAS,EACTqF,KAAe,EACfC,KAAa,EACT,OAASF,EAAQ,MAAO,GAC5B,IAAInB,EAAIqB,EAAUD,EACdnB,GAAIlE,EAAMD,EACRf,GAAM,KAAK,IAAIiF,EAAGC,EAAC,EACnBqB,GAAW,KAAK,MAAMF,EAAWC,CAAO,EACxCE,GAAaJ,EAAO,MAAMrF,EAAOC,CAAG,EAC1C,QAASN,GAAI,EAAGA,GAAIV,GAAK,EAAEU,GACzB,GAAI6F,GAAS7F,EAAC,IAAM8F,GAAW9F,EAAC,EAAG,CACjCuE,EAAIsB,GAAS7F,EAAC,EACdwE,GAAIsB,GAAW9F,EAAC,EAChB,KACF,CAEF,OAAIuE,EAAIC,GAAU,GACdA,GAAID,EAAU,EACX,CACT,EAWA,SAASwB,EAAqBhF,EAAQiF,EAAK7B,EAAYR,EAAUsC,EAAK,CAEpE,GAAIlF,EAAO,SAAW,EAAG,MAAO,GAmBhC,GAhBI,OAAOoD,GAAe,UACxBR,EAAWQ,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,EAAa,cACtBA,EAAa,aAEfA,EAAa,CAACA,EACVE,GAAYF,CAAU,IAExBA,EAAa8B,EAAM,EAAIlF,EAAO,OAAS,GAIrCoD,EAAa,IAAGA,EAAapD,EAAO,OAASoD,GAC7CA,GAAcpD,EAAO,OAAQ,CAC/B,GAAIkF,EAAK,MAAO,GAAQ9B,EAAapD,EAAO,OAAS,CACvD,SAAWoD,EAAa,EACtB,GAAI8B,EAAK9B,EAAa,MAAO,OAAO,GAStC,GALI,OAAO6B,GAAQ,WACjBA,EAAM5D,EAAO,KAAK4D,EAAKrC,CAAQ,GAI7BvB,EAAO,SAAS4D,CAAG,EAErB,OAAIA,EAAI,SAAW,EACV,GAEFE,EAAanF,EAAQiF,EAAK7B,EAAYR,EAAUsC,CAAG,EACrD,GAAI,OAAOD,GAAQ,SAExB,OADAA,EAAMA,EAAM,IACR,OAAO,WAAW,UAAU,SAAY,WACtCC,EACK,WAAW,UAAU,QAAQ,KAAKlF,EAAQiF,EAAK7B,CAAU,EAEzD,WAAW,UAAU,YAAY,KAAKpD,EAAQiF,EAAK7B,CAAU,EAGjE+B,EAAanF,EAAQ,CAACiF,CAAG,EAAG7B,EAAYR,EAAUsC,CAAG,EAE9D,MAAM,IAAI,UAAU,sCAAsC,CAC5D,CACA,SAASC,EAAapG,EAAKkG,EAAK7B,EAAYR,EAAUsC,EAAK,CACzD,IAAIE,EAAY,EACZC,EAAYtG,EAAI,OAChBuG,GAAYL,EAAI,OACpB,GAAIrC,IAAa,SACfA,EAAW,OAAOA,CAAQ,EAAE,YAAY,EACpCA,IAAa,QAAUA,IAAa,SAAWA,IAAa,WAAaA,IAAa,YAAY,CACpG,GAAI7D,EAAI,OAAS,GAAKkG,EAAI,OAAS,EACjC,MAAO,GAETG,EAAY,EACZC,GAAa,EACbC,IAAa,EACblC,GAAc,CAChB,CAEF,SAASmC,GAAK3D,GAAK3C,GAAG,CACpB,OAAImG,IAAc,EACTxD,GAAI3C,EAAC,EAEL2C,GAAI,aAAa3C,GAAImG,CAAS,CAEzC,CACA,IAAInG,GACJ,GAAIiG,EAAK,CACP,IAAIM,GAAa,GACjB,IAAKvG,GAAImE,EAAYnE,GAAIoG,EAAWpG,KAClC,GAAIsG,GAAKxG,EAAKE,EAAC,IAAMsG,GAAKN,EAAKO,KAAe,GAAK,EAAIvG,GAAIuG,EAAU,GAEnE,GADIA,KAAe,KAAIA,GAAavG,IAChCA,GAAIuG,GAAa,IAAMF,GAAW,OAAOE,GAAaJ,OAEtDI,KAAe,KAAIvG,IAAKA,GAAIuG,IAChCA,GAAa,EAGnB,KAEE,KADIpC,EAAakC,GAAYD,IAAWjC,EAAaiC,EAAYC,IAC5DrG,GAAImE,EAAYnE,IAAK,EAAGA,KAAK,CAChC,IAAIwG,GAAQ,GACZ,QAASC,GAAI,EAAGA,GAAIJ,GAAWI,KAC7B,GAAIH,GAAKxG,EAAKE,GAAIyG,EAAC,IAAMH,GAAKN,EAAKS,EAAC,EAAG,CACrCD,GAAQ,GACR,KACF,CAEF,GAAIA,GAAO,OAAOxG,EACpB,CAEF,MAAO,EACT,CACAoC,EAAO,UAAU,SAAW,SAAkB4D,EAAK7B,EAAYR,EAAU,CACvE,OAAO,KAAK,QAAQqC,EAAK7B,EAAYR,CAAQ,IAAM,EACrD,EACAvB,EAAO,UAAU,QAAU,SAAiB4D,EAAK7B,EAAYR,EAAU,CACrE,OAAOoC,EAAqB,KAAMC,EAAK7B,EAAYR,EAAU,EAAI,CACnE,EACAvB,EAAO,UAAU,YAAc,SAAqB4D,EAAK7B,EAAYR,EAAU,CAC7E,OAAOoC,EAAqB,KAAMC,EAAK7B,EAAYR,EAAU,EAAK,CACpE,EACA,SAAS+C,EAAS/D,EAAKkB,EAAQ7C,EAAQ0B,EAAQ,CAC7C1B,EAAS,OAAOA,CAAM,GAAK,EAC3B,IAAM2F,EAAYhE,EAAI,OAAS3B,EAC1B0B,GAGHA,EAAS,OAAOA,CAAM,EAClBA,EAASiE,IACXjE,EAASiE,IAJXjE,EAASiE,EAOX,IAAMC,EAAS/C,EAAO,OAClBnB,EAASkE,EAAS,IACpBlE,EAASkE,EAAS,GAEpB,IAAI5G,EACJ,IAAKA,EAAI,EAAGA,EAAI0C,EAAQ,EAAE1C,EAAG,CAC3B,IAAM6G,GAAS,SAAShD,EAAO,OAAO7D,EAAI,EAAG,CAAC,EAAG,EAAE,EACnD,GAAIqE,GAAYwC,EAAM,EAAG,OAAO7G,EAChC2C,EAAI3B,EAAShB,CAAC,EAAI6G,EACpB,CACA,OAAO7G,CACT,CACA,SAAS8G,EAAUnE,EAAKkB,EAAQ7C,EAAQ0B,EAAQ,CAC9C,OAAOqE,GAAWlC,GAAYhB,EAAQlB,EAAI,OAAS3B,CAAM,EAAG2B,EAAK3B,EAAQ0B,CAAM,CACjF,CACA,SAASsE,EAAWrE,EAAKkB,EAAQ7C,EAAQ0B,EAAQ,CAC/C,OAAOqE,GAAWE,GAAapD,CAAM,EAAGlB,EAAK3B,EAAQ0B,CAAM,CAC7D,CACA,SAASwE,EAAYvE,EAAKkB,EAAQ7C,EAAQ0B,EAAQ,CAChD,OAAOqE,GAAWjC,GAAcjB,CAAM,EAAGlB,EAAK3B,EAAQ0B,CAAM,CAC9D,CACA,SAASyE,EAAUxE,EAAKkB,EAAQ7C,EAAQ0B,EAAQ,CAC9C,OAAOqE,GAAWK,GAAevD,EAAQlB,EAAI,OAAS3B,CAAM,EAAG2B,EAAK3B,EAAQ0B,CAAM,CACpF,CACAN,EAAO,UAAU,MAAQ,SAAeyB,EAAQ7C,EAAQ0B,EAAQiB,EAAU,CAExE,GAAI3C,IAAW,OACb2C,EAAW,OACXjB,EAAS,KAAK,OACd1B,EAAS,UAEA0B,IAAW,QAAa,OAAO1B,GAAW,SACnD2C,EAAW3C,EACX0B,EAAS,KAAK,OACd1B,EAAS,UAEA,SAASA,CAAM,EACxBA,EAASA,IAAW,EAChB,SAAS0B,CAAM,GACjBA,EAASA,IAAW,EAChBiB,IAAa,SAAWA,EAAW,UAEvCA,EAAWjB,EACXA,EAAS,YAGX,OAAM,IAAI,MAAM,yEAAyE,EAE3F,IAAMiE,EAAY,KAAK,OAAS3F,EAEhC,IADI0B,IAAW,QAAaA,EAASiE,KAAWjE,EAASiE,GACrD9C,EAAO,OAAS,IAAMnB,EAAS,GAAK1B,EAAS,IAAMA,EAAS,KAAK,OACnE,MAAM,IAAI,WAAW,wCAAwC,EAE1D2C,IAAUA,EAAW,QAC1B,IAAIiB,EAAc,GAClB,OACE,OAAQjB,EAAU,CAChB,IAAK,MACH,OAAO+C,EAAS,KAAM7C,EAAQ7C,EAAQ0B,CAAM,EAC9C,IAAK,OACL,IAAK,QACH,OAAOoE,EAAU,KAAMjD,EAAQ7C,EAAQ0B,CAAM,EAC/C,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOsE,EAAW,KAAMnD,EAAQ7C,EAAQ0B,CAAM,EAChD,IAAK,SAEH,OAAOwE,EAAY,KAAMrD,EAAQ7C,EAAQ0B,CAAM,EACjD,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOyE,EAAU,KAAMtD,EAAQ7C,EAAQ0B,CAAM,EAC/C,QACE,GAAIkC,EAAa,MAAM,IAAI,UAAU,qBAAuBjB,CAAQ,EACpEA,GAAY,GAAKA,GAAU,YAAY,EACvCiB,EAAc,EAClB,CAEJ,EACAxC,EAAO,UAAU,OAAS,UAAkB,CAC1C,MAAO,CACL,KAAM,SACN,KAAM,MAAM,UAAU,MAAM,KAAK,KAAK,MAAQ,KAAM,CAAC,CACvD,CACF,EACA,SAASgD,GAAYzC,EAAKtC,EAAOC,EAAK,CACpC,OAAID,IAAU,GAAKC,IAAQqC,EAAI,OACtBV,EAAO,cAAcU,CAAG,EAExBV,EAAO,cAAcU,EAAI,MAAMtC,EAAOC,CAAG,CAAC,CAErD,CACA,SAAS2E,EAAUtC,EAAKtC,EAAOC,EAAK,CAClCA,EAAM,KAAK,IAAIqC,EAAI,OAAQrC,CAAG,EAC9B,IAAM+G,EAAM,CAAC,EACTrH,EAAIK,EACR,KAAOL,EAAIM,GAAK,CACd,IAAMgH,EAAY3E,EAAI3C,CAAC,EACnBuH,EAAY,KACZC,GAAmBF,EAAY,IAAM,EAAIA,EAAY,IAAM,EAAIA,EAAY,IAAM,EAAI,EACzF,GAAItH,EAAIwH,IAAoBlH,EAAK,CAC/B,IAAImH,GAAYC,GAAWC,GAAYC,GACvC,OAAQJ,GAAkB,CACxB,IAAK,GACCF,EAAY,MACdC,EAAYD,GAEd,MACF,IAAK,GACHG,GAAa9E,EAAI3C,EAAI,CAAC,GACjByH,GAAa,OAAS,MACzBG,IAAiBN,EAAY,KAAO,EAAIG,GAAa,GACjDG,GAAgB,MAClBL,EAAYK,KAGhB,MACF,IAAK,GACHH,GAAa9E,EAAI3C,EAAI,CAAC,EACtB0H,GAAY/E,EAAI3C,EAAI,CAAC,GAChByH,GAAa,OAAS,MAAQC,GAAY,OAAS,MACtDE,IAAiBN,EAAY,KAAO,IAAMG,GAAa,KAAO,EAAIC,GAAY,GAC1EE,GAAgB,OAASA,GAAgB,OAASA,GAAgB,SACpEL,EAAYK,KAGhB,MACF,IAAK,GACHH,GAAa9E,EAAI3C,EAAI,CAAC,EACtB0H,GAAY/E,EAAI3C,EAAI,CAAC,EACrB2H,GAAahF,EAAI3C,EAAI,CAAC,GACjByH,GAAa,OAAS,MAAQC,GAAY,OAAS,MAAQC,GAAa,OAAS,MACpFC,IAAiBN,EAAY,KAAO,IAAMG,GAAa,KAAO,IAAMC,GAAY,KAAO,EAAIC,GAAa,GACpGC,GAAgB,OAASA,GAAgB,UAC3CL,EAAYK,IAGpB,CACF,CACIL,IAAc,MAGhBA,EAAY,MACZC,GAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAI,KAAKE,IAAc,GAAK,KAAO,KAAK,EACxCA,EAAY,MAAQA,EAAY,MAElCF,EAAI,KAAKE,CAAS,EAClBvH,GAAKwH,EACP,CACA,OAAOK,GAAsBR,CAAG,CAClC,CAKA,IAAMS,EAAuB,KAC7B,SAASD,GAAsBE,EAAY,CACzC,IAAMzI,EAAMyI,EAAW,OACvB,GAAIzI,GAAOwI,EACT,OAAO,OAAO,aAAa,MAAM,OAAQC,CAAU,EAIrD,IAAIV,EAAM,GACNrH,EAAI,EACR,KAAOA,EAAIV,GACT+H,GAAO,OAAO,aAAa,MAAM,OAAQU,EAAW,MAAM/H,EAAGA,GAAK8H,CAAoB,CAAC,EAEzF,OAAOT,CACT,CACA,SAASnC,GAAWvC,EAAKtC,EAAOC,EAAK,CACnC,IAAI0H,EAAM,GACV1H,EAAM,KAAK,IAAIqC,EAAI,OAAQrC,CAAG,EAC9B,QAASN,EAAIK,EAAOL,EAAIM,EAAK,EAAEN,EAC7BgI,GAAO,OAAO,aAAarF,EAAI3C,CAAC,EAAI,GAAG,EAEzC,OAAOgI,CACT,CACA,SAAS7C,GAAYxC,EAAKtC,EAAOC,EAAK,CACpC,IAAI0H,EAAM,GACV1H,EAAM,KAAK,IAAIqC,EAAI,OAAQrC,CAAG,EAC9B,QAASN,EAAIK,EAAOL,EAAIM,EAAK,EAAEN,EAC7BgI,GAAO,OAAO,aAAarF,EAAI3C,CAAC,CAAC,EAEnC,OAAOgI,CACT,CACA,SAAShD,EAASrC,EAAKtC,EAAOC,EAAK,CACjC,IAAMhB,EAAMqD,EAAI,QACZ,CAACtC,GAASA,EAAQ,KAAGA,EAAQ,IAC7B,CAACC,GAAOA,EAAM,GAAKA,EAAMhB,KAAKgB,EAAMhB,GACxC,IAAI2I,EAAM,GACV,QAASjI,EAAIK,EAAOL,EAAIM,EAAK,EAAEN,EAC7BiI,GAAOC,GAAoBvF,EAAI3C,CAAC,CAAC,EAEnC,OAAOiI,CACT,CACA,SAAS5C,EAAa1C,EAAKtC,EAAOC,EAAK,CACrC,IAAM6H,EAAQxF,EAAI,MAAMtC,EAAOC,CAAG,EAC9B+G,EAAM,GAEV,QAASrH,EAAI,EAAGA,EAAImI,EAAM,OAAS,EAAGnI,GAAK,EACzCqH,GAAO,OAAO,aAAac,EAAMnI,CAAC,EAAImI,EAAMnI,EAAI,CAAC,EAAI,GAAG,EAE1D,OAAOqH,CACT,CACAjF,EAAO,UAAU,MAAQ,SAAe/B,EAAOC,EAAK,CAClD,IAAMhB,EAAM,KAAK,OACjBe,EAAQ,CAAC,CAACA,EACVC,EAAMA,IAAQ,OAAYhB,EAAM,CAAC,CAACgB,EAC9BD,EAAQ,GACVA,GAASf,EACLe,EAAQ,IAAGA,EAAQ,IACdA,EAAQf,IACjBe,EAAQf,GAENgB,EAAM,GACRA,GAAOhB,EACHgB,EAAM,IAAGA,EAAM,IACVA,EAAMhB,IACfgB,EAAMhB,GAEJgB,EAAMD,IAAOC,EAAMD,GACvB,IAAM+H,EAAS,KAAK,SAAS/H,EAAOC,CAAG,EAEvC,cAAO,eAAe8H,EAAQhG,EAAO,SAAS,EACvCgG,CACT,EAKA,SAASC,EAAYrH,EAAQsH,EAAK5F,EAAQ,CACxC,GAAI1B,EAAS,IAAM,GAAKA,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,EAC7E,GAAIA,EAASsH,EAAM5F,EAAQ,MAAM,IAAI,WAAW,uCAAuC,CACzF,CACAN,EAAO,UAAU,WAAaA,EAAO,UAAU,WAAa,SAAoBpB,EAAQjC,EAAYwJ,EAAU,CAC5GvH,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACvBwJ,GAAUF,EAAYrH,EAAQjC,EAAY,KAAK,MAAM,EAC1D,IAAIiH,EAAM,KAAKhF,CAAM,EACjBwH,EAAM,EACNxI,EAAI,EACR,KAAO,EAAEA,EAAIjB,IAAeyJ,GAAO,MACjCxC,GAAO,KAAKhF,EAAShB,CAAC,EAAIwI,EAE5B,OAAOxC,CACT,EACA5D,EAAO,UAAU,WAAaA,EAAO,UAAU,WAAa,SAAoBpB,EAAQjC,EAAYwJ,EAAU,CAC5GvH,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACvBwJ,GACHF,EAAYrH,EAAQjC,EAAY,KAAK,MAAM,EAE7C,IAAIiH,EAAM,KAAKhF,EAAS,EAAEjC,CAAU,EAChCyJ,EAAM,EACV,KAAOzJ,EAAa,IAAMyJ,GAAO,MAC/BxC,GAAO,KAAKhF,EAAS,EAAEjC,CAAU,EAAIyJ,EAEvC,OAAOxC,CACT,EACA5D,EAAO,UAAU,UAAYA,EAAO,UAAU,UAAY,SAAmBpB,EAAQuH,EAAU,CAC7F,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,CACpB,EACAoB,EAAO,UAAU,aAAeA,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtG,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,EAAI,KAAKA,EAAS,CAAC,GAAK,CAC5C,EACAoB,EAAO,UAAU,aAAeA,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtG,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,GAAK,EAAI,KAAKA,EAAS,CAAC,CAC5C,EACAoB,EAAO,UAAU,aAAeA,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtG,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,GACzC,KAAKA,CAAM,EAAI,KAAKA,EAAS,CAAC,GAAK,EAAI,KAAKA,EAAS,CAAC,GAAK,IAAM,KAAKA,EAAS,CAAC,EAAI,QAC9F,EACAoB,EAAO,UAAU,aAAeA,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtG,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,EAAI,UAAY,KAAKA,EAAS,CAAC,GAAK,GAAK,KAAKA,EAAS,CAAC,GAAK,EAAI,KAAKA,EAAS,CAAC,EACpG,EACAoB,EAAO,UAAU,gBAAkBqG,GAAmB,SAAyBzH,EAAQ,CACrFA,EAASA,IAAW,EACpB0H,GAAe1H,EAAQ,QAAQ,EAC/B,IAAM2H,EAAQ,KAAK3H,CAAM,EACnB4H,EAAO,KAAK5H,EAAS,CAAC,GACxB2H,IAAU,QAAaC,IAAS,SAClCC,GAAY7H,EAAQ,KAAK,OAAS,CAAC,EAErC,IAAM8H,EAAKH,EAAQ,KAAK,EAAE3H,CAAM,EAAI,GAAK,EAAI,KAAK,EAAEA,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,GACxF+H,EAAK,KAAK,EAAE/H,CAAM,EAAI,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAI,KAAK,EAAEA,CAAM,EAAI,GAAK,GAAK4H,EAAO,GAAK,GAC7F,OAAO,OAAOE,CAAE,GAAK,OAAOC,CAAE,GAAK,OAAO,EAAE,EAC9C,CAAC,EACD3G,EAAO,UAAU,gBAAkBqG,GAAmB,SAAyBzH,EAAQ,CACrFA,EAASA,IAAW,EACpB0H,GAAe1H,EAAQ,QAAQ,EAC/B,IAAM2H,EAAQ,KAAK3H,CAAM,EACnB4H,EAAO,KAAK5H,EAAS,CAAC,GACxB2H,IAAU,QAAaC,IAAS,SAClCC,GAAY7H,EAAQ,KAAK,OAAS,CAAC,EAErC,IAAM+H,EAAKJ,EAAQ,GAAK,GAAK,KAAK,EAAE3H,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAI,KAAK,EAAEA,CAAM,EACzF8H,EAAK,KAAK,EAAE9H,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAI4H,EAC3F,OAAQ,OAAOG,CAAE,GAAK,OAAO,EAAE,GAAK,OAAOD,CAAE,CAC/C,CAAC,EACD1G,EAAO,UAAU,UAAY,SAAmBpB,EAAQjC,EAAYwJ,EAAU,CAC5EvH,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACvBwJ,GAAUF,EAAYrH,EAAQjC,EAAY,KAAK,MAAM,EAC1D,IAAIiH,EAAM,KAAKhF,CAAM,EACjBwH,EAAM,EACNxI,EAAI,EACR,KAAO,EAAEA,EAAIjB,IAAeyJ,GAAO,MACjCxC,GAAO,KAAKhF,EAAShB,CAAC,EAAIwI,EAE5B,OAAAA,GAAO,IACHxC,GAAOwC,IAAKxC,GAAO,KAAK,IAAI,EAAG,EAAIjH,CAAU,GAC1CiH,CACT,EACA5D,EAAO,UAAU,UAAY,SAAmBpB,EAAQjC,EAAYwJ,EAAU,CAC5EvH,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACvBwJ,GAAUF,EAAYrH,EAAQjC,EAAY,KAAK,MAAM,EAC1D,IAAIiB,EAAIjB,EACJyJ,EAAM,EACNxC,EAAM,KAAKhF,EAAS,EAAEhB,CAAC,EAC3B,KAAOA,EAAI,IAAMwI,GAAO,MACtBxC,GAAO,KAAKhF,EAAS,EAAEhB,CAAC,EAAIwI,EAE9B,OAAAA,GAAO,IACHxC,GAAOwC,IAAKxC,GAAO,KAAK,IAAI,EAAG,EAAIjH,CAAU,GAC1CiH,CACT,EACA5D,EAAO,UAAU,SAAW,SAAkBpB,EAAQuH,EAAU,CAG9D,OAFAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC3C,KAAKA,CAAM,EAAI,KACb,IAAM,KAAKA,CAAM,EAAI,GAAK,GADA,KAAKA,CAAM,CAE/C,EACAoB,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpEvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMgF,EAAM,KAAKhF,CAAM,EAAI,KAAKA,EAAS,CAAC,GAAK,EAC/C,OAAOgF,EAAM,MAAQA,EAAM,WAAaA,CAC1C,EACA5D,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpEvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMgF,EAAM,KAAKhF,EAAS,CAAC,EAAI,KAAKA,CAAM,GAAK,EAC/C,OAAOgF,EAAM,MAAQA,EAAM,WAAaA,CAC1C,EACA5D,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,EAAI,KAAKA,EAAS,CAAC,GAAK,EAAI,KAAKA,EAAS,CAAC,GAAK,GAAK,KAAKA,EAAS,CAAC,GAAK,EAC7F,EACAoB,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,CAAM,GAAK,GAAK,KAAKA,EAAS,CAAC,GAAK,GAAK,KAAKA,EAAS,CAAC,GAAK,EAAI,KAAKA,EAAS,CAAC,CAC9F,EACAoB,EAAO,UAAU,eAAiBqG,GAAmB,SAAwBzH,EAAQ,CACnFA,EAASA,IAAW,EACpB0H,GAAe1H,EAAQ,QAAQ,EAC/B,IAAM2H,EAAQ,KAAK3H,CAAM,EACnB4H,EAAO,KAAK5H,EAAS,CAAC,GACxB2H,IAAU,QAAaC,IAAS,SAClCC,GAAY7H,EAAQ,KAAK,OAAS,CAAC,EAErC,IAAMgF,EAAM,KAAKhF,EAAS,CAAC,EAAI,KAAKA,EAAS,CAAC,EAAI,GAAK,EAAI,KAAKA,EAAS,CAAC,EAAI,GAAK,IAAM4H,GAAQ,IAEjG,OAAQ,OAAO5C,CAAG,GAAK,OAAO,EAAE,GAAK,OAAO2C,EAAQ,KAAK,EAAE3H,CAAM,EAAI,GAAK,EAAI,KAAK,EAAEA,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAE,CACnI,CAAC,EACDoB,EAAO,UAAU,eAAiBqG,GAAmB,SAAwBzH,EAAQ,CACnFA,EAASA,IAAW,EACpB0H,GAAe1H,EAAQ,QAAQ,EAC/B,IAAM2H,EAAQ,KAAK3H,CAAM,EACnB4H,EAAO,KAAK5H,EAAS,CAAC,GACxB2H,IAAU,QAAaC,IAAS,SAClCC,GAAY7H,EAAQ,KAAK,OAAS,CAAC,EAErC,IAAMgF,GAAO2C,GAAS,IAEtB,KAAK,EAAE3H,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAI,KAAK,EAAEA,CAAM,EAClE,OAAQ,OAAOgF,CAAG,GAAK,OAAO,EAAE,GAAK,OAAO,KAAK,EAAEhF,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,GAAK,KAAK,EAAEA,CAAM,EAAI,GAAK,EAAI4H,CAAI,CAClI,CAAC,EACDxG,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1CkB,EAAQ,KAAK,KAAMlB,EAAQ,GAAM,GAAI,CAAC,CAC/C,EACAoB,EAAO,UAAU,YAAc,SAAqBpB,EAAQuH,EAAU,CACpE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1CkB,EAAQ,KAAK,KAAMlB,EAAQ,GAAO,GAAI,CAAC,CAChD,EACAoB,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1CkB,EAAQ,KAAK,KAAMlB,EAAQ,GAAM,GAAI,CAAC,CAC/C,EACAoB,EAAO,UAAU,aAAe,SAAsBpB,EAAQuH,EAAU,CACtE,OAAAvH,EAASA,IAAW,EACfuH,GAAUF,EAAYrH,EAAQ,EAAG,KAAK,MAAM,EAC1CkB,EAAQ,KAAK,KAAMlB,EAAQ,GAAO,GAAI,CAAC,CAChD,EACA,SAASgI,EAASrG,EAAKf,EAAOZ,EAAQsH,EAAK7C,EAAKwD,EAAK,CACnD,GAAI,CAAC7G,EAAO,SAASO,CAAG,EAAG,MAAM,IAAI,UAAU,6CAA+C,EAC9F,GAAIf,EAAQ6D,GAAO7D,EAAQqH,EAAK,MAAM,IAAI,WAAW,mCAAqC,EAC1F,GAAIjI,EAASsH,EAAM3F,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,CAC1E,CACAP,EAAO,UAAU,YAAcA,EAAO,UAAU,YAAc,SAAqBR,EAAOZ,EAAQjC,EAAYwJ,EAAU,CAItH,GAHA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACxB,CAACwJ,EAAU,CACb,IAAMW,GAAW,KAAK,IAAI,EAAG,EAAInK,CAAU,EAAI,EAC/CiK,EAAS,KAAMpH,EAAOZ,EAAQjC,EAAYmK,GAAU,CAAC,CACvD,CACA,IAAIV,EAAM,EACNxI,EAAI,EAER,IADA,KAAKgB,CAAM,EAAIY,EAAQ,IAChB,EAAE5B,EAAIjB,IAAeyJ,GAAO,MACjC,KAAKxH,EAAShB,CAAC,EAAI4B,EAAQ4G,EAAM,IAEnC,OAAOxH,EAASjC,CAClB,EACAqD,EAAO,UAAU,YAAcA,EAAO,UAAU,YAAc,SAAqBR,EAAOZ,EAAQjC,EAAYwJ,EAAU,CAItH,GAHA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACpBjC,EAAaA,IAAe,EACxB,CAACwJ,EAAU,CACb,IAAMW,GAAW,KAAK,IAAI,EAAG,EAAInK,CAAU,EAAI,EAC/CiK,EAAS,KAAMpH,EAAOZ,EAAQjC,EAAYmK,GAAU,CAAC,CACvD,CACA,IAAIlJ,EAAIjB,EAAa,EACjByJ,EAAM,EAEV,IADA,KAAKxH,EAAShB,CAAC,EAAI4B,EAAQ,IACpB,EAAE5B,GAAK,IAAMwI,GAAO,MACzB,KAAKxH,EAAShB,CAAC,EAAI4B,EAAQ4G,EAAM,IAEnC,OAAOxH,EAASjC,CAClB,EACAqD,EAAO,UAAU,WAAaA,EAAO,UAAU,WAAa,SAAoBR,EAAOZ,EAAQuH,EAAU,CACvG,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,IAAK,CAAC,EACtD,KAAKA,CAAM,EAAIY,EAAQ,IAChBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,cAAgBA,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAChH,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,MAAO,CAAC,EACxD,KAAKA,CAAM,EAAIY,EAAQ,IACvB,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EACtBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,cAAgBA,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAChH,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,MAAO,CAAC,EACxD,KAAKA,CAAM,EAAIY,IAAU,EACzB,KAAKZ,EAAS,CAAC,EAAIY,EAAQ,IACpBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,cAAgBA,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAChH,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,EAAS,CAAC,EAAIY,IAAU,GAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,GAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EAC7B,KAAKZ,CAAM,EAAIY,EAAQ,IAChBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,cAAgBA,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAChH,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,CAAM,EAAIY,IAAU,GACzB,KAAKZ,EAAS,CAAC,EAAIY,IAAU,GAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EAC7B,KAAKZ,EAAS,CAAC,EAAIY,EAAQ,IACpBZ,EAAS,CAClB,EACA,SAASmI,EAAexG,EAAKf,EAAOZ,EAAQiI,EAAKxD,EAAK,CACpD2D,GAAWxH,EAAOqH,EAAKxD,EAAK9C,EAAK3B,EAAQ,CAAC,EAC1C,IAAI8H,EAAK,OAAOlH,EAAQ,OAAO,UAAU,CAAC,EAC1Ce,EAAI3B,GAAQ,EAAI8H,EAChBA,EAAKA,GAAM,EACXnG,EAAI3B,GAAQ,EAAI8H,EAChBA,EAAKA,GAAM,EACXnG,EAAI3B,GAAQ,EAAI8H,EAChBA,EAAKA,GAAM,EACXnG,EAAI3B,GAAQ,EAAI8H,EAChB,IAAIC,EAAK,OAAOnH,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAe,EAAI3B,GAAQ,EAAI+H,EAChBA,EAAKA,GAAM,EACXpG,EAAI3B,GAAQ,EAAI+H,EAChBA,EAAKA,GAAM,EACXpG,EAAI3B,GAAQ,EAAI+H,EAChBA,EAAKA,GAAM,EACXpG,EAAI3B,GAAQ,EAAI+H,EACT/H,CACT,CACA,SAASqI,EAAe1G,EAAKf,EAAOZ,EAAQiI,EAAKxD,EAAK,CACpD2D,GAAWxH,EAAOqH,EAAKxD,EAAK9C,EAAK3B,EAAQ,CAAC,EAC1C,IAAI8H,EAAK,OAAOlH,EAAQ,OAAO,UAAU,CAAC,EAC1Ce,EAAI3B,EAAS,CAAC,EAAI8H,EAClBA,EAAKA,GAAM,EACXnG,EAAI3B,EAAS,CAAC,EAAI8H,EAClBA,EAAKA,GAAM,EACXnG,EAAI3B,EAAS,CAAC,EAAI8H,EAClBA,EAAKA,GAAM,EACXnG,EAAI3B,EAAS,CAAC,EAAI8H,EAClB,IAAIC,EAAK,OAAOnH,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAe,EAAI3B,EAAS,CAAC,EAAI+H,EAClBA,EAAKA,GAAM,EACXpG,EAAI3B,EAAS,CAAC,EAAI+H,EAClBA,EAAKA,GAAM,EACXpG,EAAI3B,EAAS,CAAC,EAAI+H,EAClBA,EAAKA,GAAM,EACXpG,EAAI3B,CAAM,EAAI+H,EACP/H,EAAS,CAClB,CACAoB,EAAO,UAAU,iBAAmBqG,GAAmB,SAA0B7G,EAAOZ,EAAS,EAAG,CAClG,OAAOmI,EAAe,KAAMvH,EAAOZ,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EACDoB,EAAO,UAAU,iBAAmBqG,GAAmB,SAA0B7G,EAAOZ,EAAS,EAAG,CAClG,OAAOqI,EAAe,KAAMzH,EAAOZ,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EACDoB,EAAO,UAAU,WAAa,SAAoBR,EAAOZ,EAAQjC,EAAYwJ,EAAU,CAGrF,GAFA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EAChB,CAACuH,EAAU,CACb,IAAMe,GAAQ,KAAK,IAAI,EAAG,EAAIvK,EAAa,CAAC,EAC5CiK,EAAS,KAAMpH,EAAOZ,EAAQjC,EAAYuK,GAAQ,EAAG,CAACA,EAAK,CAC7D,CACA,IAAItJ,EAAI,EACJwI,EAAM,EACNe,GAAM,EAEV,IADA,KAAKvI,CAAM,EAAIY,EAAQ,IAChB,EAAE5B,EAAIjB,IAAeyJ,GAAO,MAC7B5G,EAAQ,GAAK2H,KAAQ,GAAK,KAAKvI,EAAShB,EAAI,CAAC,IAAM,IACrDuJ,GAAM,GAER,KAAKvI,EAAShB,CAAC,GAAK4B,EAAQ4G,GAAO,GAAKe,GAAM,IAEhD,OAAOvI,EAASjC,CAClB,EACAqD,EAAO,UAAU,WAAa,SAAoBR,EAAOZ,EAAQjC,EAAYwJ,EAAU,CAGrF,GAFA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EAChB,CAACuH,EAAU,CACb,IAAMe,GAAQ,KAAK,IAAI,EAAG,EAAIvK,EAAa,CAAC,EAC5CiK,EAAS,KAAMpH,EAAOZ,EAAQjC,EAAYuK,GAAQ,EAAG,CAACA,EAAK,CAC7D,CACA,IAAItJ,EAAIjB,EAAa,EACjByJ,EAAM,EACNe,GAAM,EAEV,IADA,KAAKvI,EAAShB,CAAC,EAAI4B,EAAQ,IACpB,EAAE5B,GAAK,IAAMwI,GAAO,MACrB5G,EAAQ,GAAK2H,KAAQ,GAAK,KAAKvI,EAAShB,EAAI,CAAC,IAAM,IACrDuJ,GAAM,GAER,KAAKvI,EAAShB,CAAC,GAAK4B,EAAQ4G,GAAO,GAAKe,GAAM,IAEhD,OAAOvI,EAASjC,CAClB,EACAqD,EAAO,UAAU,UAAY,SAAmBR,EAAOZ,EAAQuH,EAAU,CACvE,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,IAAK,IAAI,EACrDY,EAAQ,IAAGA,EAAQ,IAAMA,EAAQ,GACrC,KAAKZ,CAAM,EAAIY,EAAQ,IAChBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,MAAO,MAAM,EAC7D,KAAKA,CAAM,EAAIY,EAAQ,IACvB,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EACtBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,MAAO,MAAM,EAC7D,KAAKA,CAAM,EAAIY,IAAU,EACzB,KAAKZ,EAAS,CAAC,EAAIY,EAAQ,IACpBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,WAAY,WAAW,EACvE,KAAKA,CAAM,EAAIY,EAAQ,IACvB,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,GAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,GACtBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GAAUS,EAAS,KAAMpH,EAAOZ,EAAQ,EAAG,WAAY,WAAW,EACnEY,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,KAAKZ,CAAM,EAAIY,IAAU,GACzB,KAAKZ,EAAS,CAAC,EAAIY,IAAU,GAC7B,KAAKZ,EAAS,CAAC,EAAIY,IAAU,EAC7B,KAAKZ,EAAS,CAAC,EAAIY,EAAQ,IACpBZ,EAAS,CAClB,EACAoB,EAAO,UAAU,gBAAkBqG,GAAmB,SAAyB7G,EAAOZ,EAAS,EAAG,CAChG,OAAOmI,EAAe,KAAMvH,EAAOZ,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EACDoB,EAAO,UAAU,gBAAkBqG,GAAmB,SAAyB7G,EAAOZ,EAAS,EAAG,CAChG,OAAOqI,EAAe,KAAMzH,EAAOZ,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EACD,SAASwI,GAAa7G,EAAKf,EAAOZ,EAAQsH,EAAK7C,EAAKwD,EAAK,CACvD,GAAIjI,EAASsH,EAAM3F,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EACxE,GAAI3B,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,CAC3D,CACA,SAASyI,EAAW9G,EAAKf,EAAOZ,EAAQ0I,EAAcnB,EAAU,CAC9D,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GACHiB,GAAa7G,EAAKf,EAAOZ,EAAQ,CAAC,EAEpCkB,EAAQ,MAAMS,EAAKf,EAAOZ,EAAQ0I,EAAc,GAAI,CAAC,EAC9C1I,EAAS,CAClB,CACAoB,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAOkB,EAAW,KAAM7H,EAAOZ,EAAQ,GAAMuH,CAAQ,CACvD,EACAnG,EAAO,UAAU,aAAe,SAAsBR,EAAOZ,EAAQuH,EAAU,CAC7E,OAAOkB,EAAW,KAAM7H,EAAOZ,EAAQ,GAAOuH,CAAQ,CACxD,EACA,SAASoB,EAAYhH,EAAKf,EAAOZ,EAAQ0I,EAAcnB,EAAU,CAC/D,OAAA3G,EAAQ,CAACA,EACTZ,EAASA,IAAW,EACfuH,GACHiB,GAAa7G,EAAKf,EAAOZ,EAAQ,CAAC,EAEpCkB,EAAQ,MAAMS,EAAKf,EAAOZ,EAAQ0I,EAAc,GAAI,CAAC,EAC9C1I,EAAS,CAClB,CACAoB,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAC/E,OAAOoB,EAAY,KAAM/H,EAAOZ,EAAQ,GAAMuH,CAAQ,CACxD,EACAnG,EAAO,UAAU,cAAgB,SAAuBR,EAAOZ,EAAQuH,EAAU,CAC/E,OAAOoB,EAAY,KAAM/H,EAAOZ,EAAQ,GAAOuH,CAAQ,CACzD,EAGAnG,EAAO,UAAU,KAAO,SAAcsD,EAAQkE,EAAavJ,EAAOC,EAAK,CACrE,GAAI,CAAC8B,EAAO,SAASsD,CAAM,EAAG,MAAM,IAAI,UAAU,6BAA6B,EAS/E,GARKrF,IAAOA,EAAQ,GAChB,CAACC,GAAOA,IAAQ,IAAGA,EAAM,KAAK,QAC9BsJ,GAAelE,EAAO,SAAQkE,EAAclE,EAAO,QAClDkE,IAAaA,EAAc,GAC5BtJ,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,GACRqF,EAAO,SAAW,GAAK,KAAK,SAAW,EAAG,MAAO,GAGrD,GAAIkE,EAAc,EAChB,MAAM,IAAI,WAAW,2BAA2B,EAElD,GAAIvJ,EAAQ,GAAKA,GAAS,KAAK,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EAChF,GAAIC,EAAM,EAAG,MAAM,IAAI,WAAW,yBAAyB,EAGvDA,EAAM,KAAK,SAAQA,EAAM,KAAK,QAC9BoF,EAAO,OAASkE,EAActJ,EAAMD,IACtCC,EAAMoF,EAAO,OAASkE,EAAcvJ,GAEtC,IAAMf,EAAMgB,EAAMD,EAClB,OAAI,OAASqF,GAAU,OAAO,WAAW,UAAU,YAAe,WAEhE,KAAK,WAAWkE,EAAavJ,EAAOC,CAAG,EAEvC,WAAW,UAAU,IAAI,KAAKoF,EAAQ,KAAK,SAASrF,EAAOC,CAAG,EAAGsJ,CAAW,EAEvEtK,CACT,EAMA8C,EAAO,UAAU,KAAO,SAAc4D,EAAK3F,EAAOC,EAAKqD,EAAU,CAE/D,GAAI,OAAOqC,GAAQ,SAAU,CAS3B,GARI,OAAO3F,GAAU,UACnBsD,EAAWtD,EACXA,EAAQ,EACRC,EAAM,KAAK,QACF,OAAOA,GAAQ,WACxBqD,EAAWrD,EACXA,EAAM,KAAK,QAETqD,IAAa,QAAa,OAAOA,GAAa,SAChD,MAAM,IAAI,UAAU,2BAA2B,EAEjD,GAAI,OAAOA,GAAa,UAAY,CAACvB,EAAO,WAAWuB,CAAQ,EAC7D,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAErD,GAAIqC,EAAI,SAAW,EAAG,CACpB,IAAM3G,EAAO2G,EAAI,WAAW,CAAC,GACzBrC,IAAa,QAAUtE,EAAO,KAAOsE,IAAa,YAEpDqC,EAAM3G,EAEV,CACF,MAAW,OAAO2G,GAAQ,SACxBA,EAAMA,EAAM,IACH,OAAOA,GAAQ,YACxBA,EAAM,OAAOA,CAAG,GAIlB,GAAI3F,EAAQ,GAAK,KAAK,OAASA,GAAS,KAAK,OAASC,EACpD,MAAM,IAAI,WAAW,oBAAoB,EAE3C,GAAIA,GAAOD,EACT,OAAO,KAETA,EAAQA,IAAU,EAClBC,EAAMA,IAAQ,OAAY,KAAK,OAASA,IAAQ,EAC3C0F,IAAKA,EAAM,GAChB,IAAIhG,EACJ,GAAI,OAAOgG,GAAQ,SACjB,IAAKhG,EAAIK,EAAOL,EAAIM,EAAK,EAAEN,EACzB,KAAKA,CAAC,EAAIgG,MAEP,CACL,IAAMmC,EAAQ/F,EAAO,SAAS4D,CAAG,EAAIA,EAAM5D,EAAO,KAAK4D,EAAKrC,CAAQ,EAC9DrE,GAAM6I,EAAM,OAClB,GAAI7I,KAAQ,EACV,MAAM,IAAI,UAAU,cAAiB0G,EAAM,mCAAsC,EAEnF,IAAKhG,EAAI,EAAGA,EAAIM,EAAMD,EAAO,EAAEL,EAC7B,KAAKA,EAAIK,CAAK,EAAI8H,EAAMnI,EAAIV,EAAG,CAEnC,CACA,OAAO,IACT,EAMA,IAAMuK,EAAS,CAAC,EAChB,SAASC,EAAEC,EAAKC,EAAYC,EAAM,CAChCJ,EAAOE,CAAG,EAAI,cAAwBE,CAAK,CACzC,aAAc,CACZ,MAAM,EACN,OAAO,eAAe,KAAM,UAAW,CACrC,MAAOD,EAAW,MAAM,KAAM,SAAS,EACvC,SAAU,GACV,aAAc,EAChB,CAAC,EAGD,KAAK,KAAO,GAAG,KAAK,IAAI,KAAKD,CAAG,IAGhC,KAAK,MAEL,OAAO,KAAK,IACd,CACA,IAAI,MAAO,CACT,OAAOA,CACT,CACA,IAAI,KAAKnI,EAAO,CACd,OAAO,eAAe,KAAM,OAAQ,CAClC,aAAc,GACd,WAAY,GACZ,MAAAA,EACA,SAAU,EACZ,CAAC,CACH,CACA,UAAW,CACT,MAAO,GAAG,KAAK,IAAI,KAAKmI,CAAG,MAAM,KAAK,OAAO,EAC/C,CACF,CACF,CACAD,EAAE,2BAA4B,SAAUI,EAAM,CAC5C,OAAIA,EACK,GAAGA,CAAI,+BAET,gDACT,EAAG,UAAU,EACbJ,EAAE,uBAAwB,SAAUI,EAAMpG,EAAQ,CAChD,MAAO,QAAQoG,CAAI,oDAAoD,OAAOpG,CAAM,EACtF,EAAG,SAAS,EACZgG,EAAE,mBAAoB,SAAUtE,EAAK2E,EAAOC,EAAO,CACjD,IAAIC,EAAM,iBAAiB7E,CAAG,qBAC1B8E,EAAWF,EACf,OAAI,OAAO,UAAUA,CAAK,GAAK,KAAK,IAAIA,CAAK,EAAI,GAAK,GACpDE,EAAWC,GAAsB,OAAOH,CAAK,CAAC,EACrC,OAAOA,GAAU,WAC1BE,EAAW,OAAOF,CAAK,GACnBA,EAAQ,OAAO,CAAC,GAAK,OAAO,EAAE,GAAKA,EAAQ,EAAE,OAAO,CAAC,GAAK,OAAO,EAAE,MACrEE,EAAWC,GAAsBD,CAAQ,GAE3CA,GAAY,KAEdD,GAAO,eAAeF,CAAK,cAAcG,CAAQ,GAC1CD,CACT,EAAG,UAAU,EACb,SAASE,GAAsBvE,EAAK,CAClC,IAAIqB,EAAM,GACNrH,EAAIgG,EAAI,OACN3F,EAAQ2F,EAAI,CAAC,IAAM,IAAM,EAAI,EACnC,KAAOhG,GAAKK,EAAQ,EAAGL,GAAK,EAC1BqH,EAAM,IAAIrB,EAAI,MAAMhG,EAAI,EAAGA,CAAC,CAAC,GAAGqH,CAAG,GAErC,MAAO,GAAGrB,EAAI,MAAM,EAAGhG,CAAC,CAAC,GAAGqH,CAAG,EACjC,CAKA,SAASmD,GAAY7H,EAAK3B,EAAQjC,EAAY,CAC5C2J,GAAe1H,EAAQ,QAAQ,GAC3B2B,EAAI3B,CAAM,IAAM,QAAa2B,EAAI3B,EAASjC,CAAU,IAAM,SAC5D8J,GAAY7H,EAAQ2B,EAAI,QAAU5D,EAAa,EAAE,CAErD,CACA,SAASqK,GAAWxH,EAAOqH,EAAKxD,EAAK9C,EAAK3B,EAAQjC,EAAY,CAC5D,GAAI6C,EAAQ6D,GAAO7D,EAAQqH,EAAK,CAC9B,IAAM1D,EAAI,OAAO0D,GAAQ,SAAW,IAAM,GACtCkB,GAEF,MAAIlB,IAAQ,GAAKA,IAAQ,OAAO,CAAC,EAC/BkB,GAAQ,OAAO5E,CAAC,WAAWA,CAAC,QAAQxG,EAAa,GAAK,CAAC,GAAGwG,CAAC,GAE3D4E,GAAQ,SAAS5E,CAAC,QAAQxG,EAAa,GAAK,EAAI,CAAC,GAAGwG,CAAC,iBAAsBxG,EAAa,GAAK,EAAI,CAAC,GAAGwG,CAAC,GAGpG,IAAIsE,EAAO,iBAAiB,QAASM,GAAOvI,CAAK,CACzD,CACA4I,GAAY7H,EAAK3B,EAAQjC,CAAU,CACrC,CACA,SAAS2J,GAAe9G,EAAOsI,EAAM,CACnC,GAAI,OAAOtI,GAAU,SACnB,MAAM,IAAIiI,EAAO,qBAAqBK,EAAM,SAAUtI,CAAK,CAE/D,CACA,SAASiH,GAAYjH,EAAOc,EAAQ+H,EAAM,CACxC,MAAI,KAAK,MAAM7I,CAAK,IAAMA,GACxB8G,GAAe9G,EAAO6I,CAAI,EACpB,IAAIZ,EAAO,iBAAiB,SAAU,aAAcjI,CAAK,GAE7Dc,EAAS,EACL,IAAImH,EAAO,yBAEb,IAAIA,EAAO,iBAAiB,SAAU,eAAkBnH,CAAM,GAAId,CAAK,CAC/E,CAKA,IAAM8I,GAAoB,oBAC1B,SAASC,GAAYnF,EAAK,CAMxB,GAJAA,EAAMA,EAAI,MAAM,GAAG,EAAE,CAAC,EAEtBA,EAAMA,EAAI,KAAK,EAAE,QAAQkF,GAAmB,EAAE,EAE1ClF,EAAI,OAAS,EAAG,MAAO,GAE3B,KAAOA,EAAI,OAAS,IAAM,GACxBA,EAAMA,EAAM,IAEd,OAAOA,CACT,CACA,SAASX,GAAYhB,EAAQ+G,EAAO,CAClCA,EAAQA,GAAS,IACjB,IAAIrD,EACE7E,EAASmB,EAAO,OAClBgH,EAAgB,KACd1C,EAAQ,CAAC,EACf,QAASnI,EAAI,EAAGA,EAAI0C,EAAQ,EAAE1C,EAAG,CAI/B,GAHAuH,EAAY1D,EAAO,WAAW7D,CAAC,EAG3BuH,EAAY,OAASA,EAAY,MAAO,CAE1C,GAAI,CAACsD,EAAe,CAElB,GAAItD,EAAY,MAAO,EAEhBqD,GAAS,GAAK,IAAIzC,EAAM,KAAK,IAAK,IAAK,GAAG,EAC/C,QACF,SAAWnI,EAAI,IAAM0C,EAAQ,EAEtBkI,GAAS,GAAK,IAAIzC,EAAM,KAAK,IAAK,IAAK,GAAG,EAC/C,QACF,CAGA0C,EAAgBtD,EAChB,QACF,CAGA,GAAIA,EAAY,MAAO,EAChBqD,GAAS,GAAK,IAAIzC,EAAM,KAAK,IAAK,IAAK,GAAG,EAC/C0C,EAAgBtD,EAChB,QACF,CAGAA,GAAasD,EAAgB,OAAS,GAAKtD,EAAY,OAAS,KAClE,MAAWsD,IAEJD,GAAS,GAAK,IAAIzC,EAAM,KAAK,IAAK,IAAK,GAAG,EAKjD,GAHA0C,EAAgB,KAGZtD,EAAY,IAAK,CACnB,IAAKqD,GAAS,GAAK,EAAG,MACtBzC,EAAM,KAAKZ,CAAS,CACtB,SAAWA,EAAY,KAAM,CAC3B,IAAKqD,GAAS,GAAK,EAAG,MACtBzC,EAAM,KAAKZ,GAAa,EAAI,IAAKA,EAAY,GAAK,GAAG,CACvD,SAAWA,EAAY,MAAO,CAC5B,IAAKqD,GAAS,GAAK,EAAG,MACtBzC,EAAM,KAAKZ,GAAa,GAAK,IAAKA,GAAa,EAAI,GAAK,IAAKA,EAAY,GAAK,GAAG,CACnF,SAAWA,EAAY,QAAS,CAC9B,IAAKqD,GAAS,GAAK,EAAG,MACtBzC,EAAM,KAAKZ,GAAa,GAAK,IAAKA,GAAa,GAAK,GAAK,IAAKA,GAAa,EAAI,GAAK,IAAKA,EAAY,GAAK,GAAG,CAC/G,KACE,OAAM,IAAI,MAAM,oBAAoB,CAExC,CACA,OAAOY,CACT,CACA,SAASlB,GAAazB,EAAK,CACzB,IAAMsF,EAAY,CAAC,EACnB,QAAS9K,EAAI,EAAGA,EAAIwF,EAAI,OAAQ,EAAExF,EAEhC8K,EAAU,KAAKtF,EAAI,WAAWxF,CAAC,EAAI,GAAG,EAExC,OAAO8K,CACT,CACA,SAAS1D,GAAe5B,EAAKoF,EAAO,CAClC,IAAIG,EAAGhC,EAAID,EACLgC,EAAY,CAAC,EACnB,QAAS9K,EAAI,EAAGA,EAAIwF,EAAI,QACjB,GAAAoF,GAAS,GAAK,GADW,EAAE5K,EAEhC+K,EAAIvF,EAAI,WAAWxF,CAAC,EACpB+I,EAAKgC,GAAK,EACVjC,EAAKiC,EAAI,IACTD,EAAU,KAAKhC,CAAE,EACjBgC,EAAU,KAAK/B,CAAE,EAEnB,OAAO+B,CACT,CACA,SAAShG,GAAcU,EAAK,CAC1B,OAAOvD,EAAO,YAAY0I,GAAYnF,CAAG,CAAC,CAC5C,CACA,SAASuB,GAAWiE,EAAKC,EAAKjK,EAAQ0B,EAAQ,CAC5C,IAAI1C,EACJ,IAAKA,EAAI,EAAGA,EAAI0C,GACV,EAAA1C,EAAIgB,GAAUiK,EAAI,QAAUjL,GAAKgL,EAAI,QADnB,EAAEhL,EAExBiL,EAAIjL,EAAIgB,CAAM,EAAIgK,EAAIhL,CAAC,EAEzB,OAAOA,CACT,CAKA,SAASkD,GAAWkB,EAAKqG,EAAM,CAC7B,OAAOrG,aAAeqG,GAAQrG,GAAO,MAAQA,EAAI,aAAe,MAAQA,EAAI,YAAY,MAAQ,MAAQA,EAAI,YAAY,OAASqG,EAAK,IACxI,CACA,SAASpG,GAAYD,EAAK,CAExB,OAAOA,IAAQA,CACjB,CAIA,IAAM8D,GAAsB,UAAY,CACtC,IAAMgD,EAAW,mBACXC,EAAQ,IAAI,MAAM,GAAG,EAC3B,QAASnL,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG,CAC3B,IAAMoL,EAAMpL,EAAI,GAChB,QAASyG,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB0E,EAAMC,EAAM3E,CAAC,EAAIyE,EAASlL,CAAC,EAAIkL,EAASzE,CAAC,CAE7C,CACA,OAAO0E,CACT,EAAE,EAGF,SAAS1C,GAAmB4C,EAAI,CAC9B,OAAO,OAAO,OAAW,IAAcC,GAAyBD,CAClE,CACA,SAASC,IAAyB,CAChC,MAAM,IAAI,MAAM,sBAAsB,CACxC,CACA,OAAOtJ,EACT,CAh4DA,IAAIlD,GACFD,GA6GEiC,GACFD,GAiFEmB,GACFD,GAjMFwJ,GAAAC,GAAA,KAAAC,IAAAC,IAAAC,IAAI7M,GAAY,CAAC,EACfD,GAAa,GA6GXiC,GAAY,CAAC,EACfD,GAAa,GAiFXmB,GAAU,CAAC,EACbD,GAAW,KCjMb,IAEM6J,GAGFC,EACAC,GACAC,GAPJC,GAAAC,GAAA,KAAAC,IAAAF,IAAAG,IAAAC,KAEMR,GAAUS,GAAI,EACpBT,GAAQ,OAAWA,GAAQ,WAAeA,GAAQ,kBAAsBA,GAAQ,WAE5EC,EAASD,GAAQ,OACjBE,GAAoBF,GAAQ,kBAC5BG,GAAaH,GAAQ,aCPzB,IAAAU,EAAAC,GAAA,KAAAD,kRCCA,IAAsBE,GAAtB,KAAiC,GAAjCC,GAAA,YAAAD,GAOaC,GAAA,WAAa,wBAE1B,IAAaC,GAAb,cAA0BF,EAAW,CAEnC,YAAYG,EAAS,CAEnB,GADA,MAAK,EACD,CAACF,GAAA,WAAW,KAAKE,CAAC,EAAG,MAAM,IAAI,MAAM,0CAA0C,EACnF,KAAK,IAAMA,CACb,CAEA,UAAQ,CACN,OAAO,KAAK,GACd,CAEA,UAAQ,CACN,MAAO,EACT,CAEA,IAAI,OAAK,CACP,MAAO,CAAC,CAAC,KAAK,GAAG,EAAG,CAAC,CACvB,GAlBFF,GAAA,KAAAC,GAqBA,IAAaE,GAAb,cAA2BJ,EAAW,CAKpC,YAAYK,EAAkC,CAC5C,MAAK,EACL,KAAK,OAAS,OAAOA,GAAS,SAAW,CAACA,CAAI,EAAIA,CACpD,CAEA,UAAQ,CACN,OAAO,KAAK,GACd,CAEA,UAAQ,CACN,GAAI,KAAK,OAAO,OAAS,EAAG,MAAO,GACnC,IAAMC,EAAO,KAAK,OAAO,CAAC,EAC1B,OAAOA,IAAS,IAAMA,IAAS,IACjC,CAEA,IAAI,KAAG,OACL,OAAOC,EAAC,KAAK,QAAI,MAAAA,IAAA,OAAAA,EAAT,KAAK,KAAS,KAAK,OAAO,OAAO,CAACJ,EAAWK,IAAgB,GAAGL,CAAC,GAAGK,CAAC,GAAI,EAAE,CACrF,CAEA,IAAI,OAAK,OACP,OAAOD,EAAC,KAAK,UAAM,MAAAA,IAAA,OAAAA,EAAX,KAAK,OAAW,KAAK,OAAO,OAAO,CAACE,EAAkBD,KACxDA,aAAaN,KAAMO,EAAMD,EAAE,GAAG,GAAKC,EAAMD,EAAE,GAAG,GAAK,GAAK,GACrDC,GACN,CAAA,CAAE,CACP,GA7BFR,GAAA,MAAAG,GAwCaH,GAAA,IAAM,IAAIG,GAAM,EAAE,EAI/B,SAAgBM,GAAEC,KAA+BC,EAAe,CAC9D,IAAMP,EAAmB,CAACM,EAAK,CAAC,CAAC,EAC7BE,EAAI,EACR,KAAOA,EAAID,EAAK,QACdE,GAAWT,EAAMO,EAAKC,CAAC,CAAC,EACxBR,EAAK,KAAKM,EAAK,EAAEE,CAAC,CAAC,EAErB,OAAO,IAAIT,GAAMC,CAAI,CACvB,CARAJ,GAAA,EAAAS,GAUA,IAAMK,GAAO,IAAIX,GAAM,GAAG,EAE1B,SAAgBY,GAAIL,KAA+BC,EAA4B,CAC7E,IAAMK,EAAmB,CAACC,GAAcP,EAAK,CAAC,CAAC,CAAC,EAC5CE,EAAI,EACR,KAAOA,EAAID,EAAK,QACdK,EAAK,KAAKF,EAAI,EACdD,GAAWG,EAAML,EAAKC,CAAC,CAAC,EACxBI,EAAK,KAAKF,GAAMG,GAAcP,EAAK,EAAEE,CAAC,CAAC,CAAC,EAE1C,OAAAM,GAASF,CAAI,EACN,IAAIb,GAAMa,CAAI,CACvB,CAVAhB,GAAA,IAAAe,GAYA,SAAgBF,GAAWT,EAAkBe,EAAuB,CAC9DA,aAAehB,GAAOC,EAAK,KAAK,GAAGe,EAAI,MAAM,EACxCA,aAAelB,GAAMG,EAAK,KAAKe,CAAG,EACtCf,EAAK,KAAKgB,GAAYD,CAAG,CAAC,CACjC,CAJAnB,GAAA,WAAAa,GAMA,SAASK,GAASF,EAAgB,CAChC,IAAIJ,EAAI,EACR,KAAOA,EAAII,EAAK,OAAS,GAAG,CAC1B,GAAIA,EAAKJ,CAAC,IAAME,GAAM,CACpB,IAAMO,EAAMC,GAAeN,EAAKJ,EAAI,CAAC,EAAGI,EAAKJ,EAAI,CAAC,CAAC,EACnD,GAAIS,IAAQ,OAAW,CACrBL,EAAK,OAAOJ,EAAI,EAAG,EAAGS,CAAG,EACzB,QACF,CACAL,EAAKJ,GAAG,EAAI,GACd,CACAA,GACF,CACF,CAEA,SAASU,GAAeC,EAAaC,EAAW,CAC9C,GAAIA,IAAM,KAAM,OAAOD,EACvB,GAAIA,IAAM,KAAM,OAAOC,EACvB,GAAI,OAAOD,GAAK,SACd,OAAIC,aAAavB,IAAQsB,EAAEA,EAAE,OAAS,CAAC,IAAM,IAAK,OAC9C,OAAOC,GAAK,SAAiB,GAAGD,EAAE,MAAM,EAAG,EAAE,CAAC,GAAGC,CAAC,IAClDA,EAAE,CAAC,IAAM,IAAYD,EAAE,MAAM,EAAG,EAAE,EAAIC,EAAE,MAAM,CAAC,EACnD,OAEF,GAAI,OAAOA,GAAK,UAAYA,EAAE,CAAC,IAAM,KAAO,EAAED,aAAatB,IAAO,MAAO,IAAIsB,CAAC,GAAGC,EAAE,MAAM,CAAC,CAAC,EAE7F,CAEA,SAAgBC,GAAUC,EAAUC,EAAQ,CAC1C,OAAOA,EAAG,SAAQ,EAAKD,EAAKA,EAAG,SAAQ,EAAKC,EAAKZ,KAAMW,CAAE,GAAGC,CAAE,EAChE,CAFA3B,GAAA,UAAAyB,GAKA,SAASL,GAAYQ,EAA+C,CAClE,OAAO,OAAOA,GAAK,UAAY,OAAOA,GAAK,WAAaA,IAAM,KAC1DA,EACAX,GAAc,MAAM,QAAQW,CAAC,EAAIA,EAAE,KAAK,GAAG,EAAIA,CAAC,CACtD,CAEA,SAAgBC,GAAUD,EAAU,CAClC,OAAO,IAAIzB,GAAMc,GAAcW,CAAC,CAAC,CACnC,CAFA5B,GAAA,UAAA6B,GAIA,SAAgBZ,GAAcW,EAAU,CACtC,OAAO,KAAK,UAAUA,CAAC,EACpB,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,CACjC,CAJA5B,GAAA,cAAAiB,GAMA,SAAgBa,GAAYC,EAA2B,CACrD,OAAO,OAAOA,GAAO,UAAY/B,GAAA,WAAW,KAAK+B,CAAG,EAAI,IAAI5B,GAAM,IAAI4B,CAAG,EAAE,EAAItB,MAAKsB,CAAG,GACzF,CAFA/B,GAAA,YAAA8B,GAKA,SAAgBE,GAAiBD,EAA2B,CAC1D,GAAI,OAAOA,GAAO,UAAY/B,GAAA,WAAW,KAAK+B,CAAG,EAC/C,OAAO,IAAI5B,GAAM,GAAG4B,CAAG,EAAE,EAE3B,MAAM,IAAI,MAAM,iCAAiCA,CAAG,iCAAiC,CACvF,CALA/B,GAAA,iBAAAgC,GAOA,SAAgBC,GAAWC,EAAU,CACnC,OAAO,IAAI/B,GAAM+B,EAAG,SAAQ,CAAE,CAChC,CAFAlC,GAAA,WAAAiC,4KCtKA,IAAAE,GAAA,KAeMC,GAAN,cAAyB,KAAK,CAE5B,YAAYC,EAAoB,CAC9B,MAAM,uBAAuBA,CAAI,cAAc,EAC/C,KAAK,MAAQA,EAAK,KACpB,GAwBUC,IAAZ,SAAYA,EAAc,CACxBA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,UAAA,CAAA,EAAA,WACF,GAHYA,KAAcC,GAAA,eAAdD,GAAc,CAAA,EAAA,EASbC,GAAA,SAAW,CACtB,MAAO,IAAIJ,GAAA,KAAK,OAAO,EACvB,IAAK,IAAIA,GAAA,KAAK,KAAK,EACnB,IAAK,IAAIA,GAAA,KAAK,KAAK,GAGrB,IAAaK,GAAb,KAAkB,CAKhB,YAAY,CAAC,SAAAC,EAAU,OAAAC,CAAM,EAAkB,CAAA,EAAE,CAJ9B,KAAA,OAA2C,CAAA,EAK5D,KAAK,UAAYD,EACjB,KAAK,QAAUC,CACjB,CAEA,OAAOC,EAA2B,CAChC,OAAOA,aAAwBR,GAAA,KAAOQ,EAAe,KAAK,KAAKA,CAAY,CAC7E,CAEA,KAAKC,EAAc,CACjB,OAAO,IAAIT,GAAA,KAAK,KAAK,SAASS,CAAM,CAAC,CACvC,CAEU,SAASA,EAAc,CAC/B,IAAMC,EAAK,KAAK,OAAOD,CAAM,GAAK,KAAK,WAAWA,CAAM,EACxD,MAAO,GAAGA,CAAM,GAAGC,EAAG,OAAO,EAC/B,CAEQ,WAAWD,EAAc,SAC/B,GAAI,GAAAE,GAAAC,EAAA,KAAK,WAAO,MAAAA,IAAA,OAAA,OAAAA,EAAE,aAAS,MAAAD,IAAA,SAAAA,EAAE,IAAIF,CAAM,GAAM,KAAK,WAAa,CAAC,KAAK,UAAU,IAAIA,CAAM,EACvF,MAAM,IAAI,MAAM,oBAAoBA,CAAM,gCAAgC,EAE5E,OAAQ,KAAK,OAAOA,CAAM,EAAI,CAAC,OAAAA,EAAQ,MAAO,CAAC,CACjD,GA5BFL,GAAA,MAAAC,GAoCA,IAAaQ,GAAb,cAAoCb,GAAA,IAAI,CAKtC,YAAYS,EAAgBK,EAAe,CACzC,MAAMA,CAAO,EACb,KAAK,OAASL,CAChB,CAEA,SAASM,EAAkB,CAAC,SAAAC,EAAU,UAAAC,CAAS,EAAY,CACzD,KAAK,MAAQF,EACb,KAAK,aAAYf,GAAA,MAAK,IAAIA,GAAA,KAAKgB,CAAQ,CAAC,IAAIC,CAAS,GACvD,GAbFb,GAAA,eAAAS,GAoBA,IAAMK,MAAOlB,GAAA,OAEAmB,GAAb,cAAgCd,EAAK,CAKnC,YAAYe,EAAuB,CACjC,MAAMA,CAAI,EALO,KAAA,QAAuB,CAAA,EAMxC,KAAK,OAASA,EAAK,MACnB,KAAK,KAAO,CAAC,GAAGA,EAAM,GAAIA,EAAK,MAAQF,GAAOlB,GAAA,GAAG,CACnD,CAEA,KAAG,CACD,OAAO,KAAK,MACd,CAEA,KAAKS,EAAc,CACjB,OAAO,IAAII,GAAeJ,EAAQ,KAAK,SAASA,CAAM,CAAC,CACzD,CAEA,MAAMD,EAAuCO,EAAgB,OAC3D,GAAIA,EAAM,MAAQ,OAAW,MAAM,IAAI,MAAM,sCAAsC,EACnF,IAAMb,EAAO,KAAK,OAAOM,CAAY,EAC/B,CAAC,OAAAC,CAAM,EAAIP,EACXmB,GAAWT,EAAAG,EAAM,OAAG,MAAAH,IAAA,OAAAA,EAAIG,EAAM,IAChCO,EAAK,KAAK,QAAQb,CAAM,EAC5B,GAAIa,EAAI,CACN,IAAMC,EAAQD,EAAG,IAAID,CAAQ,EAC7B,GAAIE,EAAO,OAAOA,CACpB,MACED,EAAK,KAAK,QAAQb,CAAM,EAAI,IAAI,IAElCa,EAAG,IAAID,EAAUnB,CAAI,EAErB,IAAMsB,EAAI,KAAK,OAAOf,CAAM,IAAM,KAAK,OAAOA,CAAM,EAAI,CAAA,GAClDQ,EAAYO,EAAE,OACpB,OAAAA,EAAEP,CAAS,EAAIF,EAAM,IACrBb,EAAK,SAASa,EAAO,CAAC,SAAUN,EAAQ,UAAAQ,CAAS,CAAC,EAC3Cf,CACT,CAEA,SAASO,EAAgBgB,EAAiB,CACxC,IAAMH,EAAK,KAAK,QAAQb,CAAM,EAC9B,GAAKa,EACL,OAAOA,EAAG,IAAIG,CAAQ,CACxB,CAEA,UAAUC,EAAiBC,EAAuC,KAAK,QAAO,CAC5E,OAAO,KAAK,cAAcA,EAASzB,GAAwB,CACzD,GAAIA,EAAK,YAAc,OAAW,MAAM,IAAI,MAAM,kBAAkBA,CAAI,gBAAgB,EACxF,SAAOF,GAAA,KAAI0B,CAAS,GAAGxB,EAAK,SAAS,EACvC,CAAC,CACH,CAEA,UACEyB,EAAuC,KAAK,QAC5CC,EACAC,EAAiD,CAEjD,OAAO,KAAK,cACVF,EACCzB,GAAwB,CACvB,GAAIA,EAAK,QAAU,OAAW,MAAM,IAAI,MAAM,kBAAkBA,CAAI,gBAAgB,EACpF,OAAOA,EAAK,MAAM,IACpB,EACA0B,EACAC,CAAO,CAEX,CAEQ,cACNF,EACAG,EACAF,EAA8B,CAAA,EAC9BC,EAAiD,CAEjD,IAAIE,EAAa/B,GAAA,IACjB,QAAWS,KAAUkB,EAAQ,CAC3B,IAAML,EAAKK,EAAOlB,CAAM,EACxB,GAAI,CAACa,EAAI,SACT,IAAMU,EAAWJ,EAAWnB,CAAM,EAAImB,EAAWnB,CAAM,GAAK,IAAI,IAChEa,EAAG,QAASpB,GAAwB,CAClC,GAAI8B,EAAQ,IAAI9B,CAAI,EAAG,OACvB8B,EAAQ,IAAI9B,EAAMC,GAAe,OAAO,EACxC,IAAI8B,EAAIH,EAAU5B,CAAI,EACtB,GAAI+B,EAAG,CACL,IAAMC,EAAM,KAAK,KAAK,IAAM9B,GAAA,SAAS,IAAMA,GAAA,SAAS,MACpD2B,KAAO/B,GAAA,KAAI+B,CAAI,GAAGG,CAAG,IAAIhC,CAAI,MAAM+B,CAAC,IAAI,KAAK,KAAK,EAAE,EACtD,SAAYA,EAAIJ,IAAU3B,CAAI,EAC5B6B,KAAO/B,GAAA,KAAI+B,CAAI,GAAGE,CAAC,GAAG,KAAK,KAAK,EAAE,OAElC,OAAM,IAAIhC,GAAWC,CAAI,EAE3B8B,EAAQ,IAAI9B,EAAMC,GAAe,SAAS,CAC5C,CAAC,CACH,CACA,OAAO4B,CACT,GAhGF3B,GAAA,WAAAe,wRCpHA,IAAAgB,GAAA,KACAC,GAAA,KAEAC,GAAA,KAAQ,OAAA,eAAAC,GAAA,IAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,CAAC,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,SAAS,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,WAAW,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,SAAS,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,UAAU,CAAA,CAAA,EAAE,OAAA,eAAAC,GAAA,OAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,IAAI,CAAA,CAAA,EACxE,IAAAE,GAAA,KAAQ,OAAA,eAAAD,GAAA,QAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,KAAK,CAAA,CAAA,EAAc,OAAA,eAAAD,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,UAAU,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,iBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,cAAc,CAAA,CAAA,EAAkB,OAAA,eAAAD,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,QAAQ,CAAA,CAAA,EAQlED,GAAA,UAAY,CACvB,GAAI,IAAIH,GAAA,MAAM,GAAG,EACjB,IAAK,IAAIA,GAAA,MAAM,IAAI,EACnB,GAAI,IAAIA,GAAA,MAAM,GAAG,EACjB,IAAK,IAAIA,GAAA,MAAM,IAAI,EACnB,GAAI,IAAIA,GAAA,MAAM,KAAK,EACnB,IAAK,IAAIA,GAAA,MAAM,KAAK,EACpB,IAAK,IAAIA,GAAA,MAAM,GAAG,EAClB,GAAI,IAAIA,GAAA,MAAM,IAAI,EAClB,IAAK,IAAIA,GAAA,MAAM,IAAI,EACnB,IAAK,IAAIA,GAAA,MAAM,GAAG,GAGpB,IAAeK,GAAf,KAAmB,CAGjB,eAAa,CACX,OAAO,IACT,CAEA,cAAcC,EAAmBC,EAAqB,CACpD,OAAO,IACT,GAOIC,GAAN,cAAkBH,EAAI,CACpB,YACmBI,EACAC,EACTC,EAAc,CAEtB,MAAK,EAJY,KAAA,QAAAF,EACA,KAAA,KAAAC,EACT,KAAA,IAAAC,CAGV,CAEA,OAAO,CAAC,IAAAC,EAAK,GAAAC,CAAE,EAAY,CACzB,IAAMJ,EAAUG,EAAMX,GAAA,SAAS,IAAM,KAAK,QACpCU,EAAM,KAAK,MAAQ,OAAY,GAAK,MAAM,KAAK,GAAG,GACxD,MAAO,GAAGF,CAAO,IAAI,KAAK,IAAI,GAAGE,CAAG,IAAME,CAC5C,CAEA,cAAcC,EAAkBC,EAAoB,CAClD,GAAKD,EAAM,KAAK,KAAK,GAAG,EACxB,OAAI,KAAK,MAAK,KAAK,IAAME,GAAa,KAAK,IAAKF,EAAOC,CAAS,GACzD,IACT,CAEA,IAAI,OAAK,CACP,OAAO,KAAK,eAAef,GAAA,YAAc,KAAK,IAAI,MAAQ,CAAA,CAC5D,GAGIiB,GAAN,cAAqBZ,EAAI,CACvB,YACWa,EACFP,EACUQ,EAAqB,CAEtC,MAAK,EAJI,KAAA,IAAAD,EACF,KAAA,IAAAP,EACU,KAAA,YAAAQ,CAGnB,CAEA,OAAO,CAAC,GAAAN,CAAE,EAAY,CACpB,MAAO,GAAG,KAAK,GAAG,MAAM,KAAK,GAAG,IAAMA,CACxC,CAEA,cAAcC,EAAkBC,EAAoB,CAClD,GAAI,OAAK,eAAef,GAAA,MAAQ,CAACc,EAAM,KAAK,IAAI,GAAG,GAAK,CAAC,KAAK,aAC9D,YAAK,IAAME,GAAa,KAAK,IAAKF,EAAOC,CAAS,EAC3C,IACT,CAEA,IAAI,OAAK,CACP,IAAMD,EAAQ,KAAK,eAAed,GAAA,KAAO,CAAA,EAAK,CAAC,GAAG,KAAK,IAAI,KAAK,EAChE,OAAOoB,GAAaN,EAAO,KAAK,GAAG,CACrC,GAGIO,GAAN,cAAuBJ,EAAM,CAC3B,YACEC,EACiBI,EACjBX,EACAQ,EAAqB,CAErB,MAAMD,EAAKP,EAAKQ,CAAW,EAJV,KAAA,GAAAG,CAKnB,CAEA,OAAO,CAAC,GAAAT,CAAE,EAAY,CACpB,MAAO,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,KAAK,GAAG,IAAMA,CAClD,GAGIU,GAAN,cAAoBlB,EAAI,CAEtB,YAAqBmB,EAAW,CAC9B,MAAK,EADc,KAAA,MAAAA,EADZ,KAAA,MAAmB,CAAA,CAG5B,CAEA,OAAO,CAAC,GAAAX,CAAE,EAAY,CACpB,MAAO,GAAG,KAAK,KAAK,IAAMA,CAC5B,GAGIY,GAAN,cAAoBpB,EAAI,CAEtB,YAAqBmB,EAAY,CAC/B,MAAK,EADc,KAAA,MAAAA,EADZ,KAAA,MAAmB,CAAA,CAG5B,CAEA,OAAO,CAAC,GAAAX,CAAE,EAAY,CAEpB,MAAO,QADO,KAAK,MAAQ,IAAI,KAAK,KAAK,GAAK,EAC1B,IAAMA,CAC5B,GAGIa,GAAN,cAAoBrB,EAAI,CACtB,YAAqBsB,EAAW,CAC9B,MAAK,EADc,KAAA,MAAAA,CAErB,CAEA,OAAO,CAAC,GAAAd,CAAE,EAAY,CACpB,MAAO,SAAS,KAAK,KAAK,IAAMA,CAClC,CAEA,IAAI,OAAK,CACP,OAAO,KAAK,MAAM,KACpB,GAGIe,GAAN,cAAsBvB,EAAI,CACxB,YAAoBwB,EAAc,CAChC,MAAK,EADa,KAAA,KAAAA,CAEpB,CAEA,OAAO,CAAC,GAAAhB,CAAE,EAAY,CACpB,MAAO,GAAG,KAAK,IAAI,IAAMA,CAC3B,CAEA,eAAa,CACX,MAAO,GAAG,KAAK,IAAI,GAAK,KAAO,MACjC,CAEA,cAAcC,EAAkBC,EAAoB,CAClD,YAAK,KAAOC,GAAa,KAAK,KAAMF,EAAOC,CAAS,EAC7C,IACT,CAEA,IAAI,OAAK,CACP,OAAO,KAAK,gBAAgBf,GAAA,YAAc,KAAK,KAAK,MAAQ,CAAA,CAC9D,GAGa8B,GAAf,cAAkCzB,EAAI,CACpC,YAAqB0B,EAAqB,CAAA,EAAE,CAC1C,MAAK,EADc,KAAA,MAAAA,CAErB,CAEA,OAAOC,EAAe,CACpB,OAAO,KAAK,MAAM,OAAO,CAACH,EAAM,IAAMA,EAAO,EAAE,OAAOG,CAAI,EAAG,EAAE,CACjE,CAEA,eAAa,CACX,GAAM,CAAC,MAAAD,CAAK,EAAI,KACZE,EAAIF,EAAM,OACd,KAAOE,KAAK,CACV,IAAM,EAAIF,EAAME,CAAC,EAAE,cAAa,EAC5B,MAAM,QAAQ,CAAC,EAAGF,EAAM,OAAOE,EAAG,EAAG,GAAG,CAAC,EACpC,EAAGF,EAAME,CAAC,EAAI,EAClBF,EAAM,OAAOE,EAAG,CAAC,CACxB,CACA,OAAOF,EAAM,OAAS,EAAI,KAAO,MACnC,CAEA,cAAcjB,EAAkBC,EAAoB,CAClD,GAAM,CAAC,MAAAgB,CAAK,EAAI,KACZ,EAAIA,EAAM,OACd,KAAO,KAAK,CAEV,IAAMG,EAAIH,EAAM,CAAC,EACbG,EAAE,cAAcpB,EAAOC,CAAS,IACpCoB,GAAcrB,EAAOoB,EAAE,KAAK,EAC5BH,EAAM,OAAO,EAAG,CAAC,EACnB,CACA,OAAOA,EAAM,OAAS,EAAI,KAAO,MACnC,CAEA,IAAI,OAAK,CACP,OAAO,KAAK,MAAM,OAAO,CAACjB,EAAkBoB,IAAME,GAAStB,EAAOoB,EAAE,KAAK,EAAG,CAAA,CAAE,CAChF,GAOaG,GAAf,cAAiCP,EAAU,CACzC,OAAOE,EAAe,CACpB,MAAO,IAAMA,EAAK,GAAK,MAAM,OAAOA,CAAI,EAAI,IAAMA,EAAK,EACzD,GAGIM,GAAN,cAAmBR,EAAU,GAEvBS,GAAN,cAAmBF,EAAS,GACVE,GAAA,KAAO,OAGzB,IAAMC,GAAN,MAAMC,UAAWJ,EAAS,CAGxB,YACUK,EACRX,EAAmB,CAEnB,MAAMA,CAAK,EAHH,KAAA,UAAAW,CAIV,CAEA,OAAOV,EAAe,CACpB,IAAIH,EAAO,MAAM,KAAK,SAAS,IAAM,MAAM,OAAOG,CAAI,EACtD,OAAI,KAAK,OAAMH,GAAQ,QAAU,KAAK,KAAK,OAAOG,CAAI,GAC/CH,CACT,CAEA,eAAa,CACX,MAAM,cAAa,EACnB,IAAMc,EAAO,KAAK,UAClB,GAAIA,IAAS,GAAM,OAAO,KAAK,MAC/B,IAAIC,EAAI,KAAK,KACb,GAAIA,EAAG,CACL,IAAMC,EAAKD,EAAE,cAAa,EAC1BA,EAAI,KAAK,KAAO,MAAM,QAAQC,CAAE,EAAI,IAAIN,GAAKM,CAAE,EAAKA,CACtD,CACA,GAAID,EACF,OAAID,IAAS,GAAcC,aAAaH,EAAKG,EAAIA,EAAE,MAC/C,KAAK,MAAM,OAAe,KACvB,IAAIH,EAAGK,GAAIH,CAAI,EAAGC,aAAaH,EAAK,CAACG,CAAC,EAAIA,EAAE,KAAK,EAE1D,GAAI,EAAAD,IAAS,IAAS,CAAC,KAAK,MAAM,QAClC,OAAO,IACT,CAEA,cAAc7B,EAAkBC,EAAoB,OAElD,GADA,KAAK,MAAOgC,EAAA,KAAK,QAAI,MAAAA,IAAA,OAAA,OAAAA,EAAE,cAAcjC,EAAOC,CAAS,EACjD,GAAE,MAAM,cAAcD,EAAOC,CAAS,GAAK,KAAK,MACpD,YAAK,UAAYC,GAAa,KAAK,UAAWF,EAAOC,CAAS,EACvD,IACT,CAEA,IAAI,OAAK,CACP,IAAMD,EAAQ,MAAM,MACpB,OAAAM,GAAaN,EAAO,KAAK,SAAS,EAC9B,KAAK,MAAMsB,GAAStB,EAAO,KAAK,KAAK,KAAK,EACvCA,CACT,GA7CgB0B,GAAA,KAAO,KAoDzB,IAAeQ,GAAf,cAA2BX,EAAS,GAClBW,GAAA,KAAO,MAGzB,IAAMC,GAAN,cAAsBD,EAAG,CACvB,YAAoBE,EAAe,CACjC,MAAK,EADa,KAAA,UAAAA,CAEpB,CAEA,OAAOlB,EAAe,CACpB,MAAO,OAAO,KAAK,SAAS,IAAM,MAAM,OAAOA,CAAI,CACrD,CAEA,cAAclB,EAAkBC,EAAoB,CAClD,GAAK,MAAM,cAAcD,EAAOC,CAAS,EACzC,YAAK,UAAYC,GAAa,KAAK,UAAWF,EAAOC,CAAS,EACvD,IACT,CAEA,IAAI,OAAK,CACP,OAAOqB,GAAS,MAAM,MAAO,KAAK,UAAU,KAAK,CACnD,GAGIe,GAAN,cAAuBH,EAAG,CACxB,YACmBvC,EACAC,EACA0C,EACAC,EAAY,CAE7B,MAAK,EALY,KAAA,QAAA5C,EACA,KAAA,KAAAC,EACA,KAAA,KAAA0C,EACA,KAAA,GAAAC,CAGnB,CAEA,OAAOrB,EAAe,CACpB,IAAMvB,EAAUuB,EAAK,IAAM/B,GAAA,SAAS,IAAM,KAAK,QACzC,CAAC,KAAAS,EAAM,KAAA0C,EAAM,GAAAC,CAAE,EAAI,KACzB,MAAO,OAAO5C,CAAO,IAAIC,CAAI,IAAI0C,CAAI,KAAK1C,CAAI,IAAI2C,CAAE,KAAK3C,CAAI,MAAQ,MAAM,OAAOsB,CAAI,CACxF,CAEA,IAAI,OAAK,CACP,IAAMlB,EAAQM,GAAa,MAAM,MAAO,KAAK,IAAI,EACjD,OAAOA,GAAaN,EAAO,KAAK,EAAE,CACpC,GAGIwC,GAAN,cAAsBN,EAAG,CACvB,YACmBO,EACA9C,EACAC,EACT8C,EAAc,CAEtB,MAAK,EALY,KAAA,KAAAD,EACA,KAAA,QAAA9C,EACA,KAAA,KAAAC,EACT,KAAA,SAAA8C,CAGV,CAEA,OAAOxB,EAAe,CACpB,MAAO,OAAO,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,IAAM,MAAM,OAAOA,CAAI,CAC9F,CAEA,cAAclB,EAAkBC,EAAoB,CAClD,GAAK,MAAM,cAAcD,EAAOC,CAAS,EACzC,YAAK,SAAWC,GAAa,KAAK,SAAUF,EAAOC,CAAS,EACrD,IACT,CAEA,IAAI,OAAK,CACP,OAAOqB,GAAS,MAAM,MAAO,KAAK,SAAS,KAAK,CAClD,GAGIqB,GAAN,cAAmBpB,EAAS,CAE1B,YACS3B,EACAgD,EACAC,EAAe,CAEtB,MAAK,EAJE,KAAA,KAAAjD,EACA,KAAA,KAAAgD,EACA,KAAA,MAAAC,CAGT,CAEA,OAAO3B,EAAe,CAEpB,MAAO,GADQ,KAAK,MAAQ,SAAW,EACvB,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,IAAM,MAAM,OAAOA,CAAI,CAC3E,GAZgByB,GAAA,KAAO,OAezB,IAAMG,GAAN,cAAqB9B,EAAU,CAG7B,OAAOE,EAAe,CACpB,MAAO,UAAY,MAAM,OAAOA,CAAI,CACtC,GAJgB4B,GAAA,KAAO,SAOzB,IAAMC,GAAN,cAAkBxB,EAAS,CAIzB,OAAOL,EAAe,CACpB,IAAIH,EAAO,MAAQ,MAAM,OAAOG,CAAI,EACpC,OAAI,KAAK,QAAOH,GAAQ,KAAK,MAAM,OAAOG,CAAI,GAC1C,KAAK,UAASH,GAAQ,KAAK,QAAQ,OAAOG,CAAI,GAC3CH,CACT,CAEA,eAAa,SACX,aAAM,cAAa,GACnBkB,EAAA,KAAK,SAAK,MAAAA,IAAA,QAAAA,EAAE,cAAa,GACzBe,EAAA,KAAK,WAAO,MAAAA,IAAA,QAAAA,EAAE,cAAa,EACpB,IACT,CAEA,cAAchD,EAAkBC,EAAoB,SAClD,aAAM,cAAcD,EAAOC,CAAS,GACpCgC,EAAA,KAAK,SAAK,MAAAA,IAAA,QAAAA,EAAE,cAAcjC,EAAOC,CAAS,GAC1C+C,EAAA,KAAK,WAAO,MAAAA,IAAA,QAAAA,EAAE,cAAchD,EAAOC,CAAS,EACrC,IACT,CAEA,IAAI,OAAK,CACP,IAAMD,EAAQ,MAAM,MACpB,OAAI,KAAK,OAAOsB,GAAStB,EAAO,KAAK,MAAM,KAAK,EAC5C,KAAK,SAASsB,GAAStB,EAAO,KAAK,QAAQ,KAAK,EAC7CA,CACT,GAOIiD,GAAN,cAAoB1B,EAAS,CAE3B,YAAqBV,EAAW,CAC9B,MAAK,EADc,KAAA,MAAAA,CAErB,CAEA,OAAOK,EAAe,CACpB,MAAO,SAAS,KAAK,KAAK,IAAM,MAAM,OAAOA,CAAI,CACnD,GAPgB+B,GAAA,KAAO,QAUzB,IAAMC,GAAN,cAAsB3B,EAAS,CAE7B,OAAOL,EAAe,CACpB,MAAO,UAAY,MAAM,OAAOA,CAAI,CACtC,GAHgBgC,GAAA,KAAO,UAiCzB,IAAaC,GAAb,KAAoB,CASlB,YAAYC,EAAsBlC,EAAuB,CAAA,EAAE,CANlD,KAAA,QAA0B,CAAA,EAElB,KAAA,aAAyB,CAAA,EACzB,KAAA,WAAwB,CAAA,EAIvC,KAAK,KAAO,CAAC,GAAGA,EAAM,GAAIA,EAAK,MAAQ;EAAO,EAAE,EAChD,KAAK,UAAYkC,EACjB,KAAK,OAAS,IAAIjE,GAAA,MAAM,CAAC,OAAQiE,CAAQ,CAAC,EAC1C,KAAK,OAAS,CAAC,IAAI5B,EAAM,CAC3B,CAEA,UAAQ,CACN,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,CACpC,CAGA,KAAK6B,EAAc,CACjB,OAAO,KAAK,OAAO,KAAKA,CAAM,CAChC,CAGA,UAAUA,EAAc,CACtB,OAAO,KAAK,UAAU,KAAKA,CAAM,CACnC,CAGA,WAAWC,EAAuCC,EAAgB,CAChE,IAAM3D,EAAO,KAAK,UAAU,MAAM0D,EAAcC,CAAK,EAErD,OADW,KAAK,QAAQ3D,EAAK,MAAM,IAAM,KAAK,QAAQA,EAAK,MAAM,EAAI,IAAI,MACtE,IAAIA,CAAI,EACJA,CACT,CAEA,cAAcyD,EAAgBG,EAAiB,CAC7C,OAAO,KAAK,UAAU,SAASH,EAAQG,CAAQ,CACjD,CAIA,UAAUC,EAAe,CACvB,OAAO,KAAK,UAAU,UAAUA,EAAW,KAAK,OAAO,CACzD,CAEA,WAAS,CACP,OAAO,KAAK,UAAU,UAAU,KAAK,OAAO,CAC9C,CAEQ,KACN9D,EACA+D,EACA7D,EACA8D,EAAkB,CAElB,IAAM/D,EAAO,KAAK,OAAO,OAAO8D,CAAY,EAC5C,OAAI7D,IAAQ,QAAa8D,IAAU,KAAK,WAAW/D,EAAK,GAAG,EAAIC,GAC/D,KAAK,UAAU,IAAIH,GAAIC,EAASC,EAAMC,CAAG,CAAC,EACnCD,CACT,CAGA,MAAM8D,EAA6B7D,EAAe+D,EAAmB,CACnE,OAAO,KAAK,KAAKzE,GAAA,SAAS,MAAOuE,EAAc7D,EAAK+D,CAAS,CAC/D,CAGA,IAAIF,EAA6B7D,EAAgB+D,EAAmB,CAClE,OAAO,KAAK,KAAKzE,GAAA,SAAS,IAAKuE,EAAc7D,EAAK+D,CAAS,CAC7D,CAGA,IAAIF,EAA6B7D,EAAgB+D,EAAmB,CAClE,OAAO,KAAK,KAAKzE,GAAA,SAAS,IAAKuE,EAAc7D,EAAK+D,CAAS,CAC7D,CAGA,OAAOxD,EAAWP,EAAeQ,EAAqB,CACpD,OAAO,KAAK,UAAU,IAAIF,GAAOC,EAAKP,EAAKQ,CAAW,CAAC,CACzD,CAGA,IAAID,EAAWP,EAAa,CAC1B,OAAO,KAAK,UAAU,IAAIU,GAASH,EAAKf,GAAA,UAAU,IAAKQ,CAAG,CAAC,CAC7D,CAGA,KAAKgE,EAAmB,CACtB,OAAI,OAAOA,GAAK,WAAYA,EAAC,EACpBA,IAAM3E,GAAA,KAAK,KAAK,UAAU,IAAI4B,GAAQ+C,CAAC,CAAC,EAC1C,IACT,CAGA,UAAUC,EAA+C,CACvD,IAAM/C,EAAmB,CAAC,GAAG,EAC7B,OAAW,CAACgD,EAAKR,CAAK,IAAKO,EACrB/C,EAAK,OAAS,GAAGA,EAAK,KAAK,GAAG,EAClCA,EAAK,KAAKgD,CAAG,GACTA,IAAQR,GAAS,KAAK,KAAK,OAC7BxC,EAAK,KAAK,GAAG,KACb7B,GAAA,YAAW6B,EAAMwC,CAAK,GAG1B,OAAAxC,EAAK,KAAK,GAAG,EACN,IAAI7B,GAAA,MAAM6B,CAAI,CACvB,CAGA,GAAGa,EAA2BoC,EAAkBC,EAAgB,CAG9D,GAFA,KAAK,WAAW,IAAIvC,GAAGE,CAAS,CAAC,EAE7BoC,GAAYC,EACd,KAAK,KAAKD,CAAQ,EAAE,KAAI,EAAG,KAAKC,CAAQ,EAAE,MAAK,UACtCD,EACT,KAAK,KAAKA,CAAQ,EAAE,MAAK,UAChBC,EACT,MAAM,IAAI,MAAM,0CAA0C,EAE5D,OAAO,IACT,CAGA,OAAOrC,EAAyB,CAC9B,OAAO,KAAK,UAAU,IAAIF,GAAGE,CAAS,CAAC,CACzC,CAGA,MAAI,CACF,OAAO,KAAK,UAAU,IAAIH,EAAM,CAClC,CAGA,OAAK,CACH,OAAO,KAAK,cAAcC,GAAID,EAAI,CACpC,CAEQ,KAAKyC,EAAWC,EAAe,CACrC,YAAK,WAAWD,CAAI,EAChBC,GAAS,KAAK,KAAKA,CAAO,EAAE,OAAM,EAC/B,IACT,CAGA,IAAI/B,EAAiB+B,EAAe,CAClC,OAAO,KAAK,KAAK,IAAIhC,GAAQC,CAAS,EAAG+B,CAAO,CAClD,CAGA,SACET,EACApB,EACAC,EACA4B,EACAxE,EAAgB,KAAK,KAAK,IAAMR,GAAA,SAAS,IAAMA,GAAA,SAAS,IAAG,CAE3D,IAAMS,EAAO,KAAK,OAAO,OAAO8D,CAAY,EAC5C,OAAO,KAAK,KAAK,IAAIrB,GAAS1C,EAASC,EAAM0C,EAAMC,CAAE,EAAG,IAAM4B,EAAQvE,CAAI,CAAC,CAC7E,CAGA,MACE8D,EACAhB,EACAyB,EACAxE,EAAgBR,GAAA,SAAS,MAAK,CAE9B,IAAMS,EAAO,KAAK,OAAO,OAAO8D,CAAY,EAC5C,GAAI,KAAK,KAAK,IAAK,CACjB,IAAMU,EAAM1B,aAAoBxD,GAAA,KAAOwD,EAAW,KAAK,IAAI,OAAQA,CAAQ,EAC3E,OAAO,KAAK,SAAS,KAAM,KAAGxD,GAAA,KAAIkF,CAAG,UAAYjD,GAAK,CACpD,KAAK,IAAIvB,KAAMV,GAAA,KAAIkF,CAAG,IAAIjD,CAAC,GAAG,EAC9BgD,EAAQvE,CAAI,CACd,CAAC,CACH,CACA,OAAO,KAAK,KAAK,IAAI4C,GAAQ,KAAM7C,EAASC,EAAM8C,CAAQ,EAAG,IAAMyB,EAAQvE,CAAI,CAAC,CAClF,CAIA,MACE8D,EACAW,EACAF,EACAxE,EAAgB,KAAK,KAAK,IAAMR,GAAA,SAAS,IAAMA,GAAA,SAAS,MAAK,CAE7D,GAAI,KAAK,KAAK,cACZ,OAAO,KAAK,MAAMuE,KAAcxE,GAAA,iBAAgBmF,CAAG,IAAKF,CAAO,EAEjE,IAAMvE,EAAO,KAAK,OAAO,OAAO8D,CAAY,EAC5C,OAAO,KAAK,KAAK,IAAIlB,GAAQ,KAAM7C,EAASC,EAAMyE,CAAG,EAAG,IAAMF,EAAQvE,CAAI,CAAC,CAC7E,CAGA,QAAM,CACJ,OAAO,KAAK,cAAcsC,EAAG,CAC/B,CAGA,MAAMxB,EAAW,CACf,OAAO,KAAK,UAAU,IAAID,GAAMC,CAAK,CAAC,CACxC,CAGA,MAAMA,EAAY,CAChB,OAAO,KAAK,UAAU,IAAIC,GAAMD,CAAK,CAAC,CACxC,CAGA,OAAO6C,EAAuB,CAC5B,IAAMW,EAAO,IAAIpB,GAGjB,GAFA,KAAK,WAAWoB,CAAI,EACpB,KAAK,KAAKX,CAAK,EACXW,EAAK,MAAM,SAAW,EAAG,MAAM,IAAI,MAAM,wCAAwC,EACrF,OAAO,KAAK,cAAcpB,EAAM,CAClC,CAGA,IAAIwB,EAAgBC,EAA+BC,EAAmB,CACpE,GAAI,CAACD,GAAa,CAACC,EAAa,MAAM,IAAI,MAAM,8CAA8C,EAC9F,IAAMN,EAAO,IAAInB,GAGjB,GAFA,KAAK,WAAWmB,CAAI,EACpB,KAAK,KAAKI,CAAO,EACbC,EAAW,CACb,IAAM1D,EAAQ,KAAK,KAAK,GAAG,EAC3B,KAAK,UAAYqD,EAAK,MAAQ,IAAIjB,GAAMpC,CAAK,EAC7C0D,EAAU1D,CAAK,CACjB,CACA,OAAI2D,IACF,KAAK,UAAYN,EAAK,QAAU,IAAIhB,GACpC,KAAK,KAAKsB,CAAW,GAEhB,KAAK,cAAcvB,GAAOC,EAAO,CAC1C,CAGA,MAAMrC,EAAW,CACf,OAAO,KAAK,UAAU,IAAID,GAAMC,CAAK,CAAC,CACxC,CAGA,MAAM4D,EAAcC,EAAkB,CACpC,YAAK,aAAa,KAAK,KAAK,OAAO,MAAM,EACrCD,GAAM,KAAK,KAAKA,CAAI,EAAE,SAASC,CAAS,EACrC,IACT,CAGA,SAASA,EAAkB,CACzB,IAAMC,EAAM,KAAK,aAAa,IAAG,EACjC,GAAIA,IAAQ,OAAW,MAAM,IAAI,MAAM,sCAAsC,EAC7E,IAAMC,EAAU,KAAK,OAAO,OAASD,EACrC,GAAIC,EAAU,GAAMF,IAAc,QAAaE,IAAYF,EACzD,MAAM,IAAI,MAAM,mCAAmCE,CAAO,OAAOF,CAAS,WAAW,EAEvF,YAAK,OAAO,OAASC,EACd,IACT,CAGA,KAAK/E,EAAYgD,EAAa1D,GAAA,IAAK2D,EAAiBgC,EAAgB,CAClE,YAAK,WAAW,IAAIlC,GAAK/C,EAAMgD,EAAMC,CAAK,CAAC,EACvCgC,GAAU,KAAK,KAAKA,CAAQ,EAAE,QAAO,EAClC,IACT,CAGA,SAAO,CACL,OAAO,KAAK,cAAclC,EAAI,CAChC,CAEA,SAASvB,EAAI,EAAC,CACZ,KAAOA,KAAM,GACX,KAAK,MAAM,cAAa,EACxB,KAAK,MAAM,cAAc,KAAK,MAAM,MAAO,KAAK,UAAU,CAE9D,CAEQ,UAAU8C,EAAc,CAC9B,YAAK,UAAU,MAAM,KAAKA,CAAI,EACvB,IACT,CAEQ,WAAWA,EAAoB,CACrC,KAAK,UAAU,MAAM,KAAKA,CAAI,EAC9B,KAAK,OAAO,KAAKA,CAAI,CACvB,CAEQ,cAAcY,EAAsBC,EAAqB,CAC/D,IAAM,EAAI,KAAK,UACf,GAAI,aAAaD,GAAOC,GAAM,aAAaA,EACzC,YAAK,OAAO,IAAG,EACR,KAET,MAAM,IAAI,MAAM,0BAA0BA,EAAK,GAAGD,EAAG,IAAI,IAAIC,EAAG,IAAI,GAAKD,EAAG,IAAI,GAAG,CACrF,CAEQ,UAAUZ,EAAe,CAC/B,IAAM9C,EAAI,KAAK,UACf,GAAI,EAAEA,aAAaM,IACjB,MAAM,IAAI,MAAM,8BAA8B,EAEhD,YAAK,UAAYN,EAAE,KAAO8C,EACnB,IACT,CAEA,IAAY,OAAK,CACf,OAAO,KAAK,OAAO,CAAC,CACtB,CAEA,IAAY,WAAS,CACnB,IAAMnC,EAAK,KAAK,OAChB,OAAOA,EAAGA,EAAG,OAAS,CAAC,CACzB,CAEA,IAAY,UAAUmC,EAAgB,CACpC,IAAMnC,EAAK,KAAK,OAChBA,EAAGA,EAAG,OAAS,CAAC,EAAImC,CACtB,GAjUF7E,GAAA,QAAA8D,GAwUA,SAAS7B,GAAStB,EAAkBsC,EAAe,CACjD,QAAWlB,KAAKkB,EAAMtC,EAAMoB,CAAC,GAAKpB,EAAMoB,CAAC,GAAK,IAAMkB,EAAKlB,CAAC,GAAK,GAC/D,OAAOpB,CACT,CAEA,SAASM,GAAaN,EAAkBsC,EAAc,CACpD,OAAOA,aAAgBpD,GAAA,YAAcoC,GAAStB,EAAOsC,EAAK,KAAK,EAAItC,CACrE,CAGA,SAASE,GAAa8E,EAAgBhF,EAAkBC,EAAoB,CAC1E,GAAI+E,aAAgB9F,GAAA,KAAM,OAAO+F,EAAYD,CAAI,EACjD,GAAI,CAACE,EAAYF,CAAI,EAAG,OAAOA,EAC/B,OAAO,IAAI9F,GAAA,MACT8F,EAAK,OAAO,OAAO,CAACG,EAAmBtB,KACjCA,aAAa3E,GAAA,OAAM2E,EAAIoB,EAAYpB,CAAC,GACpCA,aAAa3E,GAAA,MAAOiG,EAAM,KAAK,GAAGtB,EAAE,MAAM,EACzCsB,EAAM,KAAKtB,CAAC,EACVsB,GACN,CAAA,CAAE,CAAC,EAGR,SAASF,EAAY7D,EAAO,CAC1B,IAAMyC,EAAI5D,EAAUmB,EAAE,GAAG,EACzB,OAAIyC,IAAM,QAAa7D,EAAMoB,EAAE,GAAG,IAAM,EAAUA,GAClD,OAAOpB,EAAMoB,EAAE,GAAG,EACXyC,EACT,CAEA,SAASqB,EAAYpD,EAAW,CAC9B,OACEA,aAAa5C,GAAA,OACb4C,EAAE,OAAO,KACN+B,GAAMA,aAAa3E,GAAA,MAAQc,EAAM6D,EAAE,GAAG,IAAM,GAAK5D,EAAU4D,EAAE,GAAG,IAAM,MAAS,CAGtF,CACF,CAEA,SAASxC,GAAcrB,EAAkBsC,EAAe,CACtD,QAAWlB,KAAKkB,EAAMtC,EAAMoB,CAAC,GAAKpB,EAAMoB,CAAC,GAAK,IAAMkB,EAAKlB,CAAC,GAAK,EACjE,CAGA,SAAgBY,GAAIoD,EAAkB,CACpC,OAAO,OAAOA,GAAK,WAAa,OAAOA,GAAK,UAAYA,IAAM,KAAO,CAACA,KAAIlG,GAAA,MAAKmG,GAAID,CAAC,CAAC,EACvF,CAFA/F,GAAA,IAAA2C,GAIA,IAAMsD,GAAUC,GAAQlG,GAAA,UAAU,GAAG,EAGrC,SAAgBmG,MAAO5C,EAAY,CACjC,OAAOA,EAAK,OAAO0C,EAAO,CAC5B,CAFAjG,GAAA,IAAAmG,GAIA,IAAMC,GAASF,GAAQlG,GAAA,UAAU,EAAE,EAGnC,SAAgBqG,MAAM9C,EAAY,CAChC,OAAOA,EAAK,OAAO6C,EAAM,CAC3B,CAFApG,GAAA,GAAAqG,GAMA,SAASH,GAAQ/E,EAAQ,CACvB,MAAO,CAAC4E,EAAGO,IAAOP,IAAMlG,GAAA,IAAMyG,EAAIA,IAAMzG,GAAA,IAAMkG,KAAIlG,GAAA,KAAImG,GAAID,CAAC,CAAC,IAAI5E,CAAE,IAAI6E,GAAIM,CAAC,CAAC,EAC9E,CAEA,SAASN,GAAID,EAAO,CAClB,OAAOA,aAAalG,GAAA,KAAOkG,KAAIlG,GAAA,MAAKkG,CAAC,GACvC,kaCj1BA,IAAAQ,GAAA,KACAC,GAAA,KAIA,SAAgBC,GAAkCC,EAAQ,CACxD,IAAMC,EAA0B,CAAA,EAChC,QAAWC,KAAQF,EAAKC,EAAKC,CAAI,EAAI,GACrC,OAAOD,CACT,CAJAE,GAAA,OAAAJ,GAMA,SAAgBK,GAAkBC,EAAeC,EAAiB,CAChE,OAAI,OAAOA,GAAU,UAAkBA,EACnC,OAAO,KAAKA,CAAM,EAAE,SAAW,EAAU,IAC7CC,GAAkBF,EAAIC,CAAM,EACrB,CAACE,GAAeF,EAAQD,EAAG,KAAK,MAAM,GAAG,EAClD,CALAF,GAAA,kBAAAC,GAOA,SAAgBG,GAAkBF,EAAeC,EAAoBD,EAAG,OAAM,CAC5E,GAAM,CAAC,KAAAI,EAAM,KAAAC,CAAI,EAAIL,EAErB,GADI,CAACI,EAAK,cACN,OAAOH,GAAW,UAAW,OACjC,IAAMK,EAAQD,EAAK,MAAM,SACzB,QAAWE,KAAON,EACXK,EAAMC,CAAG,GAAGC,GAAgBR,EAAI,qBAAqBO,CAAG,GAAG,CAEpE,CARAT,GAAA,kBAAAI,GAUA,SAAgBC,GACdF,EACAK,EAAyC,CAEzC,GAAI,OAAOL,GAAU,UAAW,MAAO,CAACA,EACxC,QAAWM,KAAON,EAAQ,GAAIK,EAAMC,CAAG,EAAG,MAAO,GACjD,MAAO,EACT,CAPAT,GAAA,eAAAK,GASA,SAAgBM,GAAqBR,EAAmBS,EAAsB,CAC5E,GAAI,OAAOT,GAAU,UAAW,MAAO,CAACA,EACxC,QAAWM,KAAON,EAAQ,GAAIM,IAAQ,QAAUG,EAAM,IAAIH,CAAG,EAAG,MAAO,GACvE,MAAO,EACT,CAJAT,GAAA,qBAAAW,GAMA,SAAgBE,GACd,CAAC,aAAAC,EAAc,WAAAC,CAAU,EACzBZ,EACAa,EACAC,EAAsB,CAEtB,GAAI,CAACA,EAAO,CACV,GAAI,OAAOd,GAAU,UAAY,OAAOA,GAAU,UAAW,OAAOA,EACpE,GAAI,OAAOA,GAAU,SAAU,SAAOT,GAAA,KAAIS,CAAM,EAClD,CACA,SAAOT,GAAA,KAAIoB,CAAY,GAAGC,CAAU,MAAGrB,GAAA,aAAYsB,CAAO,CAAC,EAC7D,CAXAhB,GAAA,eAAAa,GAaA,SAAgBK,GAAiBC,EAAW,CAC1C,OAAOC,GAAoB,mBAAmBD,CAAG,CAAC,CACpD,CAFAnB,GAAA,iBAAAkB,GAIA,SAAgBG,GAAeF,EAAoB,CACjD,OAAO,mBAAmBG,GAAkBH,CAAG,CAAC,CAClD,CAFAnB,GAAA,eAAAqB,GAIA,SAAgBC,GAAkBH,EAAoB,CACpD,OAAI,OAAOA,GAAO,SAAiB,GAAGA,CAAG,GAClCA,EAAI,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,IAAI,CACpD,CAHAnB,GAAA,kBAAAsB,GAKA,SAAgBF,GAAoBD,EAAW,CAC7C,OAAOA,EAAI,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,CACnD,CAFAnB,GAAA,oBAAAoB,GAIA,SAAgBG,GAAYC,EAAaC,EAAiB,CACxD,GAAI,MAAM,QAAQD,CAAE,EAClB,QAAWE,KAAKF,EAAIC,EAAEC,CAAC,OAEvBD,EAAED,CAAE,CAER,CANAxB,GAAA,SAAAuB,GAwBA,SAASI,GAA4C,CACnD,WAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,CAAY,EACS,CACrB,MAAO,CAACC,EAAKC,EAAMC,EAAIC,IAAU,CAC/B,IAAMC,EACJF,IAAO,OACHD,EACAC,aAAcxC,GAAA,MACbuC,aAAgBvC,GAAA,KAAOkC,EAAWI,EAAKC,EAAMC,CAAE,EAAIL,EAAYG,EAAKC,EAAMC,CAAE,EAAGA,GAChFD,aAAgBvC,GAAA,MACfmC,EAAYG,EAAKE,EAAID,CAAI,EAAGA,GAC7BH,EAAYG,EAAMC,CAAE,EAC1B,OAAOC,IAAWzC,GAAA,MAAQ,EAAE0C,aAAe1C,GAAA,MAAQqC,EAAaC,EAAKI,CAAG,EAAIA,CAC9E,CACF,CAOapC,GAAA,eAAiC,CAC5C,MAAO2B,GAAmB,CACxB,WAAY,CAACK,EAAKC,EAAMC,IACtBF,EAAI,MAAGtC,GAAA,KAAIwC,CAAE,gBAAgBD,CAAI,iBAAkB,IAAK,CACtDD,EAAI,MACFtC,GAAA,KAAIuC,CAAI,YACR,IAAMD,EAAI,OAAOE,EAAI,EAAI,EACzB,IAAMF,EAAI,OAAOE,KAAIxC,GAAA,KAAIwC,CAAE,QAAQ,EAAE,QAAKxC,GAAA,mBAAkBwC,CAAE,KAAKD,CAAI,GAAG,CAAC,CAE/E,CAAC,EACH,YAAa,CAACD,EAAKC,EAAMC,IACvBF,EAAI,MAAGtC,GAAA,KAAIwC,CAAE,YAAa,IAAK,CACzBD,IAAS,GACXD,EAAI,OAAOE,EAAI,EAAI,GAEnBF,EAAI,OAAOE,KAAIxC,GAAA,KAAIwC,CAAE,QAAQ,EAC7BG,GAAaL,EAAKE,EAAID,CAAI,EAE9B,CAAC,EACH,YAAa,CAACA,EAAMC,IAAQD,IAAS,GAAO,GAAO,CAAC,GAAGA,EAAM,GAAGC,CAAE,EAClE,aAAcI,GACf,EACD,MAAOX,GAAmB,CACxB,WAAY,CAACK,EAAKC,EAAMC,IACtBF,EAAI,MAAGtC,GAAA,KAAIwC,CAAE,gBAAgBD,CAAI,iBAAkB,IACjDD,EAAI,OAAOE,KAAIxC,GAAA,KAAIuC,CAAI,sBAAsBC,CAAE,MAAMD,CAAI,MAAMC,CAAE,MAAMD,CAAI,EAAE,CAAC,EAElF,YAAa,CAACD,EAAKC,EAAMC,IACvBF,EAAI,MAAGtC,GAAA,KAAIwC,CAAE,YAAa,IACxBF,EAAI,OAAOE,EAAID,IAAS,GAAO,MAAOvC,GAAA,KAAIwC,CAAE,MAAMD,CAAI,MAAMC,CAAE,MAAMD,CAAI,EAAE,CAAC,EAE/E,YAAa,CAACA,EAAMC,IAAQD,IAAS,GAAO,GAAO,KAAK,IAAIA,EAAMC,CAAE,EACpE,aAAc,CAACF,EAAKO,IAAUP,EAAI,IAAI,QAASO,CAAK,EACrD,GAGH,SAAgBD,GAAqBN,EAAcQ,EAAwB,CACzE,GAAIA,IAAO,GAAM,OAAOR,EAAI,IAAI,QAAS,EAAI,EAC7C,IAAMS,EAAQT,EAAI,IAAI,WAAStC,GAAA,MAAK,EACpC,OAAI8C,IAAO,QAAWH,GAAaL,EAAKS,EAAOD,CAAE,EAC1CC,CACT,CALAzC,GAAA,qBAAAsC,GAOA,SAAgBD,GAAaL,EAAcS,EAAaD,EAA0B,CAChF,OAAO,KAAKA,CAAE,EAAE,QAASE,GAAMV,EAAI,UAAOtC,GAAA,KAAI+C,CAAK,MAAG/C,GAAA,aAAYgD,CAAC,CAAC,GAAI,EAAI,CAAC,CAC/E,CAFA1C,GAAA,aAAAqC,GAIA,IAAMM,GAAoC,CAAA,EAE1C,SAAgBC,GAAQZ,EAAcP,EAAiB,CACrD,OAAOO,EAAI,WAAW,OAAQ,CAC5B,IAAKP,EACL,KAAMkB,GAASlB,EAAE,IAAI,IAAMkB,GAASlB,EAAE,IAAI,EAAI,IAAI9B,GAAA,MAAM8B,EAAE,IAAI,GAC/D,CACH,CALAzB,GAAA,QAAA4C,GAOA,IAAYC,IAAZ,SAAYA,EAAI,CACdA,EAAAA,EAAA,IAAA,CAAA,EAAA,MACAA,EAAAA,EAAA,IAAA,CAAA,EAAA,KACF,GAHYA,KAAI7C,GAAA,KAAJ6C,GAAI,CAAA,EAAA,EAKhB,SAAgBC,GACdC,EACAC,EACAC,EAA0B,CAG1B,GAAIF,aAAoBrD,GAAA,KAAM,CAC5B,IAAMwD,EAAWF,IAAiBH,GAAK,IACvC,OAAOI,EACHC,KACExD,GAAA,WAAUqD,CAAQ,YAClBrD,GAAA,YAAWqD,CAAQ,UACrBG,KACAxD,GAAA,WAAUqD,CAAQ,MAClBrD,GAAA,WAAUqD,CAAQ,4CACxB,CACA,OAAOE,KAAmBvD,GAAA,aAAYqD,CAAQ,EAAE,SAAQ,EAAK,IAAMzB,GAAkByB,CAAQ,CAC/F,CAjBA/C,GAAA,aAAA8C,GAmBA,SAAgBpC,GACdR,EACAiD,EACAC,EAAwBlD,EAAG,KAAK,aAAY,CAE5C,GAAKkD,EAEL,IADAD,EAAM,gBAAgBA,CAAG,GACrBC,IAAS,GAAM,MAAM,IAAI,MAAMD,CAAG,EACtCjD,EAAG,KAAK,OAAO,KAAKiD,CAAG,EACzB,CATAnD,GAAA,gBAAAU,8FC3MA,IAAA2C,GAAA,KAEMC,GAAQ,CAEZ,KAAM,IAAID,GAAA,KAAK,MAAM,EAErB,OAAQ,IAAIA,GAAA,KAAK,QAAQ,EACzB,aAAc,IAAIA,GAAA,KAAK,cAAc,EACrC,WAAY,IAAIA,GAAA,KAAK,YAAY,EACjC,mBAAoB,IAAIA,GAAA,KAAK,oBAAoB,EACjD,SAAU,IAAIA,GAAA,KAAK,UAAU,EAC7B,eAAgB,IAAIA,GAAA,KAAK,gBAAgB,EAEzC,QAAS,IAAIA,GAAA,KAAK,SAAS,EAC3B,OAAQ,IAAIA,GAAA,KAAK,QAAQ,EACzB,KAAM,IAAIA,GAAA,KAAK,MAAM,EAErB,KAAM,IAAIA,GAAA,KAAK,MAAM,EACrB,MAAO,IAAIA,GAAA,KAAK,OAAO,EAEvB,KAAM,IAAIA,GAAA,KAAK,MAAM,EACrB,QAAS,IAAIA,GAAA,KAAK,SAAS,EAC3B,QAAS,IAAIA,GAAA,KAAK,SAAS,EAC3B,SAAU,IAAIA,GAAA,KAAK,UAAU,GAG/BE,GAAA,QAAeD,iNCxBf,IAAAE,GAAA,KAEAC,GAAA,KACAC,GAAA,KAEaC,GAAA,aAAuC,CAClD,QAAS,CAAC,CAAC,QAAAC,CAAO,OAAMJ,GAAA,kBAAiBI,CAAO,wBAGrCD,GAAA,kBAA4C,CACvD,QAAS,CAAC,CAAC,QAAAC,EAAS,WAAAC,CAAU,IAC5BA,KACIL,GAAA,QAAOI,CAAO,qBAAqBC,CAAU,cAC7CL,GAAA,QAAOI,CAAO,gCAStB,SAAgBE,GACdC,EACAC,EAAgCL,GAAA,aAChCM,EACAC,EAA2B,CAE3B,GAAM,CAAC,GAAAC,CAAE,EAAIJ,EACP,CAAC,IAAAK,EAAK,cAAAC,EAAe,UAAAC,CAAS,EAAIH,EAClCI,EAASC,GAAgBT,EAAKC,EAAOC,CAAU,EACjDC,IAAsBG,GAAiBC,GACzCG,GAASL,EAAKG,CAAM,EAEpBG,GAAaP,KAAIX,GAAA,MAAKe,CAAM,GAAG,CAEnC,CAdAZ,GAAA,YAAAG,GAgBA,SAAgBa,GACdZ,EACAC,EAAgCL,GAAA,aAChCM,EAAuB,CAEvB,GAAM,CAAC,GAAAE,CAAE,EAAIJ,EACP,CAAC,IAAAK,EAAK,cAAAC,EAAe,UAAAC,CAAS,EAAIH,EAClCI,EAASC,GAAgBT,EAAKC,EAAOC,CAAU,EACrDQ,GAASL,EAAKG,CAAM,EACdF,GAAiBC,GACrBI,GAAaP,EAAIT,GAAA,QAAE,OAAO,CAE9B,CAZAC,GAAA,iBAAAgB,GAcA,SAAgBC,GAAiBR,EAAcS,EAAe,CAC5DT,EAAI,OAAOV,GAAA,QAAE,OAAQmB,CAAS,EAC9BT,EAAI,MAAGZ,GAAA,KAAIE,GAAA,QAAE,OAAO,YAAa,IAC/BU,EAAI,GACFS,EACA,IAAMT,EAAI,UAAOZ,GAAA,KAAIE,GAAA,QAAE,OAAO,UAAWmB,CAAS,EAClD,IAAMT,EAAI,OAAOV,GAAA,QAAE,QAAS,IAAI,CAAC,CAClC,CAEL,CATAC,GAAA,iBAAAiB,GAWA,SAAgBE,GAAa,CAC3B,IAAAV,EACA,QAAAR,EACA,YAAAmB,EACA,KAAAC,EACA,UAAAH,EACA,GAAAV,CAAE,EACc,CAEhB,GAAIU,IAAc,OAAW,MAAM,IAAI,MAAM,0BAA0B,EACvE,IAAMI,EAAMb,EAAI,KAAK,KAAK,EAC1BA,EAAI,SAAS,IAAKS,EAAWnB,GAAA,QAAE,OAASwB,GAAK,CAC3Cd,EAAI,MAAMa,KAAKzB,GAAA,KAAIE,GAAA,QAAE,OAAO,IAAIwB,CAAC,GAAG,EACpCd,EAAI,MAAGZ,GAAA,KAAIyB,CAAG,8BAA+B,IAC3Cb,EAAI,UAAOZ,GAAA,KAAIyB,CAAG,mBAAiBzB,GAAA,WAAUE,GAAA,QAAE,aAAcS,EAAG,SAAS,CAAC,CAAC,EAE7EC,EAAI,UAAOZ,GAAA,KAAIyB,CAAG,iBAAezB,GAAA,OAAMW,EAAG,aAAa,IAAIP,CAAO,EAAE,EAChEO,EAAG,KAAK,UACVC,EAAI,UAAOZ,GAAA,KAAIyB,CAAG,UAAWF,CAAW,EACxCX,EAAI,UAAOZ,GAAA,KAAIyB,CAAG,QAASD,CAAI,EAEnC,CAAC,CACH,CAtBArB,GAAA,aAAAmB,GAwBA,SAASL,GAASL,EAAcG,EAAY,CAC1C,IAAMU,EAAMb,EAAI,MAAM,MAAOG,CAAM,EACnCH,EAAI,MACFZ,GAAA,KAAIE,GAAA,QAAE,OAAO,YACb,IAAMU,EAAI,OAAOV,GAAA,QAAE,WAASF,GAAA,MAAKyB,CAAG,GAAG,KACvCzB,GAAA,KAAIE,GAAA,QAAE,OAAO,SAASuB,CAAG,GAAG,EAE9Bb,EAAI,QAAKZ,GAAA,KAAIE,GAAA,QAAE,MAAM,IAAI,CAC3B,CAEA,SAASgB,GAAaP,EAAegB,EAAU,CAC7C,GAAM,CAAC,IAAAf,EAAK,aAAAgB,EAAc,UAAAC,CAAS,EAAIlB,EACnCkB,EAAU,OACZjB,EAAI,SAAMZ,GAAA,SAAQW,EAAG,eAAuB,IAAIgB,CAAI,GAAG,GAEvDf,EAAI,UAAOZ,GAAA,KAAI4B,CAAY,UAAWD,CAAI,EAC1Cf,EAAI,OAAO,EAAK,EAEpB,CAEA,IAAMkB,GAAI,CACR,QAAS,IAAI9B,GAAA,KAAK,SAAS,EAC3B,WAAY,IAAIA,GAAA,KAAK,YAAY,EACjC,OAAQ,IAAIA,GAAA,KAAK,QAAQ,EACzB,aAAc,IAAIA,GAAA,KAAK,cAAc,EACrC,QAAS,IAAIA,GAAA,KAAK,SAAS,EAC3B,OAAQ,IAAIA,GAAA,KAAK,QAAQ,EACzB,aAAc,IAAIA,GAAA,KAAK,cAAc,GAGvC,SAASgB,GACPT,EACAC,EACAC,EAAuB,CAEvB,GAAM,CAAC,aAAAsB,CAAY,EAAIxB,EAAI,GAC3B,OAAIwB,IAAiB,MAAc/B,GAAA,OAC5BgC,GAAYzB,EAAKC,EAAOC,CAAU,CAC3C,CAEA,SAASuB,GACPzB,EACAC,EACAC,EAAyB,CAAA,EAAE,CAE3B,GAAM,CAAC,IAAAG,EAAK,GAAAD,CAAE,EAAIJ,EACZ0B,EAAyC,CAC7CC,GAAkBvB,EAAIF,CAAU,EAChC0B,GAAgB5B,EAAKE,CAAU,GAEjC,OAAA2B,GAAgB7B,EAAKC,EAAOyB,CAAS,EAC9BrB,EAAI,OAAO,GAAGqB,CAAS,CAChC,CAEA,SAASC,GAAkB,CAAC,UAAAG,CAAS,EAAc,CAAC,aAAAC,CAAY,EAAa,CAC3E,IAAMC,EAAWD,KACbtC,GAAA,OAAMqC,CAAS,MAAGpC,GAAA,cAAaqC,EAAcrC,GAAA,KAAK,GAAG,CAAC,GACtDoC,EACJ,MAAO,CAACnC,GAAA,QAAE,gBAAcF,GAAA,WAAUE,GAAA,QAAE,aAAcqC,CAAQ,CAAC,CAC7D,CAEA,SAASJ,GACP,CAAC,QAAA/B,EAAS,GAAI,CAAC,cAAAoC,CAAa,CAAC,EAC7B,CAAC,WAAAC,EAAY,aAAAC,CAAY,EAAa,CAEtC,IAAIC,EAAUD,EAAeF,KAAgBxC,GAAA,OAAMwC,CAAa,IAAIpC,CAAO,GAC3E,OAAIqC,IACFE,KAAU3C,GAAA,OAAM2C,CAAO,MAAG1C,GAAA,cAAawC,EAAYxC,GAAA,KAAK,GAAG,CAAC,IAEvD,CAAC6B,GAAE,WAAYa,CAAO,CAC/B,CAEA,SAASP,GACP7B,EACA,CAAC,OAAAqC,EAAQ,QAAAC,CAAO,EAChBZ,EAAsC,CAEtC,GAAM,CAAC,QAAA7B,EAAS,KAAAoB,EAAM,YAAAD,EAAa,GAAAZ,CAAE,EAAIJ,EACnC,CAAC,KAAAuC,EAAM,aAAAC,EAAc,aAAAC,EAAc,WAAAP,CAAU,EAAI9B,EACvDsB,EAAU,KACR,CAACH,GAAE,QAAS1B,CAAO,EACnB,CAAC0B,GAAE,OAAQ,OAAOc,GAAU,WAAaA,EAAOrC,CAAG,EAAIqC,MAAU5C,GAAA,MAAK,CAAC,EAErE8C,EAAK,UACPb,EAAU,KAAK,CAACH,GAAE,QAAS,OAAOe,GAAW,WAAaA,EAAQtC,CAAG,EAAIsC,CAAO,CAAC,EAE/EC,EAAK,SACPb,EAAU,KACR,CAACH,GAAE,OAAQP,CAAW,EACtB,CAACO,GAAE,gBAAc9B,GAAA,KAAIgD,CAAY,GAAGP,CAAU,EAAE,EAChD,CAACvC,GAAA,QAAE,KAAMsB,CAAI,CAAC,EAGduB,GAAcd,EAAU,KAAK,CAACH,GAAE,aAAciB,CAAY,CAAC,CACjE,iJCrLA,IAAAE,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAAoC,CACxC,QAAS,2BAGX,SAAgBC,GAAqBC,EAAa,CAChD,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,aAAAC,CAAY,EAAIH,EAChCE,IAAW,GACbE,GAAiBJ,EAAI,EAAK,EACjB,OAAOE,GAAU,UAAYA,EAAO,SAAW,GACxDD,EAAI,OAAOJ,GAAA,QAAE,IAAI,GAEjBI,EAAI,UAAOL,GAAA,KAAIO,CAAY,UAAW,IAAI,EAC1CF,EAAI,OAAO,EAAI,EAEnB,CAVAI,GAAA,qBAAAN,GAYA,SAAgBO,GAAkBN,EAAeO,EAAW,CAC1D,GAAM,CAAC,IAAAN,EAAK,OAAAC,CAAM,EAAIF,EAClBE,IAAW,IACbD,EAAI,IAAIM,EAAO,EAAK,EACpBH,GAAiBJ,CAAE,GAEnBC,EAAI,IAAIM,EAAO,EAAI,CAEvB,CARAF,GAAA,kBAAAC,GAUA,SAASF,GAAiBJ,EAAeQ,EAA2B,CAClE,GAAM,CAAC,IAAAP,EAAK,KAAAQ,CAAI,EAAIT,EAEdU,EAAuB,CAC3B,IAAAT,EACA,QAAS,eACT,KAAAQ,EACA,OAAQ,GACR,WAAY,GACZ,YAAa,GACb,OAAQ,CAAA,EACR,GAAAT,MAEFL,GAAA,aAAYe,EAAKZ,GAAW,OAAWU,CAAiB,CAC1D,8HC5CA,IAAMG,GAAa,CAAC,SAAU,SAAU,UAAW,UAAW,OAAQ,SAAU,OAAO,EAIjFC,GAAyB,IAAI,IAAID,EAAU,EAEjD,SAAgBE,GAAWC,EAAU,CACnC,OAAO,OAAOA,GAAK,UAAYF,GAAU,IAAIE,CAAC,CAChD,CAFAC,GAAA,WAAAF,GA2BA,SAAgBG,IAAQ,CACtB,IAAMC,EAAsE,CAC1E,OAAQ,CAAC,KAAM,SAAU,MAAO,CAAA,CAAE,EAClC,OAAQ,CAAC,KAAM,SAAU,MAAO,CAAA,CAAE,EAClC,MAAO,CAAC,KAAM,QAAS,MAAO,CAAA,CAAE,EAChC,OAAQ,CAAC,KAAM,SAAU,MAAO,CAAA,CAAE,GAEpC,MAAO,CACL,MAAO,CAAC,GAAGA,EAAQ,QAAS,GAAM,QAAS,GAAM,KAAM,EAAI,EAC3D,MAAO,CAAC,CAAC,MAAO,CAAA,CAAE,EAAGA,EAAO,OAAQA,EAAO,OAAQA,EAAO,MAAOA,EAAO,MAAM,EAC9E,KAAM,CAAC,MAAO,CAAA,CAAE,EAChB,IAAK,CAAA,EACL,SAAU,CAAA,EAEd,CAdAF,GAAA,SAAAC,iKC/BA,SAAgBE,GACd,CAAC,OAAAC,EAAQ,KAAAC,CAAI,EACbC,EAAc,CAEd,IAAMC,EAAQF,EAAK,MAAM,MAAMC,CAAI,EACnC,OAAOC,GAASA,IAAU,IAAQC,GAAeJ,EAAQG,CAAK,CAChE,CANAE,GAAA,sBAAAN,GAQA,SAAgBK,GAAeJ,EAAyBG,EAAgB,CACtE,OAAOA,EAAM,MAAM,KAAMG,GAASC,GAAcP,EAAQM,CAAI,CAAC,CAC/D,CAFAD,GAAA,eAAAD,GAIA,SAAgBG,GAAcP,EAAyBM,EAAU,OAC/D,OACEN,EAAOM,EAAK,OAAO,IAAM,UACzBE,EAAAF,EAAK,WAAW,cAAU,MAAAE,IAAA,OAAA,OAAAA,EAAE,KAAMC,GAAQT,EAAOS,CAAG,IAAM,MAAS,EAEvE,CALAJ,GAAA,cAAAE,mOCTA,IAAAG,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEYC,IAAZ,SAAYA,EAAQ,CAClBA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,OACF,GAHYA,KAAQC,GAAA,SAARD,GAAQ,CAAA,EAAA,EAKpB,SAAgBE,GAAeC,EAAuB,CACpD,IAAMC,EAAQC,GAAaF,EAAO,IAAI,EAEtC,GADgBC,EAAM,SAAS,MAAM,GAEnC,GAAID,EAAO,WAAa,GAAO,MAAM,IAAI,MAAM,wCAAwC,MAClF,CACL,GAAI,CAACC,EAAM,QAAUD,EAAO,WAAa,OACvC,MAAM,IAAI,MAAM,0CAA0C,EAExDA,EAAO,WAAa,IAAMC,EAAM,KAAK,MAAM,CACjD,CACA,OAAOA,CACT,CAZAH,GAAA,eAAAC,GAeA,SAAgBG,GAAaC,EAAuB,CAClD,IAAMF,EAAmB,MAAM,QAAQE,CAAE,EAAIA,EAAKA,EAAK,CAACA,CAAE,EAAI,CAAA,EAC9D,GAAIF,EAAM,MAAMT,GAAA,UAAU,EAAG,OAAOS,EACpC,MAAM,IAAI,MAAM,wCAA0CA,EAAM,KAAK,GAAG,CAAC,CAC3E,CAJAH,GAAA,aAAAI,GAMA,SAAgBE,GAAuBC,EAAkBJ,EAAiB,CACxE,GAAM,CAAC,IAAAK,EAAK,KAAAC,EAAM,KAAAC,CAAI,EAAIH,EACpBI,EAAWC,GAAcT,EAAOO,EAAK,WAAW,EAChDG,EACJV,EAAM,OAAS,GACf,EAAEQ,EAAS,SAAW,GAAKR,EAAM,SAAW,MAAKR,GAAA,uBAAsBY,EAAIJ,EAAM,CAAC,CAAC,GACrF,GAAIU,EAAY,CACd,IAAMC,EAAYC,GAAeZ,EAAOM,EAAMC,EAAK,cAAeX,GAAS,KAAK,EAChFS,EAAI,GAAGM,EAAW,IAAK,CACjBH,EAAS,OAAQK,GAAWT,EAAIJ,EAAOQ,CAAQ,EAC9CM,GAAgBV,CAAE,CACzB,CAAC,CACH,CACA,OAAOM,CACT,CAdAb,GAAA,uBAAAM,GAgBA,IAAMY,GAA2B,IAAI,IAAI,CAAC,SAAU,SAAU,UAAW,UAAW,MAAM,CAAC,EAC3F,SAASN,GAAcT,EAAmBgB,EAA+B,CACvE,OAAOA,EACHhB,EAAM,OAAQiB,GAAMF,GAAU,IAAIE,CAAC,GAAMD,IAAgB,SAAWC,IAAM,OAAQ,EAClF,CAAA,CACN,CAEA,SAASJ,GAAWT,EAAkBJ,EAAmBQ,EAAoB,CAC3E,GAAM,CAAC,IAAAH,EAAK,KAAAC,EAAM,KAAAC,CAAI,EAAIH,EACpBc,EAAWb,EAAI,IAAI,cAAYX,GAAA,YAAWY,CAAI,EAAE,EAChDa,EAAUd,EAAI,IAAI,aAAWX,GAAA,aAAY,EAC3Ca,EAAK,cAAgB,SACvBF,EAAI,MAAGX,GAAA,KAAIwB,CAAQ,iCAAiCZ,CAAI,QAAQA,CAAI,eAAgB,IAClFD,EACG,OAAOC,KAAMZ,GAAA,KAAIY,CAAI,KAAK,EAC1B,OAAOY,KAAUxB,GAAA,YAAWY,CAAI,EAAE,EAClC,GAAGM,GAAeZ,EAAOM,EAAMC,EAAK,aAAa,EAAG,IAAMF,EAAI,OAAOc,EAASb,CAAI,CAAC,CAAC,EAG3FD,EAAI,MAAGX,GAAA,KAAIyB,CAAO,gBAAgB,EAClC,QAAWF,KAAKT,GACVO,GAAU,IAAIE,CAAC,GAAMA,IAAM,SAAWV,EAAK,cAAgB,UAC7Da,EAAmBH,CAAC,EAGxBZ,EAAI,KAAI,EACRS,GAAgBV,CAAE,EAClBC,EAAI,MAAK,EAETA,EAAI,MAAGX,GAAA,KAAIyB,CAAO,iBAAkB,IAAK,CACvCd,EAAI,OAAOC,EAAMa,CAAO,EACxBE,GAAiBjB,EAAIe,CAAO,CAC9B,CAAC,EAED,SAASC,EAAmBH,EAAS,CACnC,OAAQA,EAAG,CACT,IAAK,SACHZ,EACG,UAAOX,GAAA,KAAIwB,CAAQ,mBAAmBA,CAAQ,eAAe,EAC7D,OAAOC,KAASzB,GAAA,UAASY,CAAI,EAAE,EAC/B,UAAOZ,GAAA,KAAIY,CAAI,WAAW,EAC1B,OAAOa,KAASzB,GAAA,MAAK,EACxB,OACF,IAAK,SACHW,EACG,UACCX,GAAA,KAAIwB,CAAQ,oBAAoBZ,CAAI;oBAC5BY,CAAQ,mBAAmBZ,CAAI,OAAOA,CAAI,QAAQA,CAAI,GAAG,EAElE,OAAOa,KAASzB,GAAA,MAAKY,CAAI,EAAE,EAC9B,OACF,IAAK,UACHD,EACG,UACCX,GAAA,KAAIwB,CAAQ,qBAAqBZ,CAAI;oBAC7BY,CAAQ,oBAAoBZ,CAAI,OAAOA,CAAI,QAAQA,CAAI,SAASA,CAAI,QAAQ,EAErF,OAAOa,KAASzB,GAAA,MAAKY,CAAI,EAAE,EAC9B,OACF,IAAK,UACHD,EACG,UAAOX,GAAA,KAAIY,CAAI,mBAAmBA,CAAI,aAAaA,CAAI,WAAW,EAClE,OAAOa,EAAS,EAAK,EACrB,UAAOzB,GAAA,KAAIY,CAAI,kBAAkBA,CAAI,QAAQ,EAC7C,OAAOa,EAAS,EAAI,EACvB,OACF,IAAK,OACHd,EAAI,UAAOX,GAAA,KAAIY,CAAI,cAAcA,CAAI,aAAaA,CAAI,YAAY,EAClED,EAAI,OAAOc,EAAS,IAAI,EACxB,OAEF,IAAK,QACHd,EACG,UACCX,GAAA,KAAIwB,CAAQ,oBAAoBA,CAAQ;mBACjCA,CAAQ,qBAAqBZ,CAAI,WAAW,EAEpD,OAAOa,KAASzB,GAAA,MAAKY,CAAI,GAAG,CACnC,CACF,CACF,CAEA,SAASe,GAAiB,CAAC,IAAAhB,EAAK,WAAAiB,EAAY,mBAAAC,CAAkB,EAAiBC,EAAU,CAEvFnB,EAAI,MAAGX,GAAA,KAAI4B,CAAU,iBAAkB,IACrCjB,EAAI,UAAOX,GAAA,KAAI4B,CAAU,IAAIC,CAAkB,IAAKC,CAAI,CAAC,CAE7D,CAEA,SAAgBC,GACdP,EACAZ,EACAoB,EACAC,EAAU/B,GAAS,QAAO,CAE1B,IAAMgC,EAAKD,IAAY/B,GAAS,QAAUF,GAAA,UAAU,GAAKA,GAAA,UAAU,IAC/DmC,EACJ,OAAQX,EAAU,CAChB,IAAK,OACH,SAAOxB,GAAA,KAAIY,CAAI,IAAIsB,CAAE,QACvB,IAAK,QACHC,KAAOnC,GAAA,mBAAkBY,CAAI,IAC7B,MACF,IAAK,SACHuB,KAAOnC,GAAA,KAAIY,CAAI,cAAcA,CAAI,kCAAkCA,CAAI,IACvE,MACF,IAAK,UACHuB,EAAOC,KAAQpC,GAAA,OAAMY,CAAI,mBAAmBA,CAAI,GAAG,EACnD,MACF,IAAK,SACHuB,EAAOC,EAAO,EACd,MACF,QACE,SAAOpC,GAAA,YAAWY,CAAI,IAAIsB,CAAE,IAAIV,CAAQ,EAC5C,CACA,OAAOS,IAAY/B,GAAS,QAAUiC,KAAOnC,GAAA,KAAImC,CAAI,EAErD,SAASC,EAAQC,EAAcrC,GAAA,IAAG,CAChC,SAAOA,GAAA,QAAIA,GAAA,YAAWY,CAAI,eAAgByB,EAAOL,KAAahC,GAAA,cAAaY,CAAI,IAAMZ,GAAA,GAAG,CAC1F,CACF,CA/BAG,GAAA,cAAA4B,GAiCA,SAAgBb,GACdoB,EACA1B,EACAoB,EACAC,EAAkB,CAElB,GAAIK,EAAU,SAAW,EACvB,OAAOP,GAAcO,EAAU,CAAC,EAAG1B,EAAMoB,EAAYC,CAAO,EAE9D,IAAIE,EACE7B,KAAQL,GAAA,QAAOqC,CAAS,EAC9B,GAAIhC,EAAM,OAASA,EAAM,OAAQ,CAC/B,IAAMiC,KAASvC,GAAA,YAAWY,CAAI,eAC9BuB,EAAO7B,EAAM,KAAOiC,KAASvC,GAAA,MAAKY,CAAI,OAAO2B,CAAM,GACnD,OAAOjC,EAAM,KACb,OAAOA,EAAM,MACb,OAAOA,EAAM,MACf,MACE6B,EAAOnC,GAAA,IAELM,EAAM,QAAQ,OAAOA,EAAM,QAC/B,QAAWiB,KAAKjB,EAAO6B,KAAOnC,GAAA,KAAImC,EAAMJ,GAAcR,EAAeX,EAAMoB,EAAYC,CAAO,CAAC,EAC/F,OAAOE,CACT,CAvBAhC,GAAA,eAAAe,GA2BA,IAAMsB,GAAoC,CACxC,QAAS,CAAC,CAAC,OAAAnC,CAAM,IAAM,WAAWA,CAAM,GACxC,OAAQ,CAAC,CAAC,OAAAA,EAAQ,YAAAoC,CAAW,IAC3B,OAAOpC,GAAU,YAAWL,GAAA,YAAWK,CAAM,OAAML,GAAA,YAAWyC,CAAW,KAG7E,SAAgBrB,GAAgBV,EAAgB,CAC9C,IAAMgC,EAAMC,GAAoBjC,CAAE,KAClCX,GAAA,aAAY2C,EAAKF,EAAS,CAC5B,CAHArC,GAAA,gBAAAiB,GAKA,SAASuB,GAAoBjC,EAAgB,CAC3C,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,OAAAP,CAAM,EAAIK,EACtBkC,KAAa3C,GAAA,gBAAeS,EAAIL,EAAQ,MAAM,EACpD,MAAO,CACL,IAAAM,EACA,QAAS,OACT,KAAAC,EACA,OAAQP,EAAO,KACf,WAAAuC,EACA,YAAaA,EACb,aAAcvC,EACd,OAAQ,CAAA,EACR,GAAAK,EAEJ,sHCpOA,IAAAmC,GAAA,KACAC,GAAA,KAEA,SAAgBC,GAAeC,EAAkBC,EAAW,CAC1D,GAAM,CAAC,WAAAC,EAAY,MAAAC,CAAK,EAAIH,EAAG,OAC/B,GAAIC,IAAO,UAAYC,EACrB,QAAWE,KAAOF,EAChBG,GAAcL,EAAII,EAAKF,EAAWE,CAAG,EAAE,OAAO,OAEvCH,IAAO,SAAW,MAAM,QAAQE,CAAK,GAC9CA,EAAM,QAAQ,CAACG,EAAKC,IAAcF,GAAcL,EAAIO,EAAGD,EAAI,OAAO,CAAC,CAEvE,CATAE,GAAA,eAAAT,GAWA,SAASM,GAAcL,EAAkBS,EAAuBC,EAAqB,CACnF,GAAM,CAAC,IAAAC,EAAK,cAAAC,EAAe,KAAAC,EAAM,KAAAC,CAAI,EAAId,EACzC,GAAIU,IAAiB,OAAW,OAChC,IAAMK,KAAYlB,GAAA,KAAIgB,CAAI,MAAGhB,GAAA,aAAYY,CAAI,CAAC,GAC9C,GAAIG,EAAe,IACjBd,GAAA,iBAAgBE,EAAI,2BAA2Be,CAAS,EAAE,EAC1D,MACF,CAEA,IAAIC,KAAYnB,GAAA,KAAIkB,CAAS,iBACzBD,EAAK,cAAgB,UACvBE,KAAYnB,GAAA,KAAImB,CAAS,OAAOD,CAAS,gBAAgBA,CAAS,WAIpEJ,EAAI,GAAGK,KAAWnB,GAAA,KAAIkB,CAAS,SAAMlB,GAAA,WAAUa,CAAY,CAAC,EAAE,CAChE,4VC5BA,IAAAO,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACA,SAAgBC,GAAuBC,EAAiBC,EAAY,CAClE,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,GAAAC,CAAE,EAAIJ,EACxBE,EAAI,GAAGG,GAAiBH,EAAKC,EAAMF,EAAMG,EAAG,KAAK,aAAa,EAAG,IAAK,CACpEJ,EAAI,UAAU,CAAC,mBAAiBL,GAAA,KAAIM,CAAI,EAAE,EAAG,EAAI,EACjDD,EAAI,MAAK,CACX,CAAC,CACH,CANAM,GAAA,uBAAAP,GAQA,SAAgBQ,GACd,CAAC,IAAAL,EAAK,KAAAC,EAAM,GAAI,CAAC,KAAAK,CAAI,CAAC,EACtBC,EACAC,EAAa,CAEb,SAAOf,GAAA,IACL,GAAGc,EAAW,IAAKR,MACjBN,GAAA,KAAIU,GAAiBH,EAAKC,EAAMF,EAAMO,EAAK,aAAa,KAAGb,GAAA,KAAIe,CAAO,MAAMT,CAAI,EAAE,CAAC,CACpF,CAEL,CAVAK,GAAA,iBAAAC,GAYA,SAAgBI,GAAkBX,EAAiBU,EAAa,CAC9DV,EAAI,UAAU,CAAC,gBAAiBU,CAAO,EAAG,EAAI,EAC9CV,EAAI,MAAK,CACX,CAHAM,GAAA,kBAAAK,GAKA,SAAgBC,GAAYV,EAAY,CACtC,OAAOA,EAAI,WAAW,OAAQ,CAE5B,IAAK,OAAO,UAAU,eACtB,QAAMP,GAAA,oCACP,CACH,CANAW,GAAA,YAAAM,GAQA,SAAgBC,GAAcX,EAAcC,EAAYW,EAAuB,CAC7E,SAAOnB,GAAA,KAAIiB,GAAYV,CAAG,CAAC,SAASC,CAAI,KAAKW,CAAQ,GACvD,CAFAR,GAAA,cAAAO,GAIA,SAAgBE,GACdb,EACAC,EACAW,EACAE,EAAuB,CAEvB,IAAMC,KAAOtB,GAAA,KAAIQ,CAAI,MAAGR,GAAA,aAAYmB,CAAQ,CAAC,iBAC7C,OAAOE,KAAgBrB,GAAA,KAAIsB,CAAI,OAAOJ,GAAcX,EAAKC,EAAMW,CAAQ,CAAC,GAAKG,CAC/E,CARAX,GAAA,eAAAS,GAUA,SAAgBV,GACdH,EACAC,EACAW,EACAE,EAAuB,CAEvB,IAAMC,KAAOtB,GAAA,KAAIQ,CAAI,MAAGR,GAAA,aAAYmB,CAAQ,CAAC,iBAC7C,OAAOE,KAAgBrB,GAAA,IAAGsB,KAAMtB,GAAA,KAAIkB,GAAcX,EAAKC,EAAMW,CAAQ,CAAC,CAAC,EAAIG,CAC7E,CARAX,GAAA,iBAAAD,GAUA,SAAgBa,GAAoBC,EAAqB,CACvD,OAAOA,EAAY,OAAO,KAAKA,CAAS,EAAE,OAAQC,GAAMA,IAAM,WAAW,EAAI,CAAA,CAC/E,CAFAd,GAAA,oBAAAY,GAIA,SAAgBG,GAAiBjB,EAAee,EAAoB,CAClE,OAAOD,GAAoBC,CAAS,EAAE,OACnCC,GAAM,IAACxB,GAAA,mBAAkBQ,EAAIe,EAAUC,CAAC,CAAc,CAAC,CAE5D,CAJAd,GAAA,iBAAAe,GAMA,SAAgBC,GACd,CAAC,WAAAC,EAAY,KAAApB,EAAM,GAAI,CAAC,IAAAD,EAAK,aAAAsB,EAAc,WAAAC,EAAY,UAAAC,CAAS,EAAG,GAAAtB,CAAE,EACrEuB,EACAC,EACAC,EAAoB,CAEpB,IAAMC,EAAgBD,KAAalC,GAAA,KAAI4B,CAAU,KAAKpB,CAAI,KAAKqB,CAAY,GAAGC,CAAU,GAAKtB,EACvF4B,EAAkC,CACtC,CAAClC,GAAA,QAAE,gBAAcF,GAAA,WAAUE,GAAA,QAAE,aAAc6B,CAAS,CAAC,EACrD,CAAC7B,GAAA,QAAE,WAAYO,EAAG,UAAU,EAC5B,CAACP,GAAA,QAAE,mBAAoBO,EAAG,kBAAkB,EAC5C,CAACP,GAAA,QAAE,SAAUA,GAAA,QAAE,QAAQ,GAErBO,EAAG,KAAK,YAAY2B,EAAO,KAAK,CAAClC,GAAA,QAAE,eAAgBA,GAAA,QAAE,cAAc,CAAC,EACxE,IAAMmC,KAAOrC,GAAA,KAAImC,CAAa,KAAK5B,EAAI,OAAO,GAAG6B,CAAM,CAAC,GACxD,OAAOH,IAAYjC,GAAA,OAAMA,GAAA,KAAIgC,CAAI,SAASC,CAAO,KAAKI,CAAI,OAAMrC,GAAA,KAAIgC,CAAI,IAAIK,CAAI,GAClF,CAhBA1B,GAAA,iBAAAgB,GAkBA,IAAMW,MAAYtC,GAAA,eAElB,SAAgBuC,GAAW,CAAC,IAAAhC,EAAK,GAAI,CAAC,KAAAM,CAAI,CAAC,EAAe2B,EAAe,CACvE,IAAMC,EAAI5B,EAAK,cAAgB,IAAM,GAC/B,CAAC,OAAA6B,CAAM,EAAI7B,EAAK,KAChB8B,EAAKD,EAAOF,EAASC,CAAC,EAE5B,OAAOlC,EAAI,WAAW,UAAW,CAC/B,IAAKoC,EAAG,SAAQ,EAChB,IAAKA,EACL,QAAM3C,GAAA,KAAI0C,EAAO,OAAS,aAAeJ,MAAYnC,GAAA,SAAQI,EAAKmC,CAAM,CAAC,IAAIF,CAAO,KAAKC,CAAC,IAC3F,CACH,CAVA9B,GAAA,WAAA4B,GAYA,SAAgBK,GAAcvC,EAAe,CAC3C,GAAM,CAAC,IAAAE,EAAK,KAAAC,EAAM,QAAAqC,EAAS,GAAApC,CAAE,EAAIJ,EAC3ByC,EAAQvC,EAAI,KAAK,OAAO,EAC9B,GAAIE,EAAG,UAAW,CAChB,IAAMsC,EAAWxC,EAAI,IAAI,QAAS,EAAI,EACtC,OAAAyC,EAAc,IAAMzC,EAAI,OAAOwC,EAAU,EAAK,CAAC,EACxCA,CACT,CACA,OAAAxC,EAAI,IAAIuC,EAAO,EAAI,EACnBE,EAAc,IAAMzC,EAAI,MAAK,CAAE,EACxBuC,EAEP,SAASE,EAAcC,EAAoB,CACzC,IAAMC,EAAM3C,EAAI,MAAM,SAAOP,GAAA,KAAIQ,CAAI,SAAS,EAC9CD,EAAI,SAAS,IAAK,EAAG2C,EAAMC,GAAK,CAC9B9C,EAAI,UACF,CACE,QAAAwC,EACA,SAAUM,EACV,aAAclD,GAAA,KAAK,KAErB6C,CAAK,EAEPvC,EAAI,MAAGP,GAAA,KAAI8C,CAAK,EAAGG,CAAQ,CAC7B,CAAC,CACH,CACF,CA1BAtC,GAAA,cAAAiC,GA4BA,SAAgBQ,GAAc/C,EAAe,CAC3C,GAAM,CAAC,IAAAE,EAAK,OAAA8C,EAAQ,QAAAR,EAAS,GAAApC,CAAE,EAAIJ,EAEnC,GAAI,CAAC,MAAM,QAAQgD,CAAM,EAAG,MAAM,IAAI,MAAM,0BAA0B,EAEtE,GADoBA,EAAO,KAAMC,MAAmBrD,GAAA,mBAAkBQ,EAAI6C,CAAG,CAAC,GAC3D,CAAC7C,EAAG,KAAK,YAAa,OAEzC,IAAMqC,EAAQvC,EAAI,IAAI,QAAS,EAAK,EAC9BgD,EAAWhD,EAAI,KAAK,QAAQ,EAElCA,EAAI,MAAM,IACR8C,EAAO,QAAQ,CAACG,EAAiBL,IAAa,CAC5C,IAAMM,EAASpD,EAAI,UACjB,CACE,QAAAwC,EACA,WAAYM,EACZ,cAAe,IAEjBI,CAAQ,EAEVhD,EAAI,OAAOuC,KAAO9C,GAAA,KAAI8C,CAAK,OAAOS,CAAQ,EAAE,EAC7BlD,EAAI,oBAAoBoD,EAAQF,CAAQ,GAG1ChD,EAAI,MAAGP,GAAA,KAAI8C,CAAK,CAAC,CAChC,CAAC,CAAC,EAGJzC,EAAI,OACFyC,EACA,IAAMzC,EAAI,MAAK,EACf,IAAMA,EAAI,MAAM,EAAI,CAAC,CAEzB,CAjCAM,GAAA,cAAAyC,uLC5HA,IAAAM,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAIA,SAAgBC,GAAiBC,EAAiBC,EAA2B,CAC3E,GAAM,CAAC,IAAAC,EAAK,QAAAC,EAAS,OAAAC,EAAQ,aAAAC,EAAc,GAAAC,CAAE,EAAIN,EAC3CO,EAAcN,EAAI,MAAM,KAAKK,EAAG,KAAMF,EAAQC,EAAcC,CAAE,EAC9DE,EAAYC,GAAWP,EAAKC,EAASI,CAAW,EAClDD,EAAG,KAAK,iBAAmB,IAAOA,EAAG,KAAK,eAAeC,EAAa,EAAI,EAE9E,IAAMG,EAAQR,EAAI,KAAK,OAAO,EAC9BF,EAAI,UACF,CACE,OAAQO,EACR,WAAYZ,GAAA,IACZ,cAAe,GAAGW,EAAG,aAAa,IAAIH,CAAO,GAC7C,aAAcK,EACd,cAAe,IAEjBE,CAAK,EAEPV,EAAI,KAAKU,EAAO,IAAMV,EAAI,MAAM,EAAI,CAAC,CACvC,CAlBAW,GAAA,iBAAAZ,GAoBA,SAAgBa,GAAgBZ,EAAiBC,EAA0B,OACzE,GAAM,CAAC,IAAAC,EAAK,QAAAC,EAAS,OAAAC,EAAQ,aAAAC,EAAc,MAAAQ,EAAO,GAAAP,CAAE,EAAIN,EACxDc,GAAkBR,EAAIL,CAAG,EACzB,IAAMc,EACJ,CAACF,GAASZ,EAAI,QAAUA,EAAI,QAAQ,KAAKK,EAAG,KAAMF,EAAQC,EAAcC,CAAE,EAAIL,EAAI,SAC9Ee,EAAcP,GAAWP,EAAKC,EAASY,CAAQ,EAC/CL,EAAQR,EAAI,IAAI,OAAO,EAC7BF,EAAI,WAAWU,EAAOO,CAAe,EACrCjB,EAAI,IAAGkB,EAAAjB,EAAI,SAAK,MAAAiB,IAAA,OAAAA,EAAIR,CAAK,EAEzB,SAASO,GAAe,CACtB,GAAIhB,EAAI,SAAW,GACjBkB,EAAW,EACPlB,EAAI,WAAWmB,GAAWpB,CAAG,EACjCqB,EAAW,IAAMrB,EAAI,MAAK,CAAE,MACvB,CACL,IAAMsB,EAAWrB,EAAI,MAAQsB,EAAa,EAAKC,EAAY,EACvDvB,EAAI,WAAWmB,GAAWpB,CAAG,EACjCqB,EAAW,IAAMI,GAAQzB,EAAKsB,CAAQ,CAAC,CACzC,CACF,CAEA,SAASC,GAAa,CACpB,IAAMD,EAAWpB,EAAI,IAAI,WAAY,IAAI,EACzC,OAAAA,EAAI,IACF,IAAMiB,KAAYxB,GAAA,UAAS,EAC1B+B,GACCxB,EAAI,OAAOQ,EAAO,EAAK,EAAE,MACvBf,GAAA,KAAI+B,CAAC,eAAepB,EAAG,eAAuB,GAC9C,IAAMJ,EAAI,OAAOoB,KAAU3B,GAAA,KAAI+B,CAAC,SAAS,EACzC,IAAMxB,EAAI,MAAMwB,CAAC,CAAC,CACnB,EAEEJ,CACT,CAEA,SAASE,GAAY,CACnB,IAAMG,KAAehC,GAAA,KAAIqB,CAAW,UACpC,OAAAd,EAAI,OAAOyB,EAAc,IAAI,EAC7BR,EAAYxB,GAAA,GAAG,EACRgC,CACT,CAEA,SAASR,EAAYS,EAAe3B,EAAI,SAAQN,GAAA,WAAYA,GAAA,IAAG,CAC7D,IAAMkC,EAAUvB,EAAG,KAAK,YAAcV,GAAA,QAAE,KAAOA,GAAA,QAAE,KAC3CkC,EAAa,EAAG,YAAa7B,GAAO,CAACY,GAAUZ,EAAI,SAAW,IACpEC,EAAI,OACFQ,KACAf,GAAA,KAAIiC,CAAM,MAAG/B,GAAA,kBAAiBG,EAAKgB,EAAaa,EAASC,CAAU,CAAC,GACpE7B,EAAI,SAAS,CAEjB,CAEA,SAASoB,EAAWU,EAAkB,OACpC7B,EAAI,MAAGP,GAAA,MAAIuB,EAAAjB,EAAI,SAAK,MAAAiB,IAAA,OAAAA,EAAIR,CAAK,EAAGqB,CAAM,CACxC,CACF,CAxDApB,GAAA,gBAAAC,GA0DA,SAASQ,GAAWpB,EAAe,CACjC,GAAM,CAAC,IAAAE,EAAK,KAAA8B,EAAM,GAAA1B,CAAE,EAAIN,EACxBE,EAAI,GAAGI,EAAG,WAAY,IAAMJ,EAAI,OAAO8B,KAAMrC,GAAA,KAAIW,EAAG,UAAU,IAAIA,EAAG,kBAAkB,GAAG,CAAC,CAC7F,CAEA,SAASmB,GAAQzB,EAAiBiC,EAAU,CAC1C,GAAM,CAAC,IAAA/B,CAAG,EAAIF,EACdE,EAAI,MACFP,GAAA,mBAAkBsC,CAAI,IACtB,IAAK,CACH/B,EACG,OAAON,GAAA,QAAE,WAASD,GAAA,KAAIC,GAAA,QAAE,OAAO,eAAeqC,CAAI,MAAMrC,GAAA,QAAE,OAAO,WAAWqC,CAAI,GAAG,EACnF,OAAOrC,GAAA,QAAE,UAAQD,GAAA,KAAIC,GAAA,QAAE,OAAO,SAAS,KAC1CE,GAAA,cAAaE,CAAG,CAClB,EACA,IAAMA,EAAI,MAAK,CAAE,CAErB,CAEA,SAASc,GAAkB,CAAC,UAAAoB,CAAS,EAAiBjC,EAA0B,CAC9E,GAAIA,EAAI,OAAS,CAACiC,EAAU,OAAQ,MAAM,IAAI,MAAM,8BAA8B,CACpF,CAEA,SAASzB,GAAWP,EAAcC,EAAiBgC,EAAiC,CAClF,GAAIA,IAAW,OAAW,MAAM,IAAI,MAAM,YAAYhC,CAAO,qBAAqB,EAClF,OAAOD,EAAI,WACT,UACA,OAAOiC,GAAU,WAAa,CAAC,IAAKA,CAAM,EAAI,CAAC,IAAKA,EAAQ,QAAMxC,GAAA,WAAUwC,CAAM,CAAC,CAAC,CAExF,CAEA,SAAgBC,GACdhC,EACAiC,EACAC,EAAiB,GAAK,CAGtB,MACE,CAACD,EAAW,QACZA,EAAW,KAAME,GACfA,IAAO,QACH,MAAM,QAAQnC,CAAM,EACpBmC,IAAO,SACPnC,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAM,EAC5D,OAAOA,GAAUmC,GAAOD,GAAkB,OAAOlC,EAAU,GAAY,CAGjF,CAhBAO,GAAA,gBAAAyB,GAkBA,SAAgBI,GACd,CAAC,OAAApC,EAAQ,KAAAqC,EAAM,KAAAC,EAAM,cAAAC,CAAa,EAClC1C,EACAE,EAAe,CAGf,GAAI,MAAM,QAAQF,EAAI,OAAO,EAAI,CAACA,EAAI,QAAQ,SAASE,CAAO,EAAIF,EAAI,UAAYE,EAChF,MAAM,IAAI,MAAM,0BAA0B,EAG5C,IAAMyC,EAAO3C,EAAI,aACjB,GAAI2C,GAAM,KAAMC,GAAQ,CAAC,OAAO,UAAU,eAAe,KAAKzC,EAAQyC,CAAG,CAAC,EACxE,MAAM,IAAI,MAAM,2CAA2C1C,CAAO,KAAKyC,EAAK,KAAK,GAAG,CAAC,EAAE,EAGzF,GAAI3C,EAAI,gBAEF,CADUA,EAAI,eAAeG,EAAOD,CAAO,CAAC,EACpC,CACV,IAAM2C,EACJ,YAAY3C,CAAO,+BAA+BwC,CAAa,MAC/DD,EAAK,WAAWzC,EAAI,eAAe,MAAM,EAC3C,GAAIwC,EAAK,iBAAmB,MAAOC,EAAK,OAAO,MAAMI,CAAG,MACnD,OAAM,IAAI,MAAMA,CAAG,CAC1B,CAEJ,CAzBAnC,GAAA,qBAAA6B,mKC/IA,IAAAO,GAAA,KACAC,GAAA,KA6CA,SAAgBC,GACdC,EACA,CAAC,QAAAC,EAAS,WAAAC,EAAY,OAAAC,EAAQ,WAAAC,EAAY,cAAAC,EAAe,aAAAC,CAAY,EAAgB,CAErF,GAAIL,IAAY,QAAaE,IAAW,OACtC,MAAM,IAAI,MAAM,sDAAsD,EAGxE,GAAIF,IAAY,OAAW,CACzB,IAAMM,EAAMP,EAAG,OAAOC,CAAO,EAC7B,OAAOC,IAAe,OAClB,CACE,OAAQK,EACR,cAAYV,GAAA,KAAIG,EAAG,UAAU,MAAGH,GAAA,aAAYI,CAAO,CAAC,GACpD,cAAe,GAAGD,EAAG,aAAa,IAAIC,CAAO,IAE/C,CACE,OAAQM,EAAIL,CAAU,EACtB,cAAYL,GAAA,KAAIG,EAAG,UAAU,MAAGH,GAAA,aAAYI,CAAO,CAAC,MAAGJ,GAAA,aAAYK,CAAU,CAAC,GAC9E,cAAe,GAAGF,EAAG,aAAa,IAAIC,CAAO,OAAIH,GAAA,gBAAeI,CAAU,CAAC,GAEnF,CAEA,GAAIC,IAAW,OAAW,CACxB,GAAIC,IAAe,QAAaC,IAAkB,QAAaC,IAAiB,OAC9E,MAAM,IAAI,MAAM,6EAA6E,EAE/F,MAAO,CACL,OAAAH,EACA,WAAAC,EACA,aAAAE,EACA,cAAAD,EAEJ,CAEA,MAAM,IAAI,MAAM,6CAA6C,CAC/D,CApCAG,GAAA,aAAAT,GAsCA,SAAgBU,GACdC,EACAV,EACA,CAAC,SAAAW,EAAU,aAAcC,EAAQ,KAAAC,EAAM,UAAAC,EAAW,aAAAC,CAAY,EAAgB,CAE9E,GAAIF,IAAS,QAAaF,IAAa,OACrC,MAAM,IAAI,MAAM,qDAAqD,EAGvE,GAAM,CAAC,IAAAK,CAAG,EAAIhB,EAEd,GAAIW,IAAa,OAAW,CAC1B,GAAM,CAAC,UAAAM,EAAW,YAAAC,EAAa,KAAAC,CAAI,EAAInB,EACjCoB,EAAWJ,EAAI,IAAI,UAAQnB,GAAA,KAAIG,EAAG,IAAI,MAAGH,GAAA,aAAYc,CAAQ,CAAC,GAAI,EAAI,EAC5EU,EAAiBD,CAAQ,EACzBV,EAAU,aAAYb,GAAA,OAAMoB,CAAS,MAAGnB,GAAA,cAAaa,EAAUC,EAAQO,EAAK,gBAAgB,CAAC,GAC7FT,EAAU,sBAAqBb,GAAA,KAAIc,CAAQ,GAC3CD,EAAU,YAAc,CAAC,GAAGQ,EAAaR,EAAU,kBAAkB,CACvE,CAEA,GAAIG,IAAS,OAAW,CACtB,IAAMO,EAAWP,aAAgBhB,GAAA,KAAOgB,EAAOG,EAAI,IAAI,OAAQH,EAAM,EAAI,EACzEQ,EAAiBD,CAAQ,EACrBL,IAAiB,SAAWL,EAAU,aAAeK,EAE3D,CAEID,IAAWJ,EAAU,UAAYI,GAErC,SAASO,EAAiBC,EAAe,CACvCZ,EAAU,KAAOY,EACjBZ,EAAU,UAAYV,EAAG,UAAY,EACrCU,EAAU,UAAY,CAAA,EACtBV,EAAG,kBAAoB,IAAI,IAC3BU,EAAU,WAAaV,EAAG,KAC1BU,EAAU,UAAY,CAAC,GAAGV,EAAG,UAAWsB,CAAS,CACnD,CACF,CArCAd,GAAA,oBAAAC,GAuCA,SAAgBc,GACdb,EACA,CAAC,iBAAAc,EAAkB,YAAAC,EAAa,cAAAC,EAAe,aAAAC,EAAc,UAAAC,CAAS,EAAgB,CAElFF,IAAkB,SAAWhB,EAAU,cAAgBgB,GACvDC,IAAiB,SAAWjB,EAAU,aAAeiB,GACrDC,IAAc,SAAWlB,EAAU,UAAYkB,GACnDlB,EAAU,iBAAmBc,EAC7Bd,EAAU,YAAce,CAC1B,CATAjB,GAAA,oBAAAe,KC7HA,IAAAM,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAMAH,GAAO,QAAU,SAASI,EAAMC,EAAGC,EAAG,CACpC,GAAID,IAAMC,EAAG,MAAO,GAEpB,GAAID,GAAKC,GAAK,OAAOD,GAAK,UAAY,OAAOC,GAAK,SAAU,CAC1D,GAAID,EAAE,cAAgBC,EAAE,YAAa,MAAO,GAE5C,IAAIC,EAAQ,EAAGC,EACf,GAAI,MAAM,QAAQH,CAAC,EAAG,CAEpB,GADAE,EAASF,EAAE,OACPE,GAAUD,EAAE,OAAQ,MAAO,GAC/B,IAAK,EAAIC,EAAQ,MAAQ,GACvB,GAAI,CAACH,EAAMC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EAAG,MAAO,GACjC,MAAO,EACT,CAIA,GAAID,EAAE,cAAgB,OAAQ,OAAOA,EAAE,SAAWC,EAAE,QAAUD,EAAE,QAAUC,EAAE,MAC5E,GAAID,EAAE,UAAY,OAAO,UAAU,QAAS,OAAOA,EAAE,QAAQ,IAAMC,EAAE,QAAQ,EAC7E,GAAID,EAAE,WAAa,OAAO,UAAU,SAAU,OAAOA,EAAE,SAAS,IAAMC,EAAE,SAAS,EAIjF,GAFAE,EAAO,OAAO,KAAKH,CAAC,EACpBE,EAASC,EAAK,OACVD,IAAW,OAAO,KAAKD,CAAC,EAAE,OAAQ,MAAO,GAE7C,IAAK,EAAIC,EAAQ,MAAQ,GACvB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKD,EAAGE,EAAK,CAAC,CAAC,EAAG,MAAO,GAEhE,IAAK,EAAID,EAAQ,MAAQ,GAAI,CAC3B,IAAIE,EAAMD,EAAK,CAAC,EAEhB,GAAI,CAACJ,EAAMC,EAAEI,CAAG,EAAGH,EAAEG,CAAG,CAAC,EAAG,MAAO,EACrC,CAEA,MAAO,EACT,CAGA,OAAOJ,IAAIA,GAAKC,IAAIA,CACtB,IC7CA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAEA,IAAIC,GAAWJ,GAAO,QAAU,SAAUK,EAAQC,EAAMC,EAAI,CAEtD,OAAOD,GAAQ,aACjBC,EAAKD,EACLA,EAAO,CAAC,GAGVC,EAAKD,EAAK,IAAMC,EAChB,IAAIC,EAAO,OAAOD,GAAM,WAAcA,EAAKA,EAAG,KAAO,UAAW,CAAC,EAC7DE,EAAOF,EAAG,MAAQ,UAAW,CAAC,EAElCG,GAAUJ,EAAME,EAAKC,EAAMJ,EAAQ,GAAIA,CAAM,CAC/C,EAGAD,GAAS,SAAW,CAClB,gBAAiB,GACjB,MAAO,GACP,SAAU,GACV,qBAAsB,GACtB,cAAe,GACf,IAAK,GACL,GAAI,GACJ,KAAM,GACN,KAAM,EACR,EAEAA,GAAS,cAAgB,CACvB,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACT,EAEAA,GAAS,cAAgB,CACvB,MAAO,GACP,YAAa,GACb,WAAY,GACZ,kBAAmB,GACnB,aAAc,EAChB,EAEAA,GAAS,aAAe,CACtB,QAAS,GACT,KAAM,GACN,MAAO,GACP,SAAU,GACV,QAAS,GACT,QAAS,GACT,iBAAkB,GAClB,iBAAkB,GAClB,WAAY,GACZ,UAAW,GACX,UAAW,GACX,QAAS,GACT,OAAQ,GACR,SAAU,GACV,SAAU,GACV,YAAa,GACb,cAAe,GACf,cAAe,EACjB,EAGA,SAASM,GAAUJ,EAAME,EAAKC,EAAMJ,EAAQM,EAASC,EAAYC,EAAeC,EAAeC,EAAcC,EAAU,CACrH,GAAIX,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAM,EAAG,CACjEG,EAAIH,EAAQM,EAASC,EAAYC,EAAeC,EAAeC,EAAcC,CAAQ,EACrF,QAASC,KAAOZ,EAAQ,CACtB,IAAIa,EAAMb,EAAOY,CAAG,EACpB,GAAI,MAAM,QAAQC,CAAG,GACnB,GAAID,KAAOb,GAAS,cAClB,QAASe,EAAE,EAAGA,EAAED,EAAI,OAAQC,IAC1BT,GAAUJ,EAAME,EAAKC,EAAMS,EAAIC,CAAC,EAAGR,EAAU,IAAMM,EAAM,IAAME,EAAGP,EAAYD,EAASM,EAAKZ,EAAQc,CAAC,UAEhGF,KAAOb,GAAS,eACzB,GAAIc,GAAO,OAAOA,GAAO,SACvB,QAASE,KAAQF,EACfR,GAAUJ,EAAME,EAAKC,EAAMS,EAAIE,CAAI,EAAGT,EAAU,IAAMM,EAAM,IAAMI,GAAcD,CAAI,EAAGR,EAAYD,EAASM,EAAKZ,EAAQe,CAAI,OAExHH,KAAOb,GAAS,UAAaE,EAAK,SAAW,EAAEW,KAAOb,GAAS,gBACxEM,GAAUJ,EAAME,EAAKC,EAAMS,EAAKP,EAAU,IAAMM,EAAKL,EAAYD,EAASM,EAAKZ,CAAM,CAEzF,CACAI,EAAKJ,EAAQM,EAASC,EAAYC,EAAeC,EAAeC,EAAcC,CAAQ,CACxF,CACF,CAGA,SAASK,GAAcC,EAAK,CAC1B,OAAOA,EAAI,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,IAAI,CACpD,8LCzFA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAMMC,GAAiB,IAAI,IAAI,CAC7B,OACA,SACA,UACA,YACA,YACA,gBACA,gBACA,WACA,WACA,UACA,UACA,cACA,aACA,WACA,OACA,QACD,EAED,SAAgBC,GAAUC,EAAmBC,EAA0B,GAAI,CACzE,OAAI,OAAOD,GAAU,UAAkB,GACnCC,IAAU,GAAa,CAACC,GAAOF,CAAM,EACpCC,EACEE,GAAUH,CAAM,GAAKC,EADT,EAErB,CALAG,GAAA,UAAAL,GAOA,IAAMM,GAAe,IAAI,IAAI,CAC3B,OACA,gBACA,mBACA,cACA,iBACD,EAED,SAASH,GAAOF,EAAuB,CACrC,QAAWM,KAAON,EAAQ,CACxB,GAAIK,GAAa,IAAIC,CAAG,EAAG,MAAO,GAClC,IAAMC,EAAMP,EAAOM,CAAG,EAEtB,GADI,MAAM,QAAQC,CAAG,GAAKA,EAAI,KAAKL,EAAM,GACrC,OAAOK,GAAO,UAAYL,GAAOK,CAAG,EAAG,MAAO,EACpD,CACA,MAAO,EACT,CAEA,SAASJ,GAAUH,EAAuB,CACxC,IAAIQ,EAAQ,EACZ,QAAWF,KAAON,EAAQ,CACxB,GAAIM,IAAQ,OAAQ,MAAO,KAE3B,GADAE,IACI,CAAAV,GAAe,IAAIQ,CAAG,IACtB,OAAON,EAAOM,CAAG,GAAK,aACxBX,GAAA,UAASK,EAAOM,CAAG,EAAIC,GAASC,GAASL,GAAUI,CAAG,CAAE,EAEtDC,IAAU,KAAU,MAAO,IACjC,CACA,OAAOA,CACT,CAEA,SAAgBC,GAAYC,EAAuBC,EAAK,GAAIC,EAAmB,CACzEA,IAAc,KAAOD,EAAKE,GAAYF,CAAE,GAC5C,IAAMG,EAAIJ,EAAS,MAAMC,CAAE,EAC3B,OAAOI,GAAaL,EAAUI,CAAC,CACjC,CAJAV,GAAA,YAAAK,GAMA,SAAgBM,GAAaL,EAAuBI,EAAe,CAEjE,OADmBJ,EAAS,UAAUI,CAAC,EACrB,MAAM,GAAG,EAAE,CAAC,EAAI,GACpC,CAHAV,GAAA,aAAAW,GAKA,IAAMC,GAAsB,QAC5B,SAAgBH,GAAYF,EAAsB,CAChD,OAAOA,EAAKA,EAAG,QAAQK,GAAqB,EAAE,EAAI,EACpD,CAFAZ,GAAA,YAAAS,GAIA,SAAgBI,GAAWP,EAAuBQ,EAAgBP,EAAU,CAC1E,OAAAA,EAAKE,GAAYF,CAAE,EACZD,EAAS,QAAQQ,EAAQP,CAAE,CACpC,CAHAP,GAAA,WAAAa,GAKA,IAAME,GAAS,wBAEf,SAAgBC,GAAyBpB,EAAmBkB,EAAc,CACxE,GAAI,OAAOlB,GAAU,UAAW,MAAO,CAAA,EACvC,GAAM,CAAC,SAAAqB,EAAU,YAAAC,CAAW,EAAI,KAAK,KAC/BC,EAAQV,GAAYb,EAAOqB,CAAQ,GAAKH,CAAM,EAC9CM,EAA0C,CAAC,GAAID,CAAK,EACpDE,EAAahB,GAAYa,EAAaC,EAAO,EAAK,EAClDG,EAAuB,CAAA,EACvBC,EAA0B,IAAI,IAEpC,OAAA9B,GAASG,EAAQ,CAAC,QAAS,EAAI,EAAG,CAACO,EAAKqB,EAAS,EAAGC,IAAiB,CACnE,GAAIA,IAAkB,OAAW,OACjC,IAAMC,EAAWL,EAAaG,EAC1BG,EAAcP,EAAQK,CAAa,EACnC,OAAOtB,EAAIc,CAAQ,GAAK,WAAUU,EAAcC,EAAO,KAAK,KAAMzB,EAAIc,CAAQ,CAAC,GACnFY,EAAU,KAAK,KAAM1B,EAAI,OAAO,EAChC0B,EAAU,KAAK,KAAM1B,EAAI,cAAc,EACvCiB,EAAQI,CAAO,EAAIG,EAEnB,SAASC,EAAkBE,EAAW,CAEpC,IAAMC,EAAW,KAAK,KAAK,YAAY,QAEvC,GADAD,EAAMrB,GAAYkB,EAAcI,EAASJ,EAAaG,CAAG,EAAIA,CAAG,EAC5DP,EAAW,IAAIO,CAAG,EAAG,MAAME,EAASF,CAAG,EAC3CP,EAAW,IAAIO,CAAG,EAClB,IAAIG,EAAW,KAAK,KAAKH,CAAG,EAC5B,OAAI,OAAOG,GAAY,WAAUA,EAAW,KAAK,KAAKA,CAAQ,GAC1D,OAAOA,GAAY,SACrBC,EAAiB/B,EAAK8B,EAAS,OAAQH,CAAG,EACjCA,IAAQrB,GAAYiB,CAAQ,IACjCI,EAAI,CAAC,IAAM,KACbI,EAAiB/B,EAAKmB,EAAUQ,CAAG,EAAGA,CAAG,EACzCR,EAAUQ,CAAG,EAAI3B,GAEjB,KAAK,KAAK2B,CAAG,EAAIJ,GAGdI,CACT,CAEA,SAASD,EAAqBM,EAAe,CAC3C,GAAI,OAAOA,GAAU,SAAU,CAC7B,GAAI,CAACpB,GAAO,KAAKoB,CAAM,EAAG,MAAM,IAAI,MAAM,mBAAmBA,CAAM,GAAG,EACtEP,EAAO,KAAK,KAAM,IAAIO,CAAM,EAAE,CAChC,CACF,CACF,CAAC,EAEMb,EAEP,SAASY,EAAiBE,EAAiBC,EAA6BP,EAAW,CACjF,GAAIO,IAAS,QAAa,CAAC7C,GAAM4C,EAAMC,CAAI,EAAG,MAAML,EAASF,CAAG,CAClE,CAEA,SAASE,EAASF,EAAW,CAC3B,OAAO,IAAI,MAAM,cAAcA,CAAG,oCAAoC,CACxE,CACF,CAxDA9B,GAAA,cAAAgB,sJCnFA,IAAAsB,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KASAC,GAAA,KASA,SAAgBC,GAAqBC,EAAa,CAChD,GAAIC,GAAYD,CAAE,IAChBE,GAAcF,CAAE,EACZG,GAAkBH,CAAE,GAAG,CACzBI,GAAiBJ,CAAE,EACnB,MACF,CAEFK,GAAiBL,EAAI,OAAMb,GAAA,sBAAqBa,CAAE,CAAC,CACrD,CATAM,GAAA,qBAAAP,GAWA,SAASM,GACP,CAAC,IAAAE,EAAK,aAAAC,EAAc,OAAAC,EAAQ,UAAAC,EAAW,KAAAC,CAAI,EAC3CC,EAAW,CAEPD,EAAK,KAAK,IACZJ,EAAI,KAAKC,KAAcd,GAAA,KAAIC,GAAA,QAAE,IAAI,KAAKA,GAAA,QAAE,MAAM,GAAIe,EAAU,OAAQ,IAAK,CACvEH,EAAI,QAAKb,GAAA,mBAAkBmB,GAAcJ,EAAQE,CAAI,CAAC,EAAE,EACxDG,GAAqBP,EAAKI,CAAI,EAC9BJ,EAAI,KAAKK,CAAI,CACf,CAAC,EAEDL,EAAI,KAAKC,KAAcd,GAAA,KAAIC,GAAA,QAAE,IAAI,KAAKoB,GAAkBJ,CAAI,CAAC,GAAID,EAAU,OAAQ,IACjFH,EAAI,KAAKM,GAAcJ,EAAQE,CAAI,CAAC,EAAE,KAAKC,CAAI,CAAC,CAGtD,CAEA,SAASG,GAAkBJ,EAAqB,CAC9C,SAAOjB,GAAA,MAAKC,GAAA,QAAE,YAAY,QAAQA,GAAA,QAAE,UAAU,KAAKA,GAAA,QAAE,kBAAkB,KAAKA,GAAA,QAAE,QAAQ,IACpFA,GAAA,QAAE,IACJ,GAAGgB,EAAK,cAAajB,GAAA,OAAMC,GAAA,QAAE,cAAc,MAAQD,GAAA,GAAG,MACxD,CAEA,SAASoB,GAAqBP,EAAcI,EAAqB,CAC/DJ,EAAI,GACFZ,GAAA,QAAE,OACF,IAAK,CACHY,EAAI,IAAIZ,GAAA,QAAE,gBAAcD,GAAA,KAAIC,GAAA,QAAE,MAAM,IAAIA,GAAA,QAAE,YAAY,EAAE,EACxDY,EAAI,IAAIZ,GAAA,QAAE,cAAYD,GAAA,KAAIC,GAAA,QAAE,MAAM,IAAIA,GAAA,QAAE,UAAU,EAAE,EACpDY,EAAI,IAAIZ,GAAA,QAAE,sBAAoBD,GAAA,KAAIC,GAAA,QAAE,MAAM,IAAIA,GAAA,QAAE,kBAAkB,EAAE,EACpEY,EAAI,IAAIZ,GAAA,QAAE,YAAUD,GAAA,KAAIC,GAAA,QAAE,MAAM,IAAIA,GAAA,QAAE,QAAQ,EAAE,EAC5CgB,EAAK,YAAYJ,EAAI,IAAIZ,GAAA,QAAE,kBAAgBD,GAAA,KAAIC,GAAA,QAAE,MAAM,IAAIA,GAAA,QAAE,cAAc,EAAE,CACnF,EACA,IAAK,CACHY,EAAI,IAAIZ,GAAA,QAAE,gBAAcD,GAAA,MAAK,EAC7Ba,EAAI,IAAIZ,GAAA,QAAE,cAAYD,GAAA,aAAY,EAClCa,EAAI,IAAIZ,GAAA,QAAE,sBAAoBD,GAAA,aAAY,EAC1Ca,EAAI,IAAIZ,GAAA,QAAE,SAAUA,GAAA,QAAE,IAAI,EACtBgB,EAAK,YAAYJ,EAAI,IAAIZ,GAAA,QAAE,kBAAgBD,GAAA,MAAK,CACtD,CAAC,CAEL,CAEA,SAASU,GAAiBJ,EAAgB,CACxC,GAAM,CAAC,OAAAS,EAAQ,KAAAE,EAAM,IAAAJ,CAAG,EAAIP,EAC5BK,GAAiBL,EAAI,IAAK,CACpBW,EAAK,UAAYF,EAAO,UAAUO,GAAehB,CAAE,EACvDiB,GAAejB,CAAE,EACjBO,EAAI,IAAIZ,GAAA,QAAE,QAAS,IAAI,EACvBY,EAAI,IAAIZ,GAAA,QAAE,OAAQ,CAAC,EACfgB,EAAK,aAAaO,GAAelB,CAAE,EACvCmB,GAAgBnB,CAAE,EAClBoB,GAAcpB,CAAE,CAClB,CAAC,CAEH,CAEA,SAASkB,GAAelB,EAAgB,CAEtC,GAAM,CAAC,IAAAO,EAAK,aAAAC,CAAY,EAAIR,EAC5BA,EAAG,UAAYO,EAAI,MAAM,eAAab,GAAA,KAAIc,CAAY,YAAY,EAClED,EAAI,MAAGb,GAAA,KAAIM,EAAG,SAAS,gBAAiB,IAAMO,EAAI,UAAOb,GAAA,KAAIM,EAAG,SAAS,YAAUN,GAAA,aAAY,CAAC,EAChGa,EAAI,MAAGb,GAAA,KAAIM,EAAG,SAAS,gBAAiB,IAAMO,EAAI,UAAOb,GAAA,KAAIM,EAAG,SAAS,YAAUN,GAAA,aAAY,CAAC,CAClG,CAEA,SAASmB,GAAcJ,EAAmBE,EAAqB,CAC7D,IAAMU,EAAQ,OAAOZ,GAAU,UAAYA,EAAOE,EAAK,QAAQ,EAC/D,OAAOU,IAAUV,EAAK,KAAK,QAAUA,EAAK,KAAK,YAAWjB,GAAA,mBAAkB2B,CAAK,MAAQ3B,GAAA,GAC3F,CAGA,SAAS4B,GAActB,EAAeuB,EAAW,CAC/C,GAAItB,GAAYD,CAAE,IAChBE,GAAcF,CAAE,EACZG,GAAkBH,CAAE,GAAG,CACzBwB,GAAiBxB,EAAIuB,CAAK,EAC1B,MACF,IAEFpC,GAAA,mBAAkBa,EAAIuB,CAAK,CAC7B,CAEA,SAASpB,GAAkB,CAAC,OAAAM,EAAQ,KAAAgB,CAAI,EAAY,CAClD,GAAI,OAAOhB,GAAU,UAAW,MAAO,CAACA,EACxC,QAAWiB,KAAOjB,EAAQ,GAAIgB,EAAK,MAAM,IAAIC,CAAG,EAAG,MAAO,GAC1D,MAAO,EACT,CAEA,SAASzB,GAAYD,EAAa,CAChC,OAAO,OAAOA,EAAG,QAAU,SAC7B,CAEA,SAASwB,GAAiBxB,EAAkBuB,EAAW,CACrD,GAAM,CAAC,OAAAd,EAAQ,IAAAF,EAAK,KAAAI,CAAI,EAAIX,EACxBW,EAAK,UAAYF,EAAO,UAAUO,GAAehB,CAAE,EACvD2B,GAAc3B,CAAE,EAChB4B,GAAiB5B,CAAE,EACnB,IAAM6B,EAAYtB,EAAI,MAAM,QAASZ,GAAA,QAAE,MAAM,EAC7CwB,GAAgBnB,EAAI6B,CAAS,EAE7BtB,EAAI,IAAIgB,KAAO7B,GAAA,KAAImC,CAAS,QAAQlC,GAAA,QAAE,MAAM,EAAE,CAChD,CAEA,SAASO,GAAcF,EAAgB,IACrCH,GAAA,mBAAkBG,CAAE,EACpB8B,GAAqB9B,CAAE,CACzB,CAEA,SAASmB,GAAgBnB,EAAkB6B,EAAgB,CACzD,GAAI7B,EAAG,KAAK,IAAK,OAAO+B,GAAe/B,EAAI,CAAA,EAAI,GAAO6B,CAAS,EAC/D,IAAMG,KAAQ5C,GAAA,gBAAeY,EAAG,MAAM,EAChCiC,KAAe7C,GAAA,wBAAuBY,EAAIgC,CAAK,EACrDD,GAAe/B,EAAIgC,EAAO,CAACC,EAAcJ,CAAS,CACpD,CAEA,SAASC,GAAqB9B,EAAgB,CAC5C,GAAM,CAAC,OAAAS,EAAQ,cAAAyB,EAAe,KAAAvB,EAAM,KAAAc,CAAI,EAAIzB,EACxCS,EAAO,MAAQE,EAAK,0BAAyBd,GAAA,sBAAqBY,EAAQgB,EAAK,KAAK,GACtFA,EAAK,OAAO,KAAK,6CAA6CS,CAAa,GAAG,CAElF,CAEA,SAASjB,GAAejB,EAAgB,CACtC,GAAM,CAAC,OAAAS,EAAQ,KAAAE,CAAI,EAAIX,EACnBS,EAAO,UAAY,QAAaE,EAAK,aAAeA,EAAK,iBAC3Dd,GAAA,iBAAgBG,EAAI,uCAAuC,CAE/D,CAEA,SAAS2B,GAAc3B,EAAgB,CACrC,IAAMqB,EAAQrB,EAAG,OAAOA,EAAG,KAAK,QAAQ,EACpCqB,IAAOrB,EAAG,UAASJ,GAAA,YAAWI,EAAG,KAAK,YAAaA,EAAG,OAAQqB,CAAK,EACzE,CAEA,SAASO,GAAiB5B,EAAgB,CACxC,GAAIA,EAAG,OAAO,QAAU,CAACA,EAAG,UAAU,OAAQ,MAAM,IAAI,MAAM,6BAA6B,CAC7F,CAEA,SAASgB,GAAe,CAAC,IAAAT,EAAK,UAAAG,EAAW,OAAAD,EAAQ,cAAAyB,EAAe,KAAAvB,CAAI,EAAe,CACjF,IAAMwB,EAAM1B,EAAO,SACnB,GAAIE,EAAK,WAAa,GACpBJ,EAAI,QAAKb,GAAA,KAAIC,GAAA,QAAE,IAAI,eAAewC,CAAG,GAAG,UAC/B,OAAOxB,EAAK,UAAY,WAAY,CAC7C,IAAMyB,KAAa1C,GAAA,OAAMwC,CAAa,YAChCG,EAAW9B,EAAI,WAAW,OAAQ,CAAC,IAAKG,EAAU,IAAI,CAAC,EAC7DH,EAAI,QAAKb,GAAA,KAAIC,GAAA,QAAE,IAAI,kBAAkBwC,CAAG,KAAKC,CAAU,KAAKC,CAAQ,UAAU,CAChF,CACF,CAEA,SAASjB,GAAcpB,EAAa,CAClC,GAAM,CAAC,IAAAO,EAAK,UAAAG,EAAW,aAAAF,EAAc,gBAAA8B,EAAiB,KAAA3B,CAAI,EAAIX,EAC1DU,EAAU,OAEZH,EAAI,MACFb,GAAA,KAAIC,GAAA,QAAE,MAAM,SACZ,IAAMY,EAAI,OAAOZ,GAAA,QAAE,IAAI,EACvB,IAAMY,EAAI,SAAMb,GAAA,SAAQ4C,CAAuB,IAAI3C,GAAA,QAAE,OAAO,GAAG,CAAC,GAGlEY,EAAI,UAAOb,GAAA,KAAIc,CAAY,UAAWb,GAAA,QAAE,OAAO,EAC3CgB,EAAK,aAAa4B,GAAgBvC,CAAE,EACxCO,EAAI,UAAOb,GAAA,KAAIC,GAAA,QAAE,MAAM,QAAQ,EAEnC,CAEA,SAAS4C,GAAgB,CAAC,IAAAhC,EAAK,UAAAiC,EAAW,MAAAC,EAAO,MAAAC,CAAK,EAAY,CAC5DD,aAAiB/C,GAAA,MAAMa,EAAI,UAAOb,GAAA,KAAI8C,CAAS,SAAUC,CAAK,EAC9DC,aAAiBhD,GAAA,MAAMa,EAAI,UAAOb,GAAA,KAAI8C,CAAS,SAAUE,CAAK,CACpE,CAEA,SAASX,GACP/B,EACAgC,EACAW,EACAd,EAAgB,CAEhB,GAAM,CAAC,IAAAtB,EAAK,OAAAE,EAAQ,KAAAmC,EAAM,UAAAC,EAAW,KAAAlC,EAAM,KAAAc,CAAI,EAAIzB,EAC7C,CAAC,MAAA8C,CAAK,EAAIrB,EAChB,GAAIhB,EAAO,OAASE,EAAK,uBAAyB,IAACd,GAAA,sBAAqBY,EAAQqC,CAAK,GAAI,CACvFvC,EAAI,MAAM,IAAMwC,GAAY/C,EAAI,OAAS8C,EAAM,IAAI,KAAc,UAAU,CAAC,EAC5E,MACF,CACKnC,EAAK,KAAKqC,GAAiBhD,EAAIgC,CAAK,EACzCzB,EAAI,MAAM,IAAK,CACb,QAAW0C,KAASH,EAAM,MAAOI,EAAcD,CAAK,EACpDC,EAAcJ,EAAM,IAAI,CAC1B,CAAC,EAED,SAASI,EAAcD,EAAgB,IAChC5D,GAAA,gBAAeoB,EAAQwC,CAAK,IAC7BA,EAAM,MACR1C,EAAI,MAAGjB,GAAA,eAAc2D,EAAM,KAAML,EAAMjC,EAAK,aAAa,CAAC,EAC1DwC,GAAgBnD,EAAIiD,CAAK,EACrBjB,EAAM,SAAW,GAAKA,EAAM,CAAC,IAAMiB,EAAM,MAAQN,IACnDpC,EAAI,KAAI,KACRjB,GAAA,iBAAgBU,CAAE,GAEpBO,EAAI,MAAK,GAET4C,GAAgBnD,EAAIiD,CAAK,EAGtBJ,GAAWtC,EAAI,MAAGb,GAAA,KAAIC,GAAA,QAAE,MAAM,QAAQkC,GAAa,CAAC,EAAE,EAC7D,CACF,CAEA,SAASsB,GAAgBnD,EAAkBiD,EAAgB,CACzD,GAAM,CACJ,IAAA1C,EACA,OAAAE,EACA,KAAM,CAAC,YAAA2C,CAAW,CAAC,EACjBpD,EACAoD,MAAa7D,GAAA,gBAAeS,EAAIiD,EAAM,IAAI,EAC9C1C,EAAI,MAAM,IAAK,CACb,QAAW8C,KAAQJ,EAAM,SACnB5D,GAAA,eAAcoB,EAAQ4C,CAAI,GAC5BN,GAAY/C,EAAIqD,EAAK,QAASA,EAAK,WAAYJ,EAAM,IAAI,CAG/D,CAAC,CACH,CAEA,SAASD,GAAiBhD,EAAkBgC,EAAiB,CACvDhC,EAAG,UAAU,MAAQ,CAACA,EAAG,KAAK,cAClCsD,GAAkBtD,EAAIgC,CAAK,EACtBhC,EAAG,KAAK,iBAAiBuD,GAAmBvD,EAAIgC,CAAK,EAC1DwB,GAAkBxD,EAAIA,EAAG,SAAS,EACpC,CAEA,SAASsD,GAAkBtD,EAAkBgC,EAAiB,CAC5D,GAAKA,EAAM,OACX,IAAI,CAAChC,EAAG,UAAU,OAAQ,CACxBA,EAAG,UAAYgC,EACf,MACF,CACAA,EAAM,QAASyB,GAAK,CACbC,GAAa1D,EAAG,UAAWyD,CAAC,GAC/BE,GAAiB3D,EAAI,SAASyD,CAAC,6BAA6BzD,EAAG,UAAU,KAAK,GAAG,CAAC,GAAG,CAEzF,CAAC,EACD4D,GAAkB5D,EAAIgC,CAAK,EAC7B,CAEA,SAASuB,GAAmBvD,EAAkB6D,EAAc,CACtDA,EAAG,OAAS,GAAK,EAAEA,EAAG,SAAW,GAAKA,EAAG,SAAS,MAAM,IAC1DF,GAAiB3D,EAAI,iDAAiD,CAE1E,CAEA,SAASwD,GAAkBxD,EAAkB6D,EAAc,CACzD,IAAMC,EAAQ9D,EAAG,KAAK,MAAM,IAC5B,QAAW+D,KAAWD,EAAO,CAC3B,IAAMT,EAAOS,EAAMC,CAAO,EAC1B,GAAI,OAAOV,GAAQ,aAAYhE,GAAA,eAAcW,EAAG,OAAQqD,CAAI,EAAG,CAC7D,GAAM,CAAC,KAAAW,CAAI,EAAIX,EAAK,WAChBW,EAAK,QAAU,CAACA,EAAK,KAAMP,GAAMQ,GAAkBJ,EAAIJ,CAAC,CAAC,GAC3DE,GAAiB3D,EAAI,iBAAiBgE,EAAK,KAAK,GAAG,CAAC,kBAAkBD,CAAO,GAAG,CAEpF,CACF,CACF,CAEA,SAASE,GAAkBC,EAAmBC,EAAc,CAC1D,OAAOD,EAAM,SAASC,CAAI,GAAMA,IAAS,UAAYD,EAAM,SAAS,SAAS,CAC/E,CAEA,SAASR,GAAaG,EAAgBJ,EAAW,CAC/C,OAAOI,EAAG,SAASJ,CAAC,GAAMA,IAAM,WAAaI,EAAG,SAAS,QAAQ,CACnE,CAEA,SAASD,GAAkB5D,EAAkBoE,EAAqB,CAChE,IAAMP,EAAiB,CAAA,EACvB,QAAWJ,KAAKzD,EAAG,UACb0D,GAAaU,EAAWX,CAAC,EAAGI,EAAG,KAAKJ,CAAC,EAChCW,EAAU,SAAS,SAAS,GAAKX,IAAM,UAAUI,EAAG,KAAK,SAAS,EAE7E7D,EAAG,UAAY6D,CACjB,CAEA,SAASF,GAAiB3D,EAAkBmC,EAAW,CACrD,IAAMC,EAAapC,EAAG,UAAU,OAASA,EAAG,cAC5CmC,GAAO,QAAQC,CAAU,qBACzBvC,GAAA,iBAAgBG,EAAImC,EAAKnC,EAAG,KAAK,WAAW,CAC9C,CAEA,IAAaqE,GAAb,KAAuB,CAiBrB,YAAYrE,EAAkBsE,EAA6BP,EAAe,CAexE,MAdAvE,GAAA,sBAAqBQ,EAAIsE,EAAKP,CAAO,EACrC,KAAK,IAAM/D,EAAG,IACd,KAAK,UAAYA,EAAG,UACpB,KAAK,QAAU+D,EACf,KAAK,KAAO/D,EAAG,KACf,KAAK,OAASA,EAAG,OAAO+D,CAAO,EAC/B,KAAK,MAAQO,EAAI,OAAStE,EAAG,KAAK,OAAS,KAAK,QAAU,KAAK,OAAO,MACtE,KAAK,eAAcH,GAAA,gBAAeG,EAAI,KAAK,OAAQ+D,EAAS,KAAK,KAAK,EACtE,KAAK,WAAaO,EAAI,WACtB,KAAK,aAAetE,EAAG,OACvB,KAAK,OAAS,CAAA,EACd,KAAK,GAAKA,EACV,KAAK,IAAMsE,EAEP,KAAK,MACP,KAAK,WAAatE,EAAG,IAAI,MAAM,UAAWuE,GAAQ,KAAK,MAAOvE,CAAE,CAAC,UAEjE,KAAK,WAAa,KAAK,YACnB,IAACR,GAAA,iBAAgB,KAAK,OAAQ8E,EAAI,WAAYA,EAAI,cAAc,EAClE,MAAM,IAAI,MAAM,GAAGP,CAAO,kBAAkB,KAAK,UAAUO,EAAI,UAAU,CAAC,EAAE,GAI5E,SAAUA,EAAMA,EAAI,YAAcA,EAAI,SAAW,MACnD,KAAK,UAAYtE,EAAG,IAAI,MAAM,QAASL,GAAA,QAAE,MAAM,EAEnD,CAEA,OAAO6E,EAAiBC,EAA4BC,EAAuB,CACzE,KAAK,cAAWhF,GAAA,KAAI8E,CAAS,EAAGC,EAAeC,CAAU,CAC3D,CAEA,WAAWF,EAAiBC,EAA4BC,EAAuB,CAC7E,KAAK,IAAI,GAAGF,CAAS,EACjBE,EAAYA,EAAU,EACrB,KAAK,MAAK,EACXD,GACF,KAAK,IAAI,KAAI,EACbA,EAAa,EACT,KAAK,WAAW,KAAK,IAAI,MAAK,GAE9B,KAAK,UAAW,KAAK,IAAI,MAAK,EAC7B,KAAK,IAAI,KAAI,CAEtB,CAEA,KAAKD,EAAiBE,EAAuB,CAC3C,KAAK,cAAWhF,GAAA,KAAI8E,CAAS,EAAG,OAAWE,CAAU,CACvD,CAEA,KAAKF,EAAgB,CACnB,GAAIA,IAAc,OAAW,CAC3B,KAAK,MAAK,EACL,KAAK,WAAW,KAAK,IAAI,GAAG,EAAK,EACtC,MACF,CACA,KAAK,IAAI,GAAGA,CAAS,EACrB,KAAK,MAAK,EACN,KAAK,UAAW,KAAK,IAAI,MAAK,EAC7B,KAAK,IAAI,KAAI,CACpB,CAEA,UAAUA,EAAe,CACvB,GAAI,CAAC,KAAK,MAAO,OAAO,KAAK,KAAKA,CAAS,EAC3C,GAAM,CAAC,WAAAG,CAAU,EAAI,KACrB,KAAK,QAAKjF,GAAA,KAAIiF,CAAU,yBAAsBjF,GAAA,IAAG,KAAK,aAAY,EAAI8E,CAAS,CAAC,GAAG,CACrF,CAEA,MAAMI,EAAkBC,EAAgCC,EAAuB,CAC7E,GAAID,EAAa,CACf,KAAK,UAAUA,CAAW,EAC1B,KAAK,OAAOD,EAAQE,CAAU,EAC9B,KAAK,UAAU,CAAA,CAAE,EACjB,MACF,CACA,KAAK,OAAOF,EAAQE,CAAU,CAChC,CAEQ,OAAOF,EAAkBE,EAAuB,EACpDF,EAAS9E,GAAA,iBAAmBA,GAAA,aAAa,KAAM,KAAK,IAAI,MAAOgF,CAAU,CAC7E,CAEA,YAAU,IACRhF,GAAA,aAAY,KAAM,KAAK,IAAI,YAAcA,GAAA,iBAAiB,CAC5D,CAEA,OAAK,CACH,GAAI,KAAK,YAAc,OAAW,MAAM,IAAI,MAAM,yCAAyC,KAC3FA,GAAA,kBAAiB,KAAK,IAAK,KAAK,SAAS,CAC3C,CAEA,GAAGiF,EAAoB,CAChB,KAAK,WAAW,KAAK,IAAI,GAAGA,CAAI,CACvC,CAEA,UAAUC,EAAuBC,EAAa,CACxCA,EAAQ,OAAO,OAAO,KAAK,OAAQD,CAAG,EACrC,KAAK,OAASA,CACrB,CAEA,WAAWzD,EAAa2D,EAAuBC,EAAmBzF,GAAA,IAAG,CACnE,KAAK,IAAI,MAAM,IAAK,CAClB,KAAK,WAAW6B,EAAO4D,CAAU,EACjCD,EAAS,CACX,CAAC,CACH,CAEA,WAAW3D,EAAc7B,GAAA,IAAKyF,EAAmBzF,GAAA,IAAG,CAClD,GAAI,CAAC,KAAK,MAAO,OACjB,GAAM,CAAC,IAAAa,EAAK,WAAAoE,EAAY,WAAAS,EAAY,IAAAd,CAAG,EAAI,KAC3C/D,EAAI,MAAGb,GAAA,OAAGA,GAAA,KAAIiF,CAAU,iBAAkBQ,CAAU,CAAC,EACjD5D,IAAU7B,GAAA,KAAKa,EAAI,OAAOgB,EAAO,EAAI,GACrC6D,EAAW,QAAUd,EAAI,kBAC3B/D,EAAI,OAAO,KAAK,aAAY,CAAE,EAC9B,KAAK,WAAU,EACXgB,IAAU7B,GAAA,KAAKa,EAAI,OAAOgB,EAAO,EAAK,GAE5ChB,EAAI,KAAI,CACV,CAEA,cAAY,CACV,GAAM,CAAC,IAAAA,EAAK,WAAAoE,EAAY,WAAAS,EAAY,IAAAd,EAAK,GAAAtE,CAAE,EAAI,KAC/C,SAAON,GAAA,IAAG2F,EAAc,EAAIC,EAAkB,CAAE,EAEhD,SAASD,GAAc,CACrB,GAAID,EAAW,OAAQ,CAErB,GAAI,EAAET,aAAsBjF,GAAA,MAAO,MAAM,IAAI,MAAM,0BAA0B,EAC7E,IAAM6F,EAAK,MAAM,QAAQH,CAAU,EAAIA,EAAa,CAACA,CAAU,EAC/D,SAAO1F,GAAA,QAAIJ,GAAA,gBAAeiG,EAAIZ,EAAY3E,EAAG,KAAK,cAAeV,GAAA,SAAS,KAAK,CAAC,EAClF,CACA,OAAOI,GAAA,GACT,CAEA,SAAS4F,GAAkB,CACzB,GAAIhB,EAAI,eAAgB,CACtB,IAAMkB,EAAoBjF,EAAI,WAAW,gBAAiB,CAAC,IAAK+D,EAAI,cAAc,CAAC,EACnF,SAAO5E,GAAA,MAAK8F,CAAiB,IAAIb,CAAU,GAC7C,CACA,OAAOjF,GAAA,GACT,CACF,CAEA,UAAU+F,EAAqBlE,EAAW,CACxC,IAAMmE,KAAYjG,GAAA,cAAa,KAAK,GAAIgG,CAAI,KAC5ChG,GAAA,qBAAoBiG,EAAW,KAAK,GAAID,CAAI,KAC5ChG,GAAA,qBAAoBiG,EAAWD,CAAI,EACnC,IAAME,EAAc,CAAC,GAAG,KAAK,GAAI,GAAGD,EAAW,MAAO,OAAW,MAAO,MAAS,EACjF,OAAApE,GAAcqE,EAAapE,CAAK,EACzBoE,CACT,CAEA,eAAeC,EAAsBC,EAAoB,CACvD,GAAM,CAAC,GAAA7F,EAAI,IAAAO,CAAG,EAAI,KACbP,EAAG,KAAK,cACTA,EAAG,QAAU,IAAQ4F,EAAU,QAAU,SAC3C5F,EAAG,MAAQH,GAAA,eAAe,MAAMU,EAAKqF,EAAU,MAAO5F,EAAG,MAAO6F,CAAM,GAEpE7F,EAAG,QAAU,IAAQ4F,EAAU,QAAU,SAC3C5F,EAAG,MAAQH,GAAA,eAAe,MAAMU,EAAKqF,EAAU,MAAO5F,EAAG,MAAO6F,CAAM,GAE1E,CAEA,oBAAoBD,EAAsBrE,EAAW,CACnD,GAAM,CAAC,GAAAvB,EAAI,IAAAO,CAAG,EAAI,KAClB,GAAIP,EAAG,KAAK,cAAgBA,EAAG,QAAU,IAAQA,EAAG,QAAU,IAC5D,OAAAO,EAAI,GAAGgB,EAAO,IAAM,KAAK,eAAeqE,EAAWlG,GAAA,IAAI,CAAC,EACjD,EAEX,GA3LFY,GAAA,WAAA+D,GA8LA,SAAStB,GACP/C,EACA+D,EACAO,EACAwB,EAAmB,CAEnB,IAAMC,EAAM,IAAI1B,GAAWrE,EAAIsE,EAAKP,CAAO,EACvC,SAAUO,EACZA,EAAI,KAAKyB,EAAKD,CAAQ,EACbC,EAAI,OAASzB,EAAI,YAC1B9E,GAAA,iBAAgBuG,EAAKzB,CAAG,EACf,UAAWA,KACpB9E,GAAA,kBAAiBuG,EAAKzB,CAAG,GAChBA,EAAI,SAAWA,EAAI,cAC5B9E,GAAA,iBAAgBuG,EAAKzB,CAAG,CAE5B,CAEA,IAAM0B,GAAe,sBACfC,GAAwB,mCAC9B,SAAgB1B,GACd2B,EACA,CAAC,UAAAC,EAAW,UAAAC,EAAW,YAAAC,CAAW,EAAY,CAE9C,IAAIC,EACA1D,EACJ,GAAIsD,IAAU,GAAI,OAAOvG,GAAA,QAAE,SAC3B,GAAIuG,EAAM,CAAC,IAAM,IAAK,CACpB,GAAI,CAACF,GAAa,KAAKE,CAAK,EAAG,MAAM,IAAI,MAAM,yBAAyBA,CAAK,EAAE,EAC/EI,EAAcJ,EACdtD,EAAOjD,GAAA,QAAE,QACX,KAAO,CACL,IAAM4G,EAAUN,GAAsB,KAAKC,CAAK,EAChD,GAAI,CAACK,EAAS,MAAM,IAAI,MAAM,yBAAyBL,CAAK,EAAE,EAC9D,IAAMM,EAAa,CAACD,EAAQ,CAAC,EAE7B,GADAD,EAAcC,EAAQ,CAAC,EACnBD,IAAgB,IAAK,CACvB,GAAIE,GAAML,EAAW,MAAM,IAAI,MAAMM,EAAS,iBAAkBD,CAAE,CAAC,EACnE,OAAOH,EAAYF,EAAYK,CAAE,CACnC,CACA,GAAIA,EAAKL,EAAW,MAAM,IAAI,MAAMM,EAAS,OAAQD,CAAE,CAAC,EAExD,GADA5D,EAAOwD,EAAUD,EAAYK,CAAE,EAC3B,CAACF,EAAa,OAAO1D,CAC3B,CAEA,IAAI8D,EAAO9D,EACL+D,EAAWL,EAAY,MAAM,GAAG,EACtC,QAAWM,KAAWD,EAChBC,IACFhE,KAAOlD,GAAA,KAAIkD,CAAI,MAAGlD,GAAA,gBAAYG,GAAA,qBAAoB+G,CAAO,CAAC,CAAC,GAC3DF,KAAOhH,GAAA,KAAIgH,CAAI,OAAO9D,CAAI,IAG9B,OAAO8D,EAEP,SAASD,EAASI,EAAqBL,EAAU,CAC/C,MAAO,iBAAiBK,CAAW,IAAIL,CAAE,gCAAgCL,CAAS,EACpF,CACF,CAtCA7F,GAAA,QAAAiE,8FC7hBA,IAAqBuC,GAArB,cAA6C,KAAK,CAKhD,YAAYC,EAA8B,CACxC,MAAM,mBAAmB,EACzB,KAAK,OAASA,EACd,KAAK,IAAM,KAAK,WAAa,EAC/B,GATFC,GAAA,QAAAF,8FCFA,IAAAG,GAAA,KAGqBC,GAArB,cAA6C,KAAK,CAIhD,YAAYC,EAAuBC,EAAgBC,EAAaC,EAAY,CAC1E,MAAMA,GAAO,2BAA2BD,CAAG,YAAYD,CAAM,EAAE,EAC/D,KAAK,cAAaH,GAAA,YAAWE,EAAUC,EAAQC,CAAG,EAClD,KAAK,iBAAgBJ,GAAA,gBAAYA,GAAA,aAAYE,EAAU,KAAK,UAAU,CAAC,CACzE,GARFI,GAAA,QAAAL,wLCOA,IAAAM,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KA0DaC,GAAb,KAAsB,CAkBpB,YAAYC,EAAkB,OATrB,KAAA,KAAmB,CAAA,EACnB,KAAA,eAA2C,CAAA,EASlD,IAAIC,EACA,OAAOD,EAAI,QAAU,WAAUC,EAASD,EAAI,QAChD,KAAK,OAASA,EAAI,OAClB,KAAK,SAAWA,EAAI,SACpB,KAAK,KAAOA,EAAI,MAAQ,KACxB,KAAK,QAASE,EAAAF,EAAI,UAAM,MAAAE,IAAA,OAAAA,KAAIN,GAAA,aAAYK,IAASD,EAAI,UAAY,KAAK,CAAC,EACvE,KAAK,WAAaA,EAAI,WACtB,KAAK,UAAYA,EAAI,UACrB,KAAK,KAAOA,EAAI,KAChB,KAAK,OAASC,GAAQ,OACtB,KAAK,KAAO,CAAA,CACd,GA9BFE,GAAA,UAAAJ,GAqCA,SAAgBK,GAAyBC,EAAc,CAErD,IAAMC,EAAOC,GAAmB,KAAK,KAAMF,CAAG,EAC9C,GAAIC,EAAM,OAAOA,EACjB,IAAME,KAASZ,GAAA,aAAY,KAAK,KAAK,YAAaS,EAAI,KAAK,MAAM,EAC3D,CAAC,IAAAI,EAAK,MAAAC,CAAK,EAAI,KAAK,KAAK,KACzB,CAAC,cAAAC,CAAa,EAAI,KAAK,KACvBC,EAAM,IAAInB,GAAA,QAAQ,KAAK,MAAO,CAAC,IAAAgB,EAAK,MAAAC,EAAO,cAAAC,CAAa,CAAC,EAC3DE,EACAR,EAAI,SACNQ,EAAmBD,EAAI,WAAW,QAAS,CACzC,IAAKlB,GAAA,QACL,QAAMD,GAAA,yDACP,GAGH,IAAMqB,EAAeF,EAAI,UAAU,UAAU,EAC7CP,EAAI,aAAeS,EAEnB,IAAMC,EAAuB,CAC3B,IAAAH,EACA,UAAW,KAAK,KAAK,UACrB,KAAMjB,GAAA,QAAE,KACR,WAAYA,GAAA,QAAE,WACd,mBAAoBA,GAAA,QAAE,mBACtB,UAAW,CAACA,GAAA,QAAE,IAAI,EAClB,YAAa,CAACF,GAAA,GAAG,EACjB,UAAW,EACX,UAAW,CAAA,EACX,kBAAmB,IAAI,IACvB,aAAcmB,EAAI,WAChB,SACA,KAAK,KAAK,KAAK,SAAW,GACtB,CAAC,IAAKP,EAAI,OAAQ,QAAMZ,GAAA,WAAUY,EAAI,MAAM,CAAC,EAC7C,CAAC,IAAKA,EAAI,MAAM,CAAC,EAEvB,aAAAS,EACA,gBAAiBD,EACjB,OAAQR,EAAI,OACZ,UAAWA,EACX,OAAAG,EACA,OAAQH,EAAI,QAAUG,EACtB,WAAYf,GAAA,IACZ,cAAeY,EAAI,aAAe,KAAK,KAAK,IAAM,GAAK,KACvD,aAAWZ,GAAA,OACX,KAAM,KAAK,KACX,KAAM,MAGJuB,EACJ,GAAI,CACF,KAAK,cAAc,IAAIX,CAAG,KAC1BP,GAAA,sBAAqBiB,CAAS,EAC9BH,EAAI,SAAS,KAAK,KAAK,KAAK,QAAQ,EAEpC,IAAMK,EAAeL,EAAI,SAAQ,EACjCI,EAAa,GAAGJ,EAAI,UAAUjB,GAAA,QAAE,KAAK,CAAC,UAAUsB,CAAY,GAExD,KAAK,KAAK,KAAK,UAASD,EAAa,KAAK,KAAK,KAAK,QAAQA,EAAYX,CAAG,GAG/E,IAAMa,EADe,IAAI,SAAS,GAAGvB,GAAA,QAAE,IAAI,GAAI,GAAGA,GAAA,QAAE,KAAK,GAAIqB,CAAU,EACpB,KAAM,KAAK,MAAM,IAAG,CAAE,EAUzE,GATA,KAAK,MAAM,MAAMF,EAAc,CAAC,IAAKI,CAAQ,CAAC,EAE9CA,EAAS,OAAS,KAClBA,EAAS,OAASb,EAAI,OACtBa,EAAS,UAAYb,EACjBA,EAAI,SAASa,EAAmC,OAAS,IACzD,KAAK,KAAK,KAAK,SAAW,KAC5BA,EAAS,OAAS,CAAC,aAAAJ,EAAc,aAAAG,EAAc,YAAaL,EAAI,OAAO,GAErE,KAAK,KAAK,YAAa,CACzB,GAAM,CAAC,MAAAO,EAAO,MAAAC,CAAK,EAAIL,EACvBG,EAAS,UAAY,CACnB,MAAOC,aAAiB1B,GAAA,KAAO,OAAY0B,EAC3C,MAAOC,aAAiB3B,GAAA,KAAO,OAAY2B,EAC3C,aAAcD,aAAiB1B,GAAA,KAC/B,aAAc2B,aAAiB3B,GAAA,MAE7ByB,EAAS,SAAQA,EAAS,OAAO,aAAYzB,GAAA,WAAUyB,EAAS,SAAS,EAC/E,CACA,OAAAb,EAAI,SAAWa,EACRb,CACT,OAASgB,EAAG,CACV,aAAOhB,EAAI,SACX,OAAOA,EAAI,aACPW,GAAY,KAAK,OAAO,MAAM,yCAA0CA,CAAU,EAEhFK,CACR,SACE,KAAK,cAAc,OAAOhB,CAAG,CAC/B,CACF,CA5FAF,GAAA,cAAAC,GA8FA,SAAgBkB,GAEdC,EACAC,EACAC,EAAW,OAEXA,KAAM7B,GAAA,YAAW,KAAK,KAAK,YAAa4B,EAAQC,CAAG,EACnD,IAAMC,EAAYH,EAAK,KAAKE,CAAG,EAC/B,GAAIC,EAAW,OAAOA,EAEtB,IAAIpB,EAAOqB,GAAQ,KAAK,KAAMJ,EAAME,CAAG,EACvC,GAAInB,IAAS,OAAW,CACtB,IAAML,GAASC,EAAAqB,EAAK,aAAS,MAAArB,IAAA,OAAA,OAAAA,EAAGuB,CAAG,EAC7B,CAAC,SAAAG,CAAQ,EAAI,KAAK,KACpB3B,IAAQK,EAAO,IAAIP,GAAU,CAAC,OAAAE,EAAQ,SAAA2B,EAAU,KAAAL,EAAM,OAAAC,CAAM,CAAC,EACnE,CAEA,GAAIlB,IAAS,OACb,OAAQiB,EAAK,KAAKE,CAAG,EAAII,GAAgB,KAAK,KAAMvB,CAAI,CAC1D,CAnBAH,GAAA,WAAAmB,GAqBA,SAASO,GAA2BxB,EAAc,CAChD,SAAIT,GAAA,WAAUS,EAAI,OAAQ,KAAK,KAAK,UAAU,EAAUA,EAAI,OACrDA,EAAI,SAAWA,EAAMD,GAAc,KAAK,KAAMC,CAAG,CAC1D,CAGA,SAAgBE,GAA8BuB,EAAiB,CAC7D,QAAWzB,KAAO,KAAK,cACrB,GAAI0B,GAAc1B,EAAKyB,CAAM,EAAG,OAAOzB,CAE3C,CAJAF,GAAA,mBAAAI,GAMA,SAASwB,GAAcC,EAAeC,EAAa,CACjD,OAAOD,EAAG,SAAWC,EAAG,QAAUD,EAAG,OAASC,EAAG,MAAQD,EAAG,SAAWC,EAAG,MAC5E,CAIA,SAASN,GAEPJ,EACAE,GAEA,IAAIpB,EACJ,KAAO,OAAQA,EAAM,KAAK,KAAKoB,CAAG,IAAM,UAAUA,EAAMpB,EACxD,OAAOA,GAAO,KAAK,QAAQoB,CAAG,GAAKS,GAAc,KAAK,KAAMX,EAAME,CAAG,CACvE,CAGA,SAAgBS,GAEdX,EACAE,GAEA,IAAMU,EAAI,KAAK,KAAK,YAAY,MAAMV,CAAG,EACnCW,KAAUxC,GAAA,cAAa,KAAK,KAAK,YAAauC,CAAC,EACjDX,KAAS5B,GAAA,aAAY,KAAK,KAAK,YAAa2B,EAAK,OAAQ,MAAS,EAEtE,GAAI,OAAO,KAAKA,EAAK,MAAM,EAAE,OAAS,GAAKa,IAAYZ,EACrD,OAAOa,GAAe,KAAK,KAAMF,EAAGZ,CAAI,EAG1C,IAAMe,KAAK1C,GAAA,aAAYwC,CAAO,EACxBG,EAAW,KAAK,KAAKD,CAAE,GAAK,KAAK,QAAQA,CAAE,EACjD,GAAI,OAAOC,GAAY,SAAU,CAC/B,IAAMlC,EAAM6B,GAAc,KAAK,KAAMX,EAAMgB,CAAQ,EACnD,OAAI,OAAOlC,GAAK,QAAW,SAAU,OAC9BgC,GAAe,KAAK,KAAMF,EAAG9B,CAAG,CACzC,CAEA,GAAI,OAAOkC,GAAU,QAAW,SAEhC,IADKA,EAAS,UAAUnC,GAAc,KAAK,KAAMmC,CAAQ,EACrDD,OAAO1C,GAAA,aAAY6B,CAAG,EAAG,CAC3B,GAAM,CAAC,OAAAxB,CAAM,EAAIsC,EACX,CAAC,SAAAX,CAAQ,EAAI,KAAK,KAClBY,EAAQvC,EAAO2B,CAAQ,EAC7B,OAAIY,IAAOhB,KAAS5B,GAAA,YAAW,KAAK,KAAK,YAAa4B,EAAQgB,CAAK,GAC5D,IAAIzC,GAAU,CAAC,OAAAE,EAAQ,SAAA2B,EAAU,KAAAL,EAAM,OAAAC,CAAM,CAAC,CACvD,CACA,OAAOa,GAAe,KAAK,KAAMF,EAAGI,CAAQ,EAC9C,CA/BApC,GAAA,cAAA+B,GAiCA,IAAMO,GAAuB,IAAI,IAAI,CACnC,aACA,oBACA,OACA,eACA,cACD,EAED,SAASJ,GAEPK,EACA,CAAC,OAAAlB,EAAQ,OAAAvB,EAAQ,KAAAsB,CAAI,EAAY,OAEjC,KAAIrB,EAAAwC,EAAU,YAAQ,MAAAxC,IAAA,OAAA,OAAAA,EAAG,CAAC,KAAM,IAAK,OACrC,QAAWyC,KAAQD,EAAU,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,EAAG,CACzD,GAAI,OAAOzC,GAAW,UAAW,OACjC,IAAM2C,EAAa3C,KAAOJ,GAAA,kBAAiB8C,CAAI,CAAC,EAChD,GAAIC,IAAe,OAAW,OAC9B3C,EAAS2C,EAET,IAAMJ,EAAQ,OAAOvC,GAAW,UAAYA,EAAO,KAAK,KAAK,QAAQ,EACjE,CAACwC,GAAqB,IAAIE,CAAI,GAAKH,IACrChB,KAAS5B,GAAA,YAAW,KAAK,KAAK,YAAa4B,EAAQgB,CAAK,EAE5D,CACA,IAAIxC,EACJ,GAAI,OAAOC,GAAU,WAAaA,EAAO,MAAQ,IAACJ,GAAA,sBAAqBI,EAAQ,KAAK,KAAK,EAAG,CAC1F,IAAM4C,KAAOjD,GAAA,YAAW,KAAK,KAAK,YAAa4B,EAAQvB,EAAO,IAAI,EAClED,EAAMkC,GAAc,KAAK,KAAMX,EAAMsB,CAAI,CAC3C,CAGA,GAAM,CAAC,SAAAjB,CAAQ,EAAI,KAAK,KAExB,GADA5B,EAAMA,GAAO,IAAID,GAAU,CAAC,OAAAE,EAAQ,SAAA2B,EAAU,KAAAL,EAAM,OAAAC,CAAM,CAAC,EACvDxB,EAAI,SAAWA,EAAI,KAAK,OAAQ,OAAOA,CAE7C,ICnUA,IAAA8C,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACE,IAAO,iFACP,YAAe,sEACf,KAAQ,SACR,SAAY,CAAC,OAAO,EACpB,WAAc,CACZ,MAAS,CACP,KAAQ,SACR,MAAS,CAAC,CAAC,OAAU,uBAAuB,EAAG,CAAC,OAAU,cAAc,CAAC,CAC3E,CACF,EACA,qBAAwB,EAC1B,ICZA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAEA,IAAMC,GAAM,CACV,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,EACL,EAEAJ,GAAO,QAAU,CACf,IAAAI,EACF,IC7BA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAEA,GAAM,CAAE,IAAAC,EAAI,EAAI,KAEVC,GAAW,2FAEjB,SAASC,GAAeC,EAAM,CAC5B,GAAIC,GAAUD,EAAM,GAAG,EAAI,EAAK,MAAO,CAAE,KAAAA,EAAM,OAAQ,EAAM,EAC7D,IAAME,EAAUF,EAAK,MAAMF,EAAQ,GAAK,CAAC,EACnC,CAACK,CAAO,EAAID,EAClB,OAAIC,EACK,CAAE,KAAMC,GAAkBD,EAAS,GAAG,EAAG,OAAQ,EAAK,EAEtD,CAAE,KAAAH,EAAM,OAAQ,EAAM,CAEjC,CAOA,SAASK,GAA0BC,EAAOC,EAAW,GAAO,CAC1D,IAAIC,EAAM,GACNC,EAAQ,GACZ,QAAWC,KAAKJ,EAAO,CACrB,GAAIT,GAAIa,CAAC,IAAM,OAAW,OACtBA,IAAM,KAAOD,IAAU,KAAMA,EAAQ,IACpCA,IAAOD,GAAOE,EACrB,CACA,OAAIH,GAAYC,EAAI,SAAW,IAAGA,EAAM,KACjCA,CACT,CAEA,SAASG,GAASL,EAAO,CACvB,IAAIM,EAAa,EACXC,EAAS,CAAE,MAAO,GAAO,QAAS,GAAI,KAAM,EAAG,EAC/CV,EAAU,CAAC,EACXW,EAAS,CAAC,EACZC,EAAS,GACTC,EAAqB,GACrBC,EAAU,GAEd,SAASC,GAAW,CAClB,GAAIJ,EAAO,OAAQ,CACjB,GAAIC,IAAW,GAAO,CACpB,IAAMI,EAAMd,GAAyBS,CAAM,EAC3C,GAAIK,IAAQ,OACVhB,EAAQ,KAAKgB,CAAG,MAEhB,QAAAN,EAAO,MAAQ,GACR,EAEX,CACAC,EAAO,OAAS,CAClB,CACA,MAAO,EACT,CAEA,QAASM,EAAI,EAAGA,EAAId,EAAM,OAAQc,IAAK,CACrC,IAAMC,EAASf,EAAMc,CAAC,EACtB,GAAI,EAAAC,IAAW,KAAOA,IAAW,KACjC,GAAIA,IAAW,IAAK,CAIlB,GAHIL,IAAuB,KACzBC,EAAU,IAER,CAACC,EAAQ,EAAK,MAGlB,GAFAN,IACAT,EAAQ,KAAK,GAAG,EACZS,EAAa,EAAG,CAElBC,EAAO,MAAQ,GACf,KACF,CACIO,EAAI,GAAK,GAAKd,EAAMc,EAAI,CAAC,IAAM,MACjCJ,EAAqB,IAEvB,QACF,SAAWK,IAAW,IAAK,CACzB,GAAI,CAACH,EAAQ,EAAK,MAElBH,EAAS,EACX,KAAO,CACLD,EAAO,KAAKO,CAAM,EAClB,QACF,CACF,CACA,OAAIP,EAAO,SACLC,EACFF,EAAO,KAAOC,EAAO,KAAK,EAAE,EACnBG,EACTd,EAAQ,KAAKW,EAAO,KAAK,EAAE,CAAC,EAE5BX,EAAQ,KAAKE,GAAyBS,CAAM,CAAC,GAGjDD,EAAO,QAAUV,EAAQ,KAAK,EAAE,EACzBU,CACT,CAEA,SAASS,GAAetB,EAAM,CAC5B,GAAIC,GAAUD,EAAM,GAAG,EAAI,EAAK,MAAO,CAAE,KAAAA,EAAM,OAAQ,EAAM,EAC7D,IAAMuB,EAAOZ,GAAQX,CAAI,EAEzB,GAAKuB,EAAK,MASR,MAAO,CAAE,KAAAvB,EAAM,OAAQ,EAAM,EATd,CACf,IAAIwB,EAAUD,EAAK,QACfE,EAAcF,EAAK,QACvB,OAAIA,EAAK,OACPC,GAAW,IAAMD,EAAK,KACtBE,GAAe,MAAQF,EAAK,MAEvB,CAAE,KAAMC,EAAS,YAAAC,EAAa,OAAQ,EAAK,CACpD,CAGF,CAEA,SAASrB,GAAmBsB,EAAKC,EAAO,CACtC,IAAIC,EAAM,GACNC,EAAO,GACLC,EAAIJ,EAAI,OACd,QAASN,EAAI,EAAGA,EAAIU,EAAGV,IAAK,CAC1B,IAAMV,EAAIgB,EAAIN,CAAC,EACXV,IAAM,KAAOmB,GACVT,EAAI,GAAKU,GAAKJ,EAAIN,EAAI,CAAC,IAAMO,GAAUP,EAAI,IAAMU,KACpDF,GAAOlB,EACPmB,EAAO,KAGLnB,IAAMiB,EACRE,EAAO,GAEPA,EAAO,GAETD,GAAOlB,EAEX,CACA,OAAOkB,CACT,CAEA,SAAS3B,GAAWyB,EAAKC,EAAO,CAC9B,IAAII,EAAM,EACV,QAASX,EAAI,EAAGA,EAAIM,EAAI,OAAQN,IAC1BM,EAAIN,CAAC,IAAMO,GAAOI,IAExB,OAAOA,CACT,CAEA,IAAMC,GAAO,YACPC,GAAO,iBACPC,GAAO,mBACPC,GAAO,0BAEb,SAASC,GAAmB9B,EAAO,CACjC,IAAMO,EAAS,CAAC,EAEhB,KAAOP,EAAM,QACX,GAAIA,EAAM,MAAM0B,EAAI,EAClB1B,EAAQA,EAAM,QAAQ0B,GAAM,EAAE,UACrB1B,EAAM,MAAM2B,EAAI,EACzB3B,EAAQA,EAAM,QAAQ2B,GAAM,GAAG,UACtB3B,EAAM,MAAM4B,EAAI,EACzB5B,EAAQA,EAAM,QAAQ4B,GAAM,GAAG,EAC/BrB,EAAO,IAAI,UACFP,IAAU,KAAOA,IAAU,KACpCA,EAAQ,OACH,CACL,IAAM+B,EAAK/B,EAAM,MAAM6B,EAAI,EAC3B,GAAIE,EAAI,CACN,IAAMC,EAAID,EAAG,CAAC,EACd/B,EAAQA,EAAM,MAAMgC,EAAE,MAAM,EAC5BzB,EAAO,KAAKyB,CAAC,CACf,KACE,OAAM,IAAI,MAAM,kCAAkC,CAEtD,CAEF,OAAOzB,EAAO,KAAK,EAAE,CACvB,CAEA,SAAS0B,GAA4BC,EAAYC,EAAK,CACpD,IAAMC,EAAOD,IAAQ,GAAO,OAAS,SACrC,OAAID,EAAW,SAAW,SACxBA,EAAW,OAASE,EAAKF,EAAW,MAAM,GAExCA,EAAW,WAAa,SAC1BA,EAAW,SAAWE,EAAKF,EAAW,QAAQ,GAE5CA,EAAW,OAAS,SACtBA,EAAW,KAAOE,EAAKF,EAAW,IAAI,GAEpCA,EAAW,OAAS,SACtBA,EAAW,KAAOE,EAAKF,EAAW,IAAI,GAEpCA,EAAW,QAAU,SACvBA,EAAW,MAAQE,EAAKF,EAAW,KAAK,GAEtCA,EAAW,WAAa,SAC1BA,EAAW,SAAWE,EAAKF,EAAW,QAAQ,GAEzCA,CACT,CAEA,SAASG,GAAoBH,EAAY,CACvC,IAAMI,EAAY,CAAC,EAOnB,GALIJ,EAAW,WAAa,SAC1BI,EAAU,KAAKJ,EAAW,QAAQ,EAClCI,EAAU,KAAK,GAAG,GAGhBJ,EAAW,OAAS,OAAW,CACjC,IAAIxC,EAAO,SAASwC,EAAW,IAAI,EAC7BK,EAAU9C,GAAcC,CAAI,EAElC,GAAI6C,EAAQ,OACV7C,EAAO6C,EAAQ,SACV,CACL,IAAMC,EAAUxB,GAAcuB,EAAQ,IAAI,EACtCC,EAAQ,SAAW,GACrB9C,EAAO,IAAI8C,EAAQ,WAAW,IAE9B9C,EAAOwC,EAAW,IAEtB,CACAI,EAAU,KAAK5C,CAAI,CACrB,CAEA,OAAI,OAAOwC,EAAW,MAAS,UAAY,OAAOA,EAAW,MAAS,YACpEI,EAAU,KAAK,GAAG,EAClBA,EAAU,KAAK,OAAOJ,EAAW,IAAI,CAAC,GAGjCI,EAAU,OAASA,EAAU,KAAK,EAAE,EAAI,MACjD,CAEAnD,GAAO,QAAU,CACf,mBAAAkD,GACA,2BAAAJ,GACA,kBAAAH,GACA,cAAArC,GACA,cAAAuB,GACA,yBAAAjB,EACF,ICnPA,IAAA0C,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAEA,IAAMC,GAAW,8DACXC,GAAU,oEAEhB,SAASC,GAAUC,EAAc,CAC/B,OAAO,OAAOA,EAAa,QAAW,UAAYA,EAAa,OAAS,OAAOA,EAAa,MAAM,EAAE,YAAY,IAAM,KACxH,CAEA,SAASC,GAAWC,EAAY,CAC9B,OAAKA,EAAW,OACdA,EAAW,MAAQA,EAAW,OAAS,+BAGlCA,CACT,CAEA,SAASC,GAAeD,EAAY,CAClC,IAAME,EAAS,OAAOF,EAAW,MAAM,EAAE,YAAY,IAAM,QAG3D,OAAIA,EAAW,QAAUE,EAAS,IAAM,KAAOF,EAAW,OAAS,MACjEA,EAAW,KAAO,QAIfA,EAAW,OACdA,EAAW,KAAO,KAObA,CACT,CAEA,SAASG,GAASL,EAAc,CAE9B,OAAAA,EAAa,OAASD,GAASC,CAAY,EAG3CA,EAAa,cAAgBA,EAAa,MAAQ,MAAQA,EAAa,MAAQ,IAAMA,EAAa,MAAQ,IAC1GA,EAAa,KAAO,OACpBA,EAAa,MAAQ,OAEdA,CACT,CAEA,SAASM,GAAaN,EAAc,CAalC,IAXIA,EAAa,QAAUD,GAASC,CAAY,EAAI,IAAM,KAAOA,EAAa,OAAS,MACrFA,EAAa,KAAO,QAIlB,OAAOA,EAAa,QAAW,YACjCA,EAAa,OAAUA,EAAa,OAAS,MAAQ,KACrDA,EAAa,OAAS,QAIpBA,EAAa,aAAc,CAC7B,GAAM,CAACO,EAAMC,CAAK,EAAIR,EAAa,aAAa,MAAM,GAAG,EACzDA,EAAa,KAAQO,GAAQA,IAAS,IAAMA,EAAO,OACnDP,EAAa,MAAQQ,EACrBR,EAAa,aAAe,MAC9B,CAGA,OAAAA,EAAa,SAAW,OAEjBA,CACT,CAEA,SAASS,GAAUC,EAAeC,EAAS,CACzC,GAAI,CAACD,EAAc,KACjB,OAAAA,EAAc,MAAQ,wBACfA,EAET,IAAME,EAAUF,EAAc,KAAK,MAAMZ,EAAO,EAChD,GAAIc,EAAS,CACX,IAAMC,EAASF,EAAQ,QAAUD,EAAc,QAAU,MACzDA,EAAc,IAAME,EAAQ,CAAC,EAAE,YAAY,EAC3CF,EAAc,IAAME,EAAQ,CAAC,EAC7B,IAAME,EAAY,GAAGD,CAAM,IAAIF,EAAQ,KAAOD,EAAc,GAAG,GACzDK,EAAgBC,GAAQF,CAAS,EACvCJ,EAAc,KAAO,OAEjBK,IACFL,EAAgBK,EAAc,MAAML,EAAeC,CAAO,EAE9D,MACED,EAAc,MAAQA,EAAc,OAAS,yBAG/C,OAAOA,CACT,CAEA,SAASO,GAAcP,EAAeC,EAAS,CAC7C,IAAME,EAASF,EAAQ,QAAUD,EAAc,QAAU,MACnDQ,EAAMR,EAAc,IAAI,YAAY,EACpCI,EAAY,GAAGD,CAAM,IAAIF,EAAQ,KAAOO,CAAG,GAC3CH,EAAgBC,GAAQF,CAAS,EAEnCC,IACFL,EAAgBK,EAAc,UAAUL,EAAeC,CAAO,GAGhE,IAAMQ,EAAgBT,EAChBU,EAAMV,EAAc,IAC1B,OAAAS,EAAc,KAAO,GAAGD,GAAOP,EAAQ,GAAG,IAAIS,CAAG,GAEjDT,EAAQ,WAAa,GACdQ,CACT,CAEA,SAASE,GAAcX,EAAeC,EAAS,CAC7C,IAAMW,EAAiBZ,EACvB,OAAAY,EAAe,KAAOA,EAAe,IACrCA,EAAe,IAAM,OAEjB,CAACX,EAAQ,WAAa,CAACW,EAAe,MAAQ,CAACzB,GAAS,KAAKyB,EAAe,IAAI,KAClFA,EAAe,MAAQA,EAAe,OAAS,sBAG1CA,CACT,CAEA,SAASC,GAAkBD,EAAgB,CACzC,IAAMZ,EAAgBY,EAEtB,OAAAZ,EAAc,KAAOY,EAAe,MAAQ,IAAI,YAAY,EACrDZ,CACT,CAEA,IAAMc,GAAO,CACX,OAAQ,OACR,WAAY,GACZ,MAAOvB,GACP,UAAWE,EACb,EAEMsB,GAAQ,CACZ,OAAQ,QACR,WAAYD,GAAK,WACjB,MAAOvB,GACP,UAAWE,EACb,EAEMuB,GAAK,CACT,OAAQ,KACR,WAAY,GACZ,MAAOrB,GACP,UAAWC,EACb,EAEMqB,GAAM,CACV,OAAQ,MACR,WAAYD,GAAG,WACf,MAAOA,GAAG,MACV,UAAWA,GAAG,SAChB,EAEME,GAAM,CACV,OAAQ,MACR,MAAOnB,GACP,UAAWQ,GACX,cAAe,EACjB,EAEMY,GAAU,CACd,OAAQ,WACR,MAAOR,GACP,UAAWE,GACX,cAAe,EACjB,EAEMP,GAAU,CACd,KAAAQ,GACA,MAAAC,GACA,GAAAC,GACA,IAAAC,GACA,IAAAC,GACA,WAAYC,EACd,EAEApC,GAAO,QAAUuB,KC3LjB,IAAAc,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAAAC,IAAAC,IAEA,GAAM,CAAE,cAAAC,GAAe,cAAAC,GAAe,kBAAAC,GAAmB,mBAAAC,GAAoB,2BAAAC,EAA2B,EAAI,KACtGC,GAAU,KAEhB,SAASC,GAAWC,EAAKC,EAAS,CAChC,OAAI,OAAOD,GAAQ,SACjBA,EAAME,GAAUC,GAAMH,EAAKC,CAAO,EAAGA,CAAO,EACnC,OAAOD,GAAQ,WACxBA,EAAMG,GAAMD,GAAUF,EAAKC,CAAO,EAAGA,CAAO,GAEvCD,CACT,CAEA,SAASI,GAASC,EAASC,EAAaL,EAAS,CAC/C,IAAMM,EAAoB,OAAO,OAAO,CAAE,OAAQ,MAAO,EAAGN,CAAO,EAC7DO,EAAWC,GAAkBN,GAAME,EAASE,CAAiB,EAAGJ,GAAMG,EAAaC,CAAiB,EAAGA,EAAmB,EAAI,EACpI,OAAOL,GAAUM,EAAU,CAAE,GAAGD,EAAmB,WAAY,EAAK,CAAC,CACvE,CAEA,SAASE,GAAmBC,EAAMC,EAAUV,EAASW,EAAmB,CACtE,IAAMC,EAAS,CAAC,EAChB,OAAKD,IACHF,EAAOP,GAAMD,GAAUQ,EAAMT,CAAO,EAAGA,CAAO,EAC9CU,EAAWR,GAAMD,GAAUS,EAAUV,CAAO,EAAGA,CAAO,GAExDA,EAAUA,GAAW,CAAC,EAElB,CAACA,EAAQ,UAAYU,EAAS,QAChCE,EAAO,OAASF,EAAS,OAEzBE,EAAO,SAAWF,EAAS,SAC3BE,EAAO,KAAOF,EAAS,KACvBE,EAAO,KAAOF,EAAS,KACvBE,EAAO,KAAOlB,GAAkBgB,EAAS,MAAQ,EAAE,EACnDE,EAAO,MAAQF,EAAS,QAEpBA,EAAS,WAAa,QAAaA,EAAS,OAAS,QAAaA,EAAS,OAAS,QAEtFE,EAAO,SAAWF,EAAS,SAC3BE,EAAO,KAAOF,EAAS,KACvBE,EAAO,KAAOF,EAAS,KACvBE,EAAO,KAAOlB,GAAkBgB,EAAS,MAAQ,EAAE,EACnDE,EAAO,MAAQF,EAAS,QAEnBA,EAAS,MAQRA,EAAS,KAAK,OAAO,CAAC,IAAM,IAC9BE,EAAO,KAAOlB,GAAkBgB,EAAS,IAAI,IAExCD,EAAK,WAAa,QAAaA,EAAK,OAAS,QAAaA,EAAK,OAAS,SAAc,CAACA,EAAK,KAC/FG,EAAO,KAAO,IAAMF,EAAS,KACnBD,EAAK,KAGfG,EAAO,KAAOH,EAAK,KAAK,MAAM,EAAGA,EAAK,KAAK,YAAY,GAAG,EAAI,CAAC,EAAIC,EAAS,KAF5EE,EAAO,KAAOF,EAAS,KAIzBE,EAAO,KAAOlB,GAAkBkB,EAAO,IAAI,GAE7CA,EAAO,MAAQF,EAAS,QAnBxBE,EAAO,KAAOH,EAAK,KACfC,EAAS,QAAU,OACrBE,EAAO,MAAQF,EAAS,MAExBE,EAAO,MAAQH,EAAK,OAkBxBG,EAAO,SAAWH,EAAK,SACvBG,EAAO,KAAOH,EAAK,KACnBG,EAAO,KAAOH,EAAK,MAErBG,EAAO,OAASH,EAAK,QAGvBG,EAAO,SAAWF,EAAS,SAEpBE,CACT,CAEA,SAASC,GAAOC,EAAMC,EAAMf,EAAS,CACnC,OAAI,OAAOc,GAAS,UAClBA,EAAO,SAASA,CAAI,EACpBA,EAAOb,GAAUL,GAA2BM,GAAMY,EAAMd,CAAO,EAAG,EAAI,EAAG,CAAE,GAAGA,EAAS,WAAY,EAAK,CAAC,GAChG,OAAOc,GAAS,WACzBA,EAAOb,GAAUL,GAA2BkB,EAAM,EAAI,EAAG,CAAE,GAAGd,EAAS,WAAY,EAAK,CAAC,GAGvF,OAAOe,GAAS,UAClBA,EAAO,SAASA,CAAI,EACpBA,EAAOd,GAAUL,GAA2BM,GAAMa,EAAMf,CAAO,EAAG,EAAI,EAAG,CAAE,GAAGA,EAAS,WAAY,EAAK,CAAC,GAChG,OAAOe,GAAS,WACzBA,EAAOd,GAAUL,GAA2BmB,EAAM,EAAI,EAAG,CAAE,GAAGf,EAAS,WAAY,EAAK,CAAC,GAGpFc,EAAK,YAAY,IAAMC,EAAK,YAAY,CACjD,CAEA,SAASd,GAAWe,EAAOC,EAAM,CAC/B,IAAMC,EAAa,CACjB,KAAMF,EAAM,KACZ,OAAQA,EAAM,OACd,SAAUA,EAAM,SAChB,KAAMA,EAAM,KACZ,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,IAAKA,EAAM,IACX,IAAKA,EAAM,IACX,KAAMA,EAAM,KACZ,SAAUA,EAAM,SAChB,UAAWA,EAAM,UACjB,aAAcA,EAAM,aACpB,OAAQA,EAAM,OACd,MAAO,EACT,EACMhB,EAAU,OAAO,OAAO,CAAC,EAAGiB,CAAI,EAChCE,EAAY,CAAC,EAGbC,EAAgBvB,IAASG,EAAQ,QAAUkB,EAAW,QAAU,IAAI,YAAY,CAAC,EAGnFE,GAAiBA,EAAc,WAAWA,EAAc,UAAUF,EAAYlB,CAAO,EAErFkB,EAAW,OAAS,SACjBlB,EAAQ,WAOXkB,EAAW,KAAO,SAASA,EAAW,IAAI,GAN1CA,EAAW,KAAO,OAAOA,EAAW,IAAI,EAEpCA,EAAW,SAAW,SACxBA,EAAW,KAAOA,EAAW,KAAK,MAAM,KAAK,EAAE,KAAK,GAAG,KAOzDlB,EAAQ,YAAc,UAAYkB,EAAW,QAC/CC,EAAU,KAAKD,EAAW,OAAQ,GAAG,EAGvC,IAAMG,EAAY1B,GAAmBuB,CAAU,EAY/C,GAXIG,IAAc,SACZrB,EAAQ,YAAc,UACxBmB,EAAU,KAAK,IAAI,EAGrBA,EAAU,KAAKE,CAAS,EAEpBH,EAAW,MAAQA,EAAW,KAAK,OAAO,CAAC,IAAM,KACnDC,EAAU,KAAK,GAAG,GAGlBD,EAAW,OAAS,OAAW,CACjC,IAAII,EAAIJ,EAAW,KAEf,CAAClB,EAAQ,eAAiB,CAACoB,GAAiB,CAACA,EAAc,gBAC7DE,EAAI5B,GAAkB4B,CAAC,GAGrBD,IAAc,SAChBC,EAAIA,EAAE,QAAQ,SAAU,MAAM,GAGhCH,EAAU,KAAKG,CAAC,CAClB,CAEA,OAAIJ,EAAW,QAAU,QACvBC,EAAU,KAAK,IAAKD,EAAW,KAAK,EAGlCA,EAAW,WAAa,QAC1BC,EAAU,KAAK,IAAKD,EAAW,QAAQ,EAElCC,EAAU,KAAK,EAAE,CAC1B,CAEA,IAAMI,GAAY,MAAM,KAAK,CAAE,OAAQ,GAAI,EAAG,CAACC,EAAIC,IAAM,8BAA8B,KAAK,OAAO,aAAaA,CAAC,CAAC,CAAC,EAEnH,SAASC,GAAiBC,EAAO,CAC/B,IAAIC,EAAO,EACX,QAASC,EAAI,EAAGC,EAAMH,EAAM,OAAQE,EAAIC,EAAK,EAAED,EAE7C,GADAD,EAAOD,EAAM,WAAWE,CAAC,EACrBD,EAAO,KAAOL,GAAUK,CAAI,EAC9B,MAAO,GAGX,MAAO,EACT,CAEA,IAAMG,GAAY,8HAElB,SAAS7B,GAAOH,EAAKkB,EAAM,CACzB,IAAMjB,EAAU,OAAO,OAAO,CAAC,EAAGiB,CAAI,EAChCe,EAAS,CACb,OAAQ,OACR,SAAU,OACV,KAAM,GACN,KAAM,OACN,KAAM,GACN,MAAO,OACP,SAAU,MACZ,EACMC,EAAclC,EAAI,QAAQ,GAAG,IAAM,GACrCmC,EAAO,GACPlC,EAAQ,YAAc,WAAUD,GAAOC,EAAQ,OAASA,EAAQ,OAAS,IAAM,IAAM,KAAOD,GAEhG,IAAMoC,EAAUpC,EAAI,MAAMgC,EAAS,EAEnC,GAAII,EAAS,CAcX,GAZAH,EAAO,OAASG,EAAQ,CAAC,EACzBH,EAAO,SAAWG,EAAQ,CAAC,EAC3BH,EAAO,KAAOG,EAAQ,CAAC,EACvBH,EAAO,KAAO,SAASG,EAAQ,CAAC,EAAG,EAAE,EACrCH,EAAO,KAAOG,EAAQ,CAAC,GAAK,GAC5BH,EAAO,MAAQG,EAAQ,CAAC,EACxBH,EAAO,SAAWG,EAAQ,CAAC,EAGvB,MAAMH,EAAO,IAAI,IACnBA,EAAO,KAAOG,EAAQ,CAAC,GAErBH,EAAO,KAAM,CACf,IAAMI,EAAa3C,GAAcuC,EAAO,IAAI,EAC5C,GAAII,EAAW,SAAW,GAAO,CAC/B,IAAMC,EAAa7C,GAAc4C,EAAW,IAAI,EAChDJ,EAAO,KAAOK,EAAW,KAAK,YAAY,EAC1CH,EAAOG,EAAW,MACpB,MACEL,EAAO,KAAOI,EAAW,KACzBF,EAAO,EAEX,CACIF,EAAO,SAAW,QAAaA,EAAO,WAAa,QAAaA,EAAO,OAAS,QAAaA,EAAO,OAAS,QAAaA,EAAO,QAAU,QAAa,CAACA,EAAO,KAClKA,EAAO,UAAY,gBACVA,EAAO,SAAW,OAC3BA,EAAO,UAAY,WACVA,EAAO,WAAa,OAC7BA,EAAO,UAAY,WAEnBA,EAAO,UAAY,MAIjBhC,EAAQ,WAAaA,EAAQ,YAAc,UAAYA,EAAQ,YAAcgC,EAAO,YACtFA,EAAO,MAAQA,EAAO,OAAS,gBAAkBhC,EAAQ,UAAY,eAIvE,IAAMoB,EAAgBvB,IAASG,EAAQ,QAAUgC,EAAO,QAAU,IAAI,YAAY,CAAC,EAGnF,GAAI,CAAChC,EAAQ,iBAAmB,CAACoB,GAAiB,CAACA,EAAc,iBAE3DY,EAAO,OAAShC,EAAQ,YAAeoB,GAAiBA,EAAc,aAAgBc,IAAS,IAASR,GAAgBM,EAAO,IAAI,EAErI,GAAI,CACFA,EAAO,KAAO,IAAI,cAAcA,EAAO,KAAK,YAAY,CAAC,CAC3D,OAASM,EAAG,CACVN,EAAO,MAAQA,EAAO,OAAS,qDAAuDM,CACxF,EAKA,CAAClB,GAAkBA,GAAiB,CAACA,EAAc,iBACjDa,GAAeD,EAAO,SAAW,SACnCA,EAAO,OAAS,SAASA,EAAO,MAAM,GAEpCC,GAAeD,EAAO,OAAS,SACjCA,EAAO,KAAO,SAASA,EAAO,IAAI,GAEhCA,EAAO,OACTA,EAAO,KAAO,OAAO,SAASA,EAAO,IAAI,CAAC,GAExCA,EAAO,WACTA,EAAO,SAAW,UAAU,mBAAmBA,EAAO,QAAQ,CAAC,IAK/DZ,GAAiBA,EAAc,OACjCA,EAAc,MAAMY,EAAQhC,CAAO,CAEvC,MACEgC,EAAO,MAAQA,EAAO,OAAS,yBAEjC,OAAOA,CACT,CAEA,IAAMO,GAAU,CACd,QAAA1C,GACA,UAAAC,GACA,QAAAK,GACA,kBAAAK,GACA,MAAAK,GACA,UAAAZ,GACA,MAAAC,EACF,EAEAd,GAAO,QAAUmD,GACjBnD,GAAO,QAAQ,QAAUmD,GACzBnD,GAAO,QAAQ,QAAUmD,8FC9SzB,IAAAC,GAAA,KAGEA,GAAY,KAAO,0CAErBC,GAAA,QAAeD,sKCuBf,IAAAE,GAAA,KAAQ,OAAA,eAAAC,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,UAAU,CAAA,CAAA,EAKlB,IAAAE,GAAA,KAAQ,OAAA,eAAAD,GAAA,IAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,CAAC,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,SAAS,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,OAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,IAAI,CAAA,CAAA,EAAQ,OAAA,eAAAD,GAAA,UAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,OAAO,CAAA,CAAA,EAsBnD,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAEMC,GAA8B,CAACC,EAAKC,IAAU,IAAI,OAAOD,EAAKC,CAAK,EACzEF,GAAc,KAAO,aAErB,IAAMG,GAAyC,CAAC,mBAAoB,cAAe,aAAa,EAC1FC,GAAkB,IAAI,IAAI,CAC9B,WACA,YACA,QACA,UACA,OACA,SACA,UACA,UACA,UACA,gBACA,OACA,MACA,QACD,EAyGKC,GAA8C,CAClD,cAAe,GACf,OAAQ,gDACR,SAAU,8CACV,aAAc,mDACd,WAAY,wDACZ,YAAa,sEACb,YAAa,oEACb,WAAY,oCACZ,eAAgB,0CAChB,eAAgB,0CAChB,YAAa,6CACb,eAAgB,+EAChB,MAAO,8CACP,UAAW,8CACX,UAAW,sBAGPC,GAAoD,CACxD,sBAAuB,GACvB,iBAAkB,GAClB,QAAS,sEA0BLC,GAAiB,IAGvB,SAASC,GAAgBC,EAAU,uDACjC,IAAMC,EAAID,EAAE,OACNE,GAAQC,EAAAH,EAAE,QAAI,MAAAG,IAAA,OAAA,OAAAA,EAAE,SAChBC,GAAWF,IAAU,IAAQA,IAAU,OAAY,EAAIA,GAAS,EAChEG,GAASC,GAAAC,EAAAP,EAAE,QAAI,MAAAO,IAAA,OAAA,OAAAA,EAAE,UAAM,MAAAD,IAAA,OAAAA,EAAIf,GAC3BiB,GAAcC,EAAAT,EAAE,eAAW,MAAAS,IAAA,OAAAA,EAAInB,GAAA,QACrC,MAAO,CACL,cAAcoB,GAAAC,EAAAX,EAAE,gBAAY,MAAAW,IAAA,OAAAA,EAAIV,KAAC,MAAAS,IAAA,OAAAA,EAAI,GACrC,eAAeE,GAAAC,EAAAb,EAAE,iBAAa,MAAAa,IAAA,OAAAA,EAAIZ,KAAC,MAAAW,IAAA,OAAAA,EAAI,GACvC,aAAaE,GAAAC,EAAAf,EAAE,eAAW,MAAAe,IAAA,OAAAA,EAAId,KAAC,MAAAa,IAAA,OAAAA,EAAI,MACnC,cAAcE,GAAAC,EAAAjB,EAAE,gBAAY,MAAAiB,IAAA,OAAAA,EAAIhB,KAAC,MAAAe,IAAA,OAAAA,EAAI,MACrC,gBAAgBE,GAAAC,EAAAnB,EAAE,kBAAc,MAAAmB,IAAA,OAAAA,EAAIlB,KAAC,MAAAiB,IAAA,OAAAA,EAAI,GACzC,KAAMlB,EAAE,KAAO,CAAC,GAAGA,EAAE,KAAM,SAAAI,GAAU,OAAAC,CAAM,EAAI,CAAC,SAAAD,GAAU,OAAAC,CAAM,EAChE,cAAce,EAAApB,EAAE,gBAAY,MAAAoB,IAAA,OAAAA,EAAItB,GAChC,UAAUuB,EAAArB,EAAE,YAAQ,MAAAqB,IAAA,OAAAA,EAAIvB,GACxB,MAAMwB,EAAAtB,EAAE,QAAI,MAAAsB,IAAA,OAAAA,EAAI,GAChB,UAAUC,EAAAvB,EAAE,YAAQ,MAAAuB,IAAA,OAAAA,EAAI,GACxB,YAAYC,EAAAxB,EAAE,cAAU,MAAAwB,IAAA,OAAAA,EAAI,GAC5B,UAAUC,EAAAzB,EAAE,YAAQ,MAAAyB,IAAA,OAAAA,EAAI,MACxB,eAAeC,EAAA1B,EAAE,iBAAa,MAAA0B,IAAA,OAAAA,EAAI,GAClC,gBAAgBC,EAAA3B,EAAE,kBAAc,MAAA2B,IAAA,OAAAA,EAAI,GACpC,iBAAiBC,EAAA5B,EAAE,mBAAe,MAAA4B,IAAA,OAAAA,EAAI,GACtC,eAAeC,EAAA7B,EAAE,iBAAa,MAAA6B,IAAA,OAAAA,EAAI,GAClC,YAAYC,EAAA9B,EAAE,cAAU,MAAA8B,IAAA,OAAAA,EAAI,GAC5B,YAAatB,EAEjB,CAQA,IAAqBuB,GAArB,KAAwB,CAkBtB,YAAYC,EAAgB,CAAA,EAAE,CAZrB,KAAA,QAAyC,CAAA,EACzC,KAAA,KAA+C,CAAA,EAC/C,KAAA,QAA4C,CAAA,EAE5C,KAAA,cAAgC,IAAI,IAC5B,KAAA,SAAyD,CAAA,EACzD,KAAA,OAAoC,IAAI,IAOvDA,EAAO,KAAK,KAAO,CAAC,GAAGA,EAAM,GAAGjC,GAAgBiC,CAAI,CAAC,EACrD,GAAM,CAAC,IAAAC,EAAK,MAAAC,CAAK,EAAI,KAAK,KAAK,KAE/B,KAAK,MAAQ,IAAIjD,GAAA,WAAW,CAAC,MAAO,CAAA,EAAI,SAAUU,GAAiB,IAAAsC,EAAK,MAAAC,CAAK,CAAC,EAC9E,KAAK,OAASC,GAAUH,EAAK,MAAM,EACnC,IAAMI,EAAYJ,EAAK,gBACvBA,EAAK,gBAAkB,GAEvB,KAAK,SAAQjD,GAAA,UAAQ,EACrBsD,GAAa,KAAK,KAAMzC,GAAgBoC,EAAM,eAAe,EAC7DK,GAAa,KAAK,KAAMxC,GAAmBmC,EAAM,aAAc,MAAM,EACrE,KAAK,UAAYM,GAAqB,KAAK,IAAI,EAE3CN,EAAK,SAASO,GAAkB,KAAK,IAAI,EAC7C,KAAK,iBAAgB,EACrB,KAAK,sBAAqB,EACtBP,EAAK,UAAUQ,GAAmB,KAAK,KAAMR,EAAK,QAAQ,EAC1D,OAAOA,EAAK,MAAQ,UAAU,KAAK,cAAcA,EAAK,IAAI,EAC9DS,GAAkB,KAAK,IAAI,EAC3BT,EAAK,gBAAkBI,CACzB,CAEA,kBAAgB,CACd,KAAK,WAAW,QAAQ,CAC1B,CAEA,uBAAqB,CACnB,GAAM,CAAC,MAAAM,EAAO,KAAAC,EAAM,SAAAC,CAAQ,EAAI,KAAK,KACjCC,EAA+BxD,GAC/BuD,IAAa,OACfC,EAAiB,CAAC,GAAGxD,EAAc,EACnCwD,EAAe,GAAKA,EAAe,IACnC,OAAOA,EAAe,KAEpBF,GAAQD,GAAO,KAAK,cAAcG,EAAgBA,EAAeD,CAAQ,EAAG,EAAK,CACvF,CAEA,aAAW,CACT,GAAM,CAAC,KAAAD,EAAM,SAAAC,CAAQ,EAAI,KAAK,KAC9B,OAAQ,KAAK,KAAK,YAAc,OAAOD,GAAQ,SAAWA,EAAKC,CAAQ,GAAKD,EAAO,MACrF,CAoBA,SACEG,EAEAC,GAEA,IAAIC,EACJ,GAAI,OAAOF,GAAgB,UAEzB,GADAE,EAAI,KAAK,UAAaF,CAAY,EAC9B,CAACE,EAAG,MAAM,IAAI,MAAM,8BAA8BF,CAAY,GAAG,OAErEE,EAAI,KAAK,QAAWF,CAAY,EAGlC,IAAMG,EAAQD,EAAED,CAAI,EACpB,MAAM,WAAYC,IAAI,KAAK,OAASA,EAAE,QAC/BC,CACT,CAiBA,QAAqBC,EAAmBC,EAAe,CACrD,IAAMC,EAAM,KAAK,WAAWF,EAAQC,CAAK,EACzC,OAAQC,EAAI,UAAY,KAAK,kBAAkBA,CAAG,CACpD,CAmBA,aACEF,EACAP,EAAc,CAEd,GAAI,OAAO,KAAK,KAAK,YAAc,WACjC,MAAM,IAAI,MAAM,yCAAyC,EAE3D,GAAM,CAAC,WAAAU,CAAU,EAAI,KAAK,KAC1B,OAAOC,EAAgB,KAAK,KAAMJ,EAAQP,CAAI,EAE9C,eAAeW,EAEbC,EACAJ,EAAe,CAEf,MAAMK,EAAe,KAAK,KAAMD,EAAQ,OAAO,EAC/C,IAAMH,EAAM,KAAK,WAAWG,EAASJ,CAAK,EAC1C,OAAOC,EAAI,UAAYK,EAAc,KAAK,KAAML,CAAG,CACrD,CAEA,eAAeI,EAA0BE,EAAa,CAChDA,GAAQ,CAAC,KAAK,UAAUA,CAAI,GAC9B,MAAMJ,EAAgB,KAAK,KAAM,CAAC,KAAAI,CAAI,EAAG,EAAI,CAEjD,CAEA,eAAeD,EAAyBL,EAAc,CACpD,GAAI,CACF,OAAO,KAAK,kBAAkBA,CAAG,CACnC,OAASO,EAAG,CACV,GAAI,EAAEA,aAAa7E,GAAA,SAAkB,MAAM6E,EAC3C,OAAAC,EAAY,KAAK,KAAMD,CAAC,EACxB,MAAME,EAAkB,KAAK,KAAMF,EAAE,aAAa,EAC3CF,EAAc,KAAK,KAAML,CAAG,CACrC,CACF,CAEA,SAASQ,EAAuB,CAAC,cAAeE,EAAK,WAAAC,CAAU,EAAkB,CAC/E,GAAI,KAAK,KAAKD,CAAG,EACf,MAAM,IAAI,MAAM,aAAaA,CAAG,kBAAkBC,CAAU,qBAAqB,CAErF,CAEA,eAAeF,EAA6BC,EAAW,CACrD,IAAMP,EAAU,MAAMS,EAAY,KAAK,KAAMF,CAAG,EAC3C,KAAK,KAAKA,CAAG,GAAG,MAAMN,EAAe,KAAK,KAAMD,EAAQ,OAAO,EAC/D,KAAK,KAAKO,CAAG,GAAG,KAAK,UAAUP,EAASO,EAAKnB,CAAI,CACxD,CAEA,eAAeqB,EAAuBF,EAAW,CAC/C,IAAMG,EAAI,KAAK,SAASH,CAAG,EAC3B,GAAIG,EAAG,OAAOA,EACd,GAAI,CACF,OAAO,MAAO,KAAK,SAASH,CAAG,EAAIT,EAAWS,CAAG,EACnD,SACE,OAAO,KAAK,SAASA,CAAG,CAC1B,CACF,CACF,CAGA,UACEZ,EACAgB,EACAf,EACAgB,EAAkB,KAAK,KAAK,gBAE5B,GAAI,MAAM,QAAQjB,CAAM,EAAG,CACzB,QAAWE,KAAOF,EAAQ,KAAK,UAAUE,EAAK,OAAWD,EAAOgB,CAAe,EAC/E,OAAO,IACT,CACA,IAAIC,EACJ,GAAI,OAAOlB,GAAW,SAAU,CAC9B,GAAM,CAAC,SAAAN,CAAQ,EAAI,KAAK,KAExB,GADAwB,EAAKlB,EAAON,CAAQ,EAChBwB,IAAO,QAAa,OAAOA,GAAM,SACnC,MAAM,IAAI,MAAM,UAAUxB,CAAQ,iBAAiB,CAEvD,CACA,OAAAsB,KAAMhF,GAAA,aAAYgF,GAAOE,CAAE,EAC3B,KAAK,aAAaF,CAAG,EACrB,KAAK,QAAQA,CAAG,EAAI,KAAK,WAAWhB,EAAQC,EAAOe,EAAKC,EAAiB,EAAI,EACtE,IACT,CAIA,cACEjB,EACAgB,EACAC,EAAkB,KAAK,KAAK,gBAE5B,YAAK,UAAUjB,EAAQgB,EAAK,GAAMC,CAAe,EAC1C,IACT,CAGA,eAAejB,EAAmBmB,EAAyB,CACzD,GAAI,OAAOnB,GAAU,UAAW,MAAO,GACvC,IAAIoB,EAEJ,GADAA,EAAUpB,EAAO,QACboB,IAAY,QAAa,OAAOA,GAAW,SAC7C,MAAM,IAAI,MAAM,0BAA0B,EAG5C,GADAA,EAAUA,GAAW,KAAK,KAAK,aAAe,KAAK,YAAW,EAC1D,CAACA,EACH,YAAK,OAAO,KAAK,2BAA2B,EAC5C,KAAK,OAAS,KACP,GAET,IAAMrB,EAAQ,KAAK,SAASqB,EAASpB,CAAM,EAC3C,GAAI,CAACD,GAASoB,EAAiB,CAC7B,IAAME,EAAU,sBAAwB,KAAK,WAAU,EACvD,GAAI,KAAK,KAAK,iBAAmB,MAAO,KAAK,OAAO,MAAMA,CAAO,MAC5D,OAAM,IAAI,MAAMA,CAAO,CAC9B,CACA,OAAOtB,CACT,CAIA,UAAuBuB,EAAc,CACnC,IAAIpB,EACJ,KAAO,OAAQA,EAAMqB,GAAU,KAAK,KAAMD,CAAM,IAAM,UAAUA,EAASpB,EACzE,GAAIA,IAAQ,OAAW,CACrB,GAAM,CAAC,SAAAR,CAAQ,EAAI,KAAK,KAClB8B,EAAO,IAAI1F,GAAA,UAAU,CAAC,OAAQ,CAAA,EAAI,SAAA4D,CAAQ,CAAC,EAEjD,GADAQ,EAAMpE,GAAA,cAAc,KAAK,KAAM0F,EAAMF,CAAM,EACvC,CAACpB,EAAK,OACV,KAAK,KAAKoB,CAAM,EAAIpB,CACtB,CACA,OAAQA,EAAI,UAAY,KAAK,kBAAkBA,CAAG,CACpD,CAMA,aAAaN,EAA0C,CACrD,GAAIA,aAAwB,OAC1B,YAAK,kBAAkB,KAAK,QAASA,CAAY,EACjD,KAAK,kBAAkB,KAAK,KAAMA,CAAY,EACvC,KAET,OAAQ,OAAOA,EAAc,CAC3B,IAAK,YACH,YAAK,kBAAkB,KAAK,OAAO,EACnC,KAAK,kBAAkB,KAAK,IAAI,EAChC,KAAK,OAAO,MAAK,EACV,KACT,IAAK,SAAU,CACb,IAAMM,EAAMqB,GAAU,KAAK,KAAM3B,CAAY,EAC7C,OAAI,OAAOM,GAAO,UAAU,KAAK,OAAO,OAAOA,EAAI,MAAM,EACzD,OAAO,KAAK,QAAQN,CAAY,EAChC,OAAO,KAAK,KAAKA,CAAY,EACtB,IACT,CACA,IAAK,SAAU,CACb,IAAM6B,EAAW7B,EACjB,KAAK,OAAO,OAAO6B,CAAQ,EAC3B,IAAIP,EAAKtB,EAAa,KAAK,KAAK,QAAQ,EACxC,OAAIsB,IACFA,KAAKlF,GAAA,aAAYkF,CAAE,EACnB,OAAO,KAAK,QAAQA,CAAE,EACtB,OAAO,KAAK,KAAKA,CAAE,GAEd,IACT,CACA,QACE,MAAM,IAAI,MAAM,qCAAqC,CACzD,CACF,CAGA,cAAcQ,EAAuB,CACnC,QAAWC,KAAOD,EAAa,KAAK,WAAWC,CAAG,EAClD,OAAO,IACT,CAEA,WACEC,EACAD,GAEA,IAAIE,EACJ,GAAI,OAAOD,GAAY,SACrBC,EAAUD,EACN,OAAOD,GAAO,WAChB,KAAK,OAAO,KAAK,0DAA0D,EAC3EA,EAAI,QAAUE,WAEP,OAAOD,GAAY,UAAYD,IAAQ,QAGhD,GAFAA,EAAMC,EACNC,EAAUF,EAAI,QACV,MAAM,QAAQE,CAAO,GAAK,CAACA,EAAQ,OACrC,MAAM,IAAI,MAAM,wDAAwD,MAG1E,OAAM,IAAI,MAAM,gCAAgC,EAIlD,GADAC,GAAa,KAAK,KAAMD,EAASF,CAAG,EAChC,CAACA,EACH,SAAAzF,GAAA,UAAS2F,EAAUE,GAAQC,GAAQ,KAAK,KAAMD,CAAG,CAAC,EAC3C,KAETE,GAAkB,KAAK,KAAMN,CAAG,EAChC,IAAMO,EAAqC,CACzC,GAAGP,EACH,QAAM1F,GAAA,cAAa0F,EAAI,IAAI,EAC3B,cAAY1F,GAAA,cAAa0F,EAAI,UAAU,GAEzC,SAAAzF,GAAA,UACE2F,EACAK,EAAW,KAAK,SAAW,EACtBC,GAAMH,GAAQ,KAAK,KAAMG,EAAGD,CAAU,EACtCC,GAAMD,EAAW,KAAK,QAASE,GAAMJ,GAAQ,KAAK,KAAMG,EAAGD,EAAYE,CAAC,CAAC,CAAC,EAE1E,IACT,CAEA,WAAWP,EAAe,CACxB,IAAMQ,EAAO,KAAK,MAAM,IAAIR,CAAO,EACnC,OAAO,OAAOQ,GAAQ,SAAWA,EAAK,WAAa,CAAC,CAACA,CACvD,CAGA,cAAcR,EAAe,CAE3B,GAAM,CAAC,MAAAS,CAAK,EAAI,KAChB,OAAOA,EAAM,SAAST,CAAO,EAC7B,OAAOS,EAAM,IAAIT,CAAO,EACxB,QAAWU,KAASD,EAAM,MAAO,CAC/B,IAAM,EAAIC,EAAM,MAAM,UAAWF,GAASA,EAAK,UAAYR,CAAO,EAC9D,GAAK,GAAGU,EAAM,MAAM,OAAO,EAAG,CAAC,CACrC,CACA,OAAO,IACT,CAGA,UAAUC,EAAcC,EAAc,CACpC,OAAI,OAAOA,GAAU,WAAUA,EAAS,IAAI,OAAOA,CAAM,GACzD,KAAK,QAAQD,CAAI,EAAIC,EACd,IACT,CAEA,WACEC,EAA2C,KAAK,OAChD,CAAC,UAAAC,EAAY,KAAM,QAAAC,EAAU,MAAM,EAAuB,CAAA,GAE1D,MAAI,CAACF,GAAUA,EAAO,SAAW,EAAU,YACpCA,EACJ,IAAKjC,GAAM,GAAGmC,CAAO,GAAGnC,EAAE,YAAY,IAAIA,EAAE,OAAO,EAAE,EACrD,OAAO,CAACoC,EAAMC,IAAQD,EAAOF,EAAYG,CAAG,CACjD,CAEA,gBAAgBC,EAA6BC,EAA8B,CACzE,IAAMC,EAAQ,KAAK,MAAM,IACzBF,EAAa,KAAK,MAAM,KAAK,UAAUA,CAAU,CAAC,EAClD,QAAWG,KAAeF,EAAsB,CAC9C,IAAMG,EAAWD,EAAY,MAAM,GAAG,EAAE,MAAM,CAAC,EAC3CE,EAAWL,EACf,QAAWM,KAAOF,EAAUC,EAAWA,EAASC,CAAG,EAEnD,QAAWrC,KAAOiC,EAAO,CACvB,IAAMZ,EAAOY,EAAMjC,CAAG,EACtB,GAAI,OAAOqB,GAAQ,SAAU,SAC7B,GAAM,CAAC,MAAA7C,CAAK,EAAI6C,EAAK,WACfrC,EAASoD,EAASpC,CAAG,EACvBxB,GAASQ,IAAQoD,EAASpC,CAAG,EAAIsC,GAAatD,CAAM,EAC1D,CACF,CAEA,OAAO+C,CACT,CAEQ,kBAAkBQ,EAAiDC,EAAc,CACvF,QAAWlC,KAAUiC,EAAS,CAC5B,IAAMrD,EAAMqD,EAAQjC,CAAM,GACtB,CAACkC,GAASA,EAAM,KAAKlC,CAAM,KACzB,OAAOpB,GAAO,SAChB,OAAOqD,EAAQjC,CAAM,EACZpB,GAAO,CAACA,EAAI,OACrB,KAAK,OAAO,OAAOA,EAAI,MAAM,EAC7B,OAAOqD,EAAQjC,CAAM,GAG3B,CACF,CAEA,WACEtB,EACAP,EACAgE,EACAC,EAAiB,KAAK,KAAK,eAC3BC,EAAY,KAAK,KAAK,cAAa,CAEnC,IAAIzC,EACE,CAAC,SAAAxB,CAAQ,EAAI,KAAK,KACxB,GAAI,OAAOM,GAAU,SACnBkB,EAAKlB,EAAON,CAAQ,MACf,CACL,GAAI,KAAK,KAAK,IAAK,MAAM,IAAI,MAAM,uBAAuB,EACrD,GAAI,OAAOM,GAAU,UAAW,MAAM,IAAI,MAAM,kCAAkC,CACzF,CACA,IAAIE,EAAM,KAAK,OAAO,IAAIF,CAAM,EAChC,GAAIE,IAAQ,OAAW,OAAOA,EAE9BuD,KAASzH,GAAA,aAAYkF,GAAMuC,CAAM,EACjC,IAAMG,EAAY5H,GAAA,cAAc,KAAK,KAAMgE,EAAQyD,CAAM,EACzD,OAAAvD,EAAM,IAAIpE,GAAA,UAAU,CAAC,OAAAkE,EAAQ,SAAAN,EAAU,KAAAD,EAAM,OAAAgE,EAAQ,UAAAG,CAAS,CAAC,EAC/D,KAAK,OAAO,IAAI1D,EAAI,OAAQA,CAAG,EAC3ByD,GAAa,CAACF,EAAO,WAAW,GAAG,IAEjCA,GAAQ,KAAK,aAAaA,CAAM,EACpC,KAAK,KAAKA,CAAM,EAAIvD,GAElBwD,GAAgB,KAAK,eAAe1D,EAAQ,EAAI,EAC7CE,CACT,CAEQ,aAAagB,EAAU,CAC7B,GAAI,KAAK,QAAQA,CAAE,GAAK,KAAK,KAAKA,CAAE,EAClC,MAAM,IAAI,MAAM,0BAA0BA,CAAE,kBAAkB,CAElE,CAEQ,kBAAkBhB,EAAc,CAKtC,GAJIA,EAAI,KAAM,KAAK,mBAAmBA,CAAG,EACpCpE,GAAA,cAAc,KAAK,KAAMoE,CAAG,EAG7B,CAACA,EAAI,SAAU,MAAM,IAAI,MAAM,0BAA0B,EAC7D,OAAOA,EAAI,QACb,CAEQ,mBAAmBA,EAAc,CACvC,IAAM2D,EAAc,KAAK,KACzB,KAAK,KAAO,KAAK,UACjB,GAAI,CACF/H,GAAA,cAAc,KAAK,KAAMoE,CAAG,CAC9B,SACE,KAAK,KAAO2D,CACd,CACF,GA9cOhF,GAAA,gBAAkBlD,GAAA,QAClBkD,GAAA,gBAAkBjD,GAAA,mBAhBNiD,GAqerB,SAASM,GAEP2E,EACAC,EACAjB,EACAkB,EAAwB,QAAO,CAE/B,QAAWhD,KAAO8C,EAAW,CAC3B,IAAMG,EAAMjD,EACRiD,KAAOF,GAAS,KAAK,OAAOC,CAAG,EAAE,GAAGlB,CAAG,YAAY9B,CAAG,KAAK8C,EAAUG,CAAG,CAAC,EAAE,CACjF,CACF,CAEA,SAAS1C,GAAqBD,EAAc,CAC1C,OAAAA,KAAStF,GAAA,aAAYsF,CAAM,EACpB,KAAK,QAAQA,CAAM,GAAK,KAAK,KAAKA,CAAM,CACjD,CAEA,SAAS/B,IAAiB,CACxB,IAAM2E,EAAc,KAAK,KAAK,QAC9B,GAAKA,EACL,GAAI,MAAM,QAAQA,CAAW,EAAG,KAAK,UAAUA,CAAW,MACrD,SAAWlD,KAAOkD,EAAa,KAAK,UAAUA,EAAYlD,CAAG,EAAgBA,CAAG,CACvF,CAEA,SAAS3B,IAAiB,CACxB,QAAWmD,KAAQ,KAAK,KAAK,QAAS,CACpC,IAAMC,EAAS,KAAK,KAAK,QAAQD,CAAI,EACjCC,GAAQ,KAAK,UAAUD,EAAMC,CAAM,CACzC,CACF,CAEA,SAASnD,GAEP6E,EAAsD,CAEtD,GAAI,MAAM,QAAQA,CAAI,EAAG,CACvB,KAAK,cAAcA,CAAI,EACvB,MACF,CACA,KAAK,OAAO,KAAK,kDAAkD,EACnE,QAAWtC,KAAWsC,EAAM,CAC1B,IAAMxC,EAAMwC,EAAKtC,CAAO,EACnBF,EAAI,UAASA,EAAI,QAAUE,GAChC,KAAK,WAAWF,CAAG,CACrB,CACF,CAEA,SAASvC,IAAoB,CAC3B,IAAMgF,EAAW,CAAC,GAAG,KAAK,IAAI,EAC9B,QAAWH,KAAOzH,GAAqB,OAAO4H,EAASH,CAAG,EAC1D,OAAOG,CACT,CAEA,IAAMC,GAAS,CAAC,KAAG,CAAI,EAAG,MAAI,CAAI,EAAG,OAAK,CAAI,CAAC,EAE/C,SAASpF,GAAUqF,EAAgC,CACjD,GAAIA,IAAW,GAAO,OAAOD,GAC7B,GAAIC,IAAW,OAAW,OAAO,QACjC,GAAIA,EAAO,KAAOA,EAAO,MAAQA,EAAO,MAAO,OAAOA,EACtD,MAAM,IAAI,MAAM,mDAAmD,CACrE,CAEA,IAAMC,GAAe,0BAErB,SAASzC,GAAwBD,EAA4BF,EAAuB,CAClF,GAAM,CAAC,MAAAW,CAAK,EAAI,KAKhB,MAJApG,GAAA,UAAS2F,EAAUE,GAAO,CACxB,GAAIO,EAAM,SAASP,CAAG,EAAG,MAAM,IAAI,MAAM,WAAWA,CAAG,qBAAqB,EAC5E,GAAI,CAACwC,GAAa,KAAKxC,CAAG,EAAG,MAAM,IAAI,MAAM,WAAWA,CAAG,mBAAmB,CAChF,CAAC,EACG,EAACJ,GACDA,EAAI,OAAS,EAAE,SAAUA,GAAO,aAAcA,GAChD,MAAM,IAAI,MAAM,uDAAuD,CAE3E,CAEA,SAASK,GAEPH,EACAK,EACAsC,EAAmB,OAEnB,IAAMC,EAAOvC,GAAY,KACzB,GAAIsC,GAAYC,EAAM,MAAM,IAAI,MAAM,6CAA6C,EACnF,GAAM,CAAC,MAAAnC,CAAK,EAAI,KACZoC,EAAYD,EAAOnC,EAAM,KAAOA,EAAM,MAAM,KAAK,CAAC,CAAC,KAAMF,CAAC,IAAMA,IAAMoC,CAAQ,EAMlF,GALKE,IACHA,EAAY,CAAC,KAAMF,EAAU,MAAO,CAAA,CAAE,EACtClC,EAAM,MAAM,KAAKoC,CAAS,GAE5BpC,EAAM,SAAST,CAAO,EAAI,GACtB,CAACK,EAAY,OAEjB,IAAMG,EAAa,CACjB,QAAAR,EACA,WAAY,CACV,GAAGK,EACH,QAAMjG,GAAA,cAAaiG,EAAW,IAAI,EAClC,cAAYjG,GAAA,cAAaiG,EAAW,UAAU,IAG9CA,EAAW,OAAQyC,GAAc,KAAK,KAAMD,EAAWrC,EAAMH,EAAW,MAAM,EAC7EwC,EAAU,MAAM,KAAKrC,CAAI,EAC9BC,EAAM,IAAIT,CAAO,EAAIQ,GACrBpF,EAAAiF,EAAW,cAAU,MAAAjF,IAAA,QAAAA,EAAE,QAAS8E,GAAQ,KAAK,WAAWA,CAAG,CAAC,CAC9D,CAEA,SAAS4C,GAAyBD,EAAsBrC,EAAYuC,EAAc,CAChF,IAAMC,EAAIH,EAAU,MAAM,UAAWI,GAAUA,EAAM,UAAYF,CAAM,EACnEC,GAAK,EACPH,EAAU,MAAM,OAAOG,EAAG,EAAGxC,CAAI,GAEjCqC,EAAU,MAAM,KAAKrC,CAAI,EACzB,KAAK,OAAO,KAAK,QAAQuC,CAAM,iBAAiB,EAEpD,CAEA,SAAS3C,GAA6BN,EAAsB,CAC1D,GAAI,CAAC,WAAAoB,CAAU,EAAIpB,EACfoB,IAAe,SACfpB,EAAI,OAAS,KAAK,KAAK,QAAOoB,EAAaO,GAAaP,CAAU,GACtEpB,EAAI,eAAiB,KAAK,QAAQoB,EAAY,EAAI,EACpD,CAEA,IAAMgC,GAAW,CACf,KAAM,kFAGR,SAASzB,GAAatD,EAAiB,CACrC,MAAO,CAAC,MAAO,CAACA,EAAQ+E,EAAQ,CAAC,CACnC,8HCx3BA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAA6B,CACjC,QAAS,OACT,WAAY,SACZ,KAAKC,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAQC,EAAM,GAAAC,CAAE,EAAIH,EAC1B,CAAC,OAAAI,EAAQ,UAAWC,EAAK,aAAAC,EAAc,KAAAC,EAAM,KAAAC,CAAI,EAAIL,EACrD,CAAC,KAAAM,CAAI,EAAIJ,EACf,IAAKH,IAAS,KAAOA,IAAS,OAASE,IAAWK,EAAK,OAAQ,OAAOC,EAAW,EACjF,IAAMC,EAAWd,GAAA,WAAW,KAAKW,EAAMC,EAAML,EAAQF,CAAI,EACzD,GAAIS,IAAa,OAAW,MAAM,IAAIlB,GAAA,QAAgBU,EAAG,KAAK,YAAaC,EAAQF,CAAI,EACvF,GAAIS,aAAoBd,GAAA,UAAW,OAAOe,EAAaD,CAAQ,EAC/D,OAAOE,EAAgBF,CAAQ,EAE/B,SAASD,GAAW,CAClB,GAAIL,IAAQI,EAAM,OAAOK,GAAQd,EAAKM,EAAcD,EAAKA,EAAI,MAAM,EACnE,IAAMU,EAAWd,EAAI,WAAW,OAAQ,CAAC,IAAKQ,CAAI,CAAC,EACnD,OAAOK,GAAQd,KAAKL,GAAA,KAAIoB,CAAQ,YAAaN,EAAMA,EAAK,MAAM,CAChE,CAEA,SAASG,EAAaI,EAAc,CAClC,IAAMC,EAAIC,GAAYlB,EAAKgB,CAAG,EAC9BF,GAAQd,EAAKiB,EAAGD,EAAKA,EAAI,MAAM,CACjC,CAEA,SAASH,EAAgBG,EAAc,CACrC,IAAMG,EAAUlB,EAAI,WAClB,SACAM,EAAK,KAAK,SAAW,GAAO,CAAC,IAAKS,EAAK,QAAMrB,GAAA,WAAUqB,CAAG,CAAC,EAAI,CAAC,IAAKA,CAAG,CAAC,EAErEI,EAAQnB,EAAI,KAAK,OAAO,EACxBoB,EAASrB,EAAI,UACjB,CACE,OAAQgB,EACR,UAAW,CAAA,EACX,WAAYrB,GAAA,IACZ,aAAcwB,EACd,cAAejB,GAEjBkB,CAAK,EAEPpB,EAAI,eAAeqB,CAAM,EACzBrB,EAAI,GAAGoB,CAAK,CACd,CACF,GAGF,SAAgBF,GAAYlB,EAAiBgB,EAAc,CACzD,GAAM,CAAC,IAAAf,CAAG,EAAID,EACd,OAAOgB,EAAI,SACPf,EAAI,WAAW,WAAY,CAAC,IAAKe,EAAI,QAAQ,CAAC,KAC9CrB,GAAA,KAAIM,EAAI,WAAW,UAAW,CAAC,IAAKe,CAAG,CAAC,CAAC,WAC/C,CALAM,GAAA,YAAAJ,GAOA,SAAgBJ,GAAQd,EAAiBiB,EAASD,EAAiBO,EAAgB,CACjF,GAAM,CAAC,IAAAtB,EAAK,GAAAE,CAAE,EAAIH,EACZ,CAAC,UAAAwB,EAAW,UAAWnB,EAAK,KAAAE,CAAI,EAAIJ,EACpCsB,EAAUlB,EAAK,YAAcX,GAAA,QAAE,KAAOD,GAAA,IACxC4B,EAAQG,EAAY,EACnBC,EAAW,EAEhB,SAASD,GAAY,CACnB,GAAI,CAACrB,EAAI,OAAQ,MAAM,IAAI,MAAM,wCAAwC,EACzE,IAAMe,EAAQnB,EAAI,IAAI,OAAO,EAC7BA,EAAI,IACF,IAAK,CACHA,EAAI,QAAKN,GAAA,cAAUD,GAAA,kBAAiBM,EAAKiB,EAAGQ,CAAO,CAAC,EAAE,EACtDG,EAAiBX,CAAC,EACbO,GAAWvB,EAAI,OAAOmB,EAAO,EAAI,CACxC,EACCS,GAAK,CACJ5B,EAAI,MAAGN,GAAA,OAAMkC,CAAC,eAAe1B,EAAG,eAAuB,IAAK,IAAMF,EAAI,MAAM4B,CAAC,CAAC,EAC9EC,EAAcD,CAAC,EACVL,GAAWvB,EAAI,OAAOmB,EAAO,EAAK,CACzC,CAAC,EAEHpB,EAAI,GAAGoB,CAAK,CACd,CAEA,SAASO,GAAW,CAClB3B,EAAI,UACFN,GAAA,kBAAiBM,EAAKiB,EAAGQ,CAAO,EAChC,IAAMG,EAAiBX,CAAC,EACxB,IAAMa,EAAcb,CAAC,CAAC,CAE1B,CAEA,SAASa,EAAcC,EAAY,CACjC,IAAMC,KAAOrC,GAAA,KAAIoC,CAAM,UACvB9B,EAAI,OAAOL,GAAA,QAAE,WAASD,GAAA,KAAIC,GAAA,QAAE,OAAO,eAAeoC,CAAI,MAAMpC,GAAA,QAAE,OAAO,WAAWoC,CAAI,GAAG,EACvF/B,EAAI,OAAOL,GAAA,QAAE,UAAQD,GAAA,KAAIC,GAAA,QAAE,OAAO,SAAS,CAC7C,CAEA,SAASgC,EAAiBG,EAAY,OACpC,GAAI,CAAC5B,EAAG,KAAK,YAAa,OAC1B,IAAM8B,GAAeC,EAAAlB,GAAK,YAAQ,MAAAkB,IAAA,OAAA,OAAAA,EAAE,UAEpC,GAAI/B,EAAG,QAAU,GACf,GAAI8B,GAAgB,CAACA,EAAa,aAC5BA,EAAa,QAAU,SACzB9B,EAAG,MAAQL,GAAA,eAAe,MAAMG,EAAKgC,EAAa,MAAO9B,EAAG,KAAK,OAE9D,CACL,IAAMgC,EAAQlC,EAAI,IAAI,WAASN,GAAA,KAAIoC,CAAM,kBAAkB,EAC3D5B,EAAG,MAAQL,GAAA,eAAe,MAAMG,EAAKkC,EAAOhC,EAAG,MAAOR,GAAA,IAAI,CAC5D,CAEF,GAAIQ,EAAG,QAAU,GACf,GAAI8B,GAAgB,CAACA,EAAa,aAC5BA,EAAa,QAAU,SACzB9B,EAAG,MAAQL,GAAA,eAAe,MAAMG,EAAKgC,EAAa,MAAO9B,EAAG,KAAK,OAE9D,CACL,IAAMiC,EAAQnC,EAAI,IAAI,WAASN,GAAA,KAAIoC,CAAM,kBAAkB,EAC3D5B,EAAG,MAAQL,GAAA,eAAe,MAAMG,EAAKmC,EAAOjC,EAAG,MAAOR,GAAA,IAAI,CAC5D,CAEJ,CACF,CAhEA2B,GAAA,QAAAR,GAkEAQ,GAAA,QAAevB,8FC/Hf,IAAAsC,GAAA,KAEMC,GAAmB,CACvB,UACA,KACA,QACA,CAAC,QAAS,UAAU,EACpB,cACAD,GAAA,SAGFE,GAAA,QAAeD,8FCLf,IAAAE,GAAA,KACAC,GAAA,KAEMC,GAAMD,GAAA,UAmBNE,GAAkC,CACtC,QAAS,CACP,UAAW,mBACX,IAAK,CACH,CAAC,MAAO,KAAM,GAAID,GAAI,IAAK,KAAMA,GAAI,EAAE,EACvC,CAAC,MAAO,IAAK,GAAIA,GAAI,GAAI,KAAMA,GAAI,GAAG,IAG1C,QAAS,CACP,UAAW,mBACX,IAAK,CACH,CAAC,MAAO,KAAM,GAAIA,GAAI,IAAK,KAAMA,GAAI,EAAE,EACvC,CAAC,MAAO,IAAK,GAAIA,GAAI,GAAI,KAAMA,GAAI,GAAG,KAWtCE,GAAgC,CACpC,QAAUC,GAAQL,GAAA,cAAcM,GAAMD,CAAG,EAAE,KAAK,IAAIA,EAAI,UAAU,GAClE,OAASA,GAAQL,GAAA,iBAAiBM,GAAMD,CAAG,EAAE,KAAK,YAAYA,EAAI,UAAU,KAGxEE,GAA6B,CACjC,QAAS,OAAO,KAAKJ,EAAI,EACzB,KAAM,SACN,WAAY,SACZ,MAAO,GACP,MAAAC,GACA,KAAKC,EAAe,CAClB,GAAM,CAAC,KAAAG,EAAM,WAAAC,CAAU,EAAIJ,EAC3BA,EAAI,UAAUL,GAAA,IAAIQ,CAAI,IAAIF,GAAMD,CAAG,EAAE,IAAI,IAAII,CAAU,aAAaD,CAAI,GAAG,CAC7E,GAGF,SAASF,GAAMD,EAAoB,OACjC,IAAMK,EAAUL,EAAI,QACdM,EAAS,GAAAC,EAAAP,EAAI,gBAAY,MAAAO,IAAA,SAAAA,EAAGT,GAAKO,CAAO,EAAE,SAAS,EAAI,EAAI,EACjE,OAAOP,GAAKO,CAAO,EAAE,IAAIC,CAAM,CACjC,CAEAE,GAAA,QAAeN,8FCnEf,IAAMO,GAA6C,CACjD,iBAAkB,UAClB,iBAAkB,WAGdC,GAA6B,CACjC,QAAS,OAAO,KAAKD,EAAI,EACzB,KAAM,SACN,WAAY,UACZ,KAAK,CAAC,QAAAE,EAAS,aAAAC,CAAY,EAAa,CACtC,IAAMC,EAAWJ,GAAKE,CAA4B,EAClD,GAAIC,EAAaC,CAAQ,IAAM,OAC7B,MAAM,IAAI,MAAM,GAAGF,CAAO,0BAA0BE,CAAQ,EAAE,CAElE,GAGFC,GAAA,QAAeJ,8FCvBf,IAAAK,GAAA,KAQMC,GAAgC,CACpC,QAAS,CAAC,CAAC,WAAAC,CAAU,OAAMF,GAAA,2BAA0BE,CAAU,GAC/D,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAMF,GAAA,kBAAiBE,CAAU,KAGjDC,GAA6B,CACjC,QAAS,aACT,KAAM,SACN,WAAY,SACZ,MAAO,GACP,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,WAAAJ,EAAY,GAAAK,CAAE,EAAIH,EAE9BI,EAAOD,EAAG,KAAK,oBACfE,EAAMJ,EAAI,IAAI,KAAK,EACnBK,EAAUF,KACZR,GAAA,yBAAwBS,CAAG,OAAOA,CAAG,UAAUD,CAAI,MACnDR,GAAA,KAAIS,CAAG,iBAAiBA,CAAG,IAC/BL,EAAI,aAAUJ,GAAA,MAAKE,CAAU,cAAcO,CAAG,MAAMH,CAAI,IAAIJ,CAAU,KAAKQ,CAAO,IAAI,CACxF,GAGFC,GAAA,QAAeR,8FC/Bf,SAAwBS,GAAWC,EAAW,CAC5C,IAAMC,EAAMD,EAAI,OACZE,EAAS,EACTC,EAAM,EACNC,EACJ,KAAOD,EAAMF,GACXC,IACAE,EAAQJ,EAAI,WAAWG,GAAK,EACxBC,GAAS,OAAUA,GAAS,OAAUD,EAAMF,IAE9CG,EAAQJ,EAAI,WAAWG,CAAG,GACrBC,EAAQ,SAAY,OAAQD,KAGrC,OAAOD,CACT,CAfAG,GAAA,QAAAN,GAiBAA,GAAW,KAAO,4ICjBlB,IAAAO,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAAgC,CACpC,QAAQ,CAAC,QAAAC,EAAS,WAAAC,CAAU,EAAC,CAC3B,IAAMC,EAAOF,IAAY,YAAc,OAAS,QAChD,SAAOJ,GAAA,qBAAoBM,CAAI,SAASD,CAAU,aACpD,EACA,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAML,GAAA,aAAYK,CAAU,KAG5CE,GAA6B,CACjC,QAAS,CAAC,YAAa,WAAW,EAClC,KAAM,SACN,WAAY,SACZ,MAAO,GACP,MAAAJ,GACA,KAAKK,EAAe,CAClB,GAAM,CAAC,QAAAJ,EAAS,KAAAK,EAAM,WAAAJ,EAAY,GAAAK,CAAE,EAAIF,EAClCG,EAAKP,IAAY,YAAcJ,GAAA,UAAU,GAAKA,GAAA,UAAU,GACxDY,EACJF,EAAG,KAAK,UAAY,MAAQV,GAAA,KAAIS,CAAI,aAAYT,GAAA,QAAIC,GAAA,SAAQO,EAAI,IAAKN,GAAA,OAAU,CAAC,IAAIO,CAAI,IAC1FD,EAAI,aAAUR,GAAA,KAAIY,CAAG,IAAID,CAAE,IAAIN,CAAU,EAAE,CAC7C,GAGFQ,GAAA,QAAeN,8FC3Bf,IAAAO,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,CAAC,CAAC,WAAAC,CAAU,OAAMF,GAAA,2BAA0BE,CAAU,IAC/D,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAMF,GAAA,eAAcE,CAAU,KAG9CC,GAA6B,CACjC,QAAS,UACT,KAAM,SACN,WAAY,SACZ,MAAO,GACP,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,WAAAL,EAAY,GAAAM,CAAE,EAAIJ,EAExCK,EAAID,EAAG,KAAK,cAAgB,IAAM,GAClCE,EAASJ,KAAQN,GAAA,iBAAgBE,CAAU,KAAKO,CAAC,QAAOV,GAAA,YAAWK,EAAKG,CAAM,EACpFH,EAAI,aAAUJ,GAAA,MAAKU,CAAM,SAASL,CAAI,GAAG,CAC3C,GAGFM,GAAA,QAAeR,8FCzBf,IAAAS,GAAA,KAEMC,GAAgC,CACpC,QAAQ,CAAC,QAAAC,EAAS,WAAAC,CAAU,EAAC,CAC3B,IAAMC,EAAOF,IAAY,gBAAkB,OAAS,QACpD,SAAOF,GAAA,qBAAoBI,CAAI,SAASD,CAAU,aACpD,EACA,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAMH,GAAA,aAAYG,CAAU,KAG5CE,GAA6B,CACjC,QAAS,CAAC,gBAAiB,eAAe,EAC1C,KAAM,SACN,WAAY,SACZ,MAAO,GACP,MAAAJ,GACA,KAAKK,EAAe,CAClB,GAAM,CAAC,QAAAJ,EAAS,KAAAK,EAAM,WAAAJ,CAAU,EAAIG,EAC9BE,EAAKN,IAAY,gBAAkBF,GAAA,UAAU,GAAKA,GAAA,UAAU,GAClEM,EAAI,aAAUN,GAAA,iBAAgBO,CAAI,YAAYC,CAAE,IAAIL,CAAU,EAAE,CAClE,GAGFM,GAAA,QAAeJ,8FCvBf,IAAAK,GAAA,KAOAC,GAAA,KACAC,GAAA,KAQMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,gBAAAC,CAAe,CAAC,OAAMH,GAAA,oCAAmCG,CAAe,IAC5F,OAAQ,CAAC,CAAC,OAAQ,CAAC,gBAAAA,CAAe,CAAC,OAAMH,GAAA,uBAAsBG,CAAe,KAG1EC,GAA6B,CACjC,QAAS,WACT,KAAM,SACN,WAAY,QACZ,MAAO,GACP,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,WAAAC,EAAY,KAAAC,EAAM,MAAAC,EAAO,GAAAC,CAAE,EAAIN,EAC7C,CAAC,KAAAO,CAAI,EAAID,EACf,GAAI,CAACD,GAASH,EAAO,SAAW,EAAG,OACnC,IAAMM,EAAUN,EAAO,QAAUK,EAAK,aAItC,GAHID,EAAG,UAAWG,EAAa,EAC1BC,EAAe,EAEhBH,EAAK,eAAgB,CACvB,IAAMI,EAAQX,EAAI,aAAa,WACzB,CAAC,kBAAAY,CAAiB,EAAIZ,EAAI,GAChC,QAAWa,KAAeX,EACxB,GAAIS,IAAQE,CAAW,IAAM,QAAa,CAACD,EAAkB,IAAIC,CAAW,EAAG,CAC7E,IAAMC,EAAaR,EAAG,UAAU,OAASA,EAAG,cACtCS,EAAM,sBAAsBF,CAAW,wBAAwBC,CAAU,wBAC/ElB,GAAA,iBAAgBU,EAAIS,EAAKT,EAAG,KAAK,cAAc,CACjD,CAEJ,CAEA,SAASG,GAAa,CACpB,GAAID,GAAWH,EACbL,EAAI,WAAWL,GAAA,IAAKqB,CAAe,MAEnC,SAAWC,KAAQf,KACjBR,GAAA,wBAAuBM,EAAKiB,CAAI,CAGtC,CAEA,SAASP,GAAe,CACtB,IAAMQ,EAAUjB,EAAI,IAAI,SAAS,EACjC,GAAIO,GAAWH,EAAO,CACpB,IAAMc,EAAQlB,EAAI,IAAI,QAAS,EAAI,EACnCD,EAAI,WAAWmB,EAAO,IAAMC,EAAiBF,EAASC,CAAK,CAAC,EAC5DnB,EAAI,GAAGmB,CAAK,CACd,MACElB,EAAI,MAAGP,GAAA,kBAAiBM,EAAKE,EAAQgB,CAAO,CAAC,KAC7CxB,GAAA,mBAAkBM,EAAKkB,CAAO,EAC9BjB,EAAI,KAAI,CAEZ,CAEA,SAASe,GAAe,CACtBf,EAAI,MAAM,OAAQE,EAAqBc,GAAQ,CAC7CjB,EAAI,UAAU,CAAC,gBAAiBiB,CAAI,CAAC,EACrChB,EAAI,MAAGP,GAAA,kBAAiBO,EAAKG,EAAMa,EAAMV,EAAK,aAAa,EAAG,IAAMP,EAAI,MAAK,CAAE,CACjF,CAAC,CACH,CAEA,SAASoB,EAAiBF,EAAeC,EAAW,CAClDnB,EAAI,UAAU,CAAC,gBAAiBkB,CAAO,CAAC,EACxCjB,EAAI,MACFiB,EACAf,EACA,IAAK,CACHF,EAAI,OAAOkB,KAAOzB,GAAA,gBAAeO,EAAKG,EAAMc,EAASX,EAAK,aAAa,CAAC,EACxEN,EAAI,MAAGN,GAAA,KAAIwB,CAAK,EAAG,IAAK,CACtBnB,EAAI,MAAK,EACTC,EAAI,MAAK,CACX,CAAC,CACH,EACAN,GAAA,GAAG,CAEP,CACF,GAGF0B,GAAA,QAAetB,8FC/Ff,IAAAuB,GAAA,KAEMC,GAAgC,CACpC,QAAQ,CAAC,QAAAC,EAAS,WAAAC,CAAU,EAAC,CAC3B,IAAMC,EAAOF,IAAY,WAAa,OAAS,QAC/C,SAAOF,GAAA,qBAAoBI,CAAI,SAASD,CAAU,QACpD,EACA,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAMH,GAAA,aAAYG,CAAU,KAG5CE,GAA6B,CACjC,QAAS,CAAC,WAAY,UAAU,EAChC,KAAM,QACN,WAAY,SACZ,MAAO,GACP,MAAAJ,GACA,KAAKK,EAAe,CAClB,GAAM,CAAC,QAAAJ,EAAS,KAAAK,EAAM,WAAAJ,CAAU,EAAIG,EAC9BE,EAAKN,IAAY,WAAaF,GAAA,UAAU,GAAKA,GAAA,UAAU,GAC7DM,EAAI,aAAUN,GAAA,KAAIO,CAAI,WAAWC,CAAE,IAAIL,CAAU,EAAE,CACrD,GAGFM,GAAA,QAAeJ,8FCxBf,IAAAK,GAAA,KAGEA,GAAgB,KAAO,4CAEzBC,GAAA,QAAeD,8FCJf,IAAAE,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAQMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,EAAAC,EAAG,EAAAC,CAAC,CAAC,OACvBL,GAAA,+CAA8CK,CAAC,QAAQD,CAAC,kBAC1D,OAAQ,CAAC,CAAC,OAAQ,CAAC,EAAAA,EAAG,EAAAC,CAAC,CAAC,OAAML,GAAA,SAAQI,CAAC,QAAQC,CAAC,KAG5CC,GAA6B,CACjC,QAAS,cACT,KAAM,QACN,WAAY,UACZ,MAAO,GACP,MAAAH,GACA,KAAKI,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,aAAAC,EAAc,WAAAC,EAAY,GAAAC,CAAE,EAAIP,EACjE,GAAI,CAACG,GAAS,CAACC,EAAQ,OACvB,IAAMI,EAAQP,EAAI,IAAI,OAAO,EACvBQ,EAAYJ,EAAa,SAAQb,GAAA,gBAAea,EAAa,KAAK,EAAI,CAAA,EAC5EL,EAAI,WAAWQ,EAAOE,KAAqBjB,GAAA,KAAIa,CAAU,YAAY,EACrEN,EAAI,GAAGQ,CAAK,EAEZ,SAASE,GAAmB,CAC1B,IAAMb,EAAII,EAAI,IAAI,OAAKR,GAAA,KAAIS,CAAI,SAAS,EAClCJ,EAAIG,EAAI,IAAI,GAAG,EACrBD,EAAI,UAAU,CAAC,EAAAH,EAAG,EAAAC,CAAC,CAAC,EACpBG,EAAI,OAAOO,EAAO,EAAI,EACtBP,EAAI,MAAGR,GAAA,KAAII,CAAC,OAAQ,KAAOc,EAAW,EAAKC,EAAQC,GAAQhB,EAAGC,CAAC,CAAC,CAClE,CAEA,SAASa,GAAW,CAClB,OAAOF,EAAU,OAAS,GAAK,CAACA,EAAU,KAAMK,GAAMA,IAAM,UAAYA,IAAM,OAAO,CACvF,CAEA,SAASF,EAAMf,EAASC,EAAO,CAC7B,IAAMiB,EAAOd,EAAI,KAAK,MAAM,EACtBe,KAAYxB,GAAA,gBAAeiB,EAAWM,EAAMR,EAAG,KAAK,cAAef,GAAA,SAAS,KAAK,EACjFyB,EAAUhB,EAAI,MAAM,aAAWR,GAAA,MAAK,EAC1CQ,EAAI,OAAIR,GAAA,MAAKI,CAAC,MAAO,IAAK,CACxBI,EAAI,IAAIc,KAAMtB,GAAA,KAAIS,CAAI,IAAIL,CAAC,GAAG,EAC9BI,EAAI,GAAGe,KAAWvB,GAAA,YAAW,EACzBgB,EAAU,OAAS,GAAGR,EAAI,MAAGR,GAAA,YAAWsB,CAAI,kBAAgBtB,GAAA,KAAIsB,CAAI,SAAS,EACjFd,EACG,MAAGR,GAAA,YAAWwB,CAAO,IAAIF,CAAI,gBAAiB,IAAK,CAClDd,EAAI,OAAOH,KAAGL,GAAA,KAAIwB,CAAO,IAAIF,CAAI,GAAG,EACpCf,EAAI,MAAK,EACTC,EAAI,OAAOO,EAAO,EAAK,EAAE,MAAK,CAChC,CAAC,EACA,QAAKf,GAAA,KAAIwB,CAAO,IAAIF,CAAI,OAAOlB,CAAC,EAAE,CACvC,CAAC,CACH,CAEA,SAASgB,EAAOhB,EAASC,EAAO,CAC9B,IAAMoB,KAAMxB,GAAA,SAAQO,EAAKN,GAAA,OAAK,EACxBwB,EAAQlB,EAAI,KAAK,OAAO,EAC9BA,EAAI,MAAMkB,CAAK,EAAE,OAAI1B,GAAA,MAAKI,CAAC,MAAO,IAChCI,EAAI,OAAIR,GAAA,KAAIK,CAAC,MAAMD,CAAC,KAAKC,CAAC,MAAO,IAC/BG,EAAI,MAAGR,GAAA,KAAIyB,CAAG,IAAIhB,CAAI,IAAIL,CAAC,MAAMK,CAAI,IAAIJ,CAAC,KAAM,IAAK,CACnDE,EAAI,MAAK,EACTC,EAAI,OAAOO,EAAO,EAAK,EAAE,MAAMW,CAAK,CACtC,CAAC,CAAC,CACH,CAEL,CACF,GAGFC,GAAA,QAAerB,8FC5Ef,IAAAsB,GAAA,KACAC,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,4BACT,OAAQ,CAAC,CAAC,WAAAC,CAAU,OAAMJ,GAAA,oBAAmBI,CAAU,KAGnDC,GAA6B,CACjC,QAAS,QACT,MAAO,GACP,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,MAAAC,EAAO,WAAAL,EAAY,OAAAM,CAAM,EAAIJ,EAC3CG,GAAUC,GAAU,OAAOA,GAAU,SACvCJ,EAAI,aAAUN,GAAA,SAAKC,GAAA,SAAQM,EAAKL,GAAA,OAAK,CAAC,IAAIM,CAAI,KAAKJ,CAAU,GAAG,EAEhEE,EAAI,QAAKN,GAAA,KAAIU,CAAM,QAAQF,CAAI,EAAE,CAErC,GAGFG,GAAA,QAAeN,8FCzBf,IAAAO,GAAA,KACAC,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,6CACT,OAAQ,CAAC,CAAC,WAAAC,CAAU,OAAMJ,GAAA,qBAAoBI,CAAU,KAGpDC,GAA6B,CACjC,QAAS,OACT,WAAY,QACZ,MAAO,GACP,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,WAAAN,EAAY,GAAAO,CAAE,EAAIL,EACnD,GAAI,CAACG,GAASC,EAAO,SAAW,EAAG,MAAM,IAAI,MAAM,gCAAgC,EACnF,IAAME,EAAUF,EAAO,QAAUC,EAAG,KAAK,SACrCE,EACEC,EAAS,IAAaD,IAAAA,KAAQZ,GAAA,SAAQM,EAAKL,GAAA,OAAK,GAElDa,EACJ,GAAIH,GAAWH,EACbM,EAAQR,EAAI,IAAI,OAAO,EACvBD,EAAI,WAAWS,EAAOC,CAAQ,MACzB,CAEL,GAAI,CAAC,MAAM,QAAQN,CAAM,EAAG,MAAM,IAAI,MAAM,0BAA0B,EACtE,IAAMO,EAAUV,EAAI,MAAM,UAAWH,CAAU,EAC/CW,KAAQf,GAAA,IAAG,GAAGU,EAAO,IAAI,CAACQ,EAAaC,IAAcC,EAAUH,EAASE,CAAC,CAAC,CAAC,CAC7E,CACAb,EAAI,KAAKS,CAAK,EAEd,SAASC,GAAQ,CACfT,EAAI,OAAOQ,EAAO,EAAK,EACvBR,EAAI,MAAM,IAAKH,EAAqBiB,GAClCd,EAAI,MAAGP,GAAA,KAAIc,EAAM,CAAE,IAAIN,CAAI,KAAKa,CAAC,IAAK,IAAMd,EAAI,OAAOQ,EAAO,EAAI,EAAE,MAAK,CAAE,CAAC,CAEhF,CAEA,SAASK,EAAUH,EAAeE,EAAS,CACzC,IAAMG,EAAMZ,EAAOS,CAAC,EACpB,OAAO,OAAOG,GAAQ,UAAYA,IAAQ,QACtCtB,GAAA,KAAIc,EAAM,CAAE,IAAIN,CAAI,KAAKS,CAAO,IAAIE,CAAC,QACrCnB,GAAA,KAAIQ,CAAI,QAAQc,CAAG,EACzB,CACF,GAGFC,GAAA,QAAelB,8FCpDf,IAAAmB,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAAyB,CAE7BX,GAAA,QACAC,GAAA,QACAC,GAAA,QAEAC,GAAA,QACAC,GAAA,QAEAC,GAAA,QACAC,GAAA,QAEAC,GAAA,QACAC,GAAA,QAEA,CAAC,QAAS,OAAQ,WAAY,CAAC,SAAU,OAAO,CAAC,EACjD,CAAC,QAAS,WAAY,WAAY,SAAS,EAC3CC,GAAA,QACAC,GAAA,SAGFE,GAAA,QAAeD,gIC3Bf,IAAAE,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,IAAAC,CAAG,CAAC,OAAMH,GAAA,+BAA8BG,CAAG,SAC/D,OAAQ,CAAC,CAAC,OAAQ,CAAC,IAAAA,CAAG,CAAC,OAAMH,GAAA,aAAYG,CAAG,KAGxCC,GAA6B,CACjC,QAAS,kBACT,KAAM,QACN,WAAY,CAAC,UAAW,QAAQ,EAChC,OAAQ,cACR,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,aAAAC,EAAc,GAAAC,CAAE,EAAIF,EACrB,CAAC,MAAAG,CAAK,EAAIF,EAChB,GAAI,CAAC,MAAM,QAAQE,CAAK,EAAG,IACzBP,GAAA,iBAAgBM,EAAI,sEAAsE,EAC1F,MACF,CACAE,GAAwBJ,EAAKG,CAAK,CACpC,GAGF,SAAgBC,GAAwBJ,EAAiBG,EAAkB,CACzE,GAAM,CAAC,IAAAE,EAAK,OAAAC,EAAQ,KAAAC,EAAM,QAAAC,EAAS,GAAAN,CAAE,EAAIF,EACzCE,EAAG,MAAQ,GACX,IAAMJ,EAAMO,EAAI,MAAM,SAAOV,GAAA,KAAIY,CAAI,SAAS,EAC9C,GAAID,IAAW,GACbN,EAAI,UAAU,CAAC,IAAKG,EAAM,MAAM,CAAC,EACjCH,EAAI,QAAKL,GAAA,KAAIG,CAAG,OAAOK,EAAM,MAAM,EAAE,UAC5B,OAAOG,GAAU,UAAY,IAACV,GAAA,mBAAkBM,EAAII,CAAM,EAAG,CACtE,IAAMG,EAAQJ,EAAI,IAAI,WAASV,GAAA,KAAIG,CAAG,OAAOK,EAAM,MAAM,EAAE,EAC3DE,EAAI,MAAGV,GAAA,KAAIc,CAAK,EAAG,IAAMC,EAAcD,CAAK,CAAC,EAC7CT,EAAI,GAAGS,CAAK,CACd,CAEA,SAASC,EAAcD,EAAW,CAChCJ,EAAI,SAAS,IAAKF,EAAM,OAAQL,EAAMa,GAAK,CACzCX,EAAI,UAAU,CAAC,QAAAQ,EAAS,SAAUG,EAAG,aAAcf,GAAA,KAAK,GAAG,EAAGa,CAAK,EAC9DP,EAAG,WAAWG,EAAI,MAAGV,GAAA,KAAIc,CAAK,EAAG,IAAMJ,EAAI,MAAK,CAAE,CACzD,CAAC,CACH,CACF,CAnBAO,GAAA,wBAAAR,GAqBAQ,GAAA,QAAeb,sHCrDf,IAAAc,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAA6B,CACjC,QAAS,QACT,KAAM,QACN,WAAY,CAAC,SAAU,QAAS,SAAS,EACzC,OAAQ,cACR,KAAKC,EAAe,CAClB,GAAM,CAAC,OAAAC,EAAQ,GAAAC,CAAE,EAAIF,EACrB,GAAI,MAAM,QAAQC,CAAM,EAAG,OAAOE,GAAcH,EAAK,kBAAmBC,CAAM,EAC9EC,EAAG,MAAQ,GACP,IAAAL,GAAA,mBAAkBK,EAAID,CAAM,GAChCD,EAAI,MAAGF,GAAA,eAAcE,CAAG,CAAC,CAC3B,GAGF,SAAgBG,GACdH,EACAI,EACAC,EAAsBL,EAAI,OAAM,CAEhC,GAAM,CAAC,IAAAM,EAAK,aAAAC,EAAc,KAAAC,EAAM,QAAAC,EAAS,GAAAP,CAAE,EAAIF,EAC/CU,EAAiBH,CAAY,EACzBL,EAAG,KAAK,aAAeG,EAAO,QAAUH,EAAG,QAAU,KACvDA,EAAG,MAAQL,GAAA,eAAe,MAAMS,EAAKD,EAAO,OAAQH,EAAG,KAAK,GAE9D,IAAMS,EAAQL,EAAI,KAAK,OAAO,EACxBM,EAAMN,EAAI,MAAM,SAAOV,GAAA,KAAIY,CAAI,SAAS,EAC9CH,EAAO,QAAQ,CAACQ,EAAgBC,IAAa,IACvCjB,GAAA,mBAAkBK,EAAIW,CAAG,IAC7BP,EAAI,MAAGV,GAAA,KAAIgB,CAAG,MAAME,CAAC,GAAI,IACvBd,EAAI,UACF,CACE,QAAAS,EACA,WAAYK,EACZ,SAAUA,GAEZH,CAAK,CACN,EAEHX,EAAI,GAAGW,CAAK,EACd,CAAC,EAED,SAASD,EAAiBG,EAAoB,CAC5C,GAAM,CAAC,KAAAE,EAAM,cAAAC,CAAa,EAAId,EACxBe,EAAIZ,EAAO,OACXa,EAAYD,IAAMJ,EAAI,WAAaI,IAAMJ,EAAI,UAAYA,EAAIT,CAAU,IAAM,IACnF,GAAIW,EAAK,cAAgB,CAACG,EAAW,CACnC,IAAMC,EAAM,IAAIV,CAAO,QAAQQ,CAAC,oCAAoCb,CAAU,4CAA4CY,CAAa,OACvInB,GAAA,iBAAgBK,EAAIiB,EAAKJ,EAAK,YAAY,CAC5C,CACF,CACF,CApCAK,GAAA,cAAAjB,GAsCAiB,GAAA,QAAerB,8FCzDf,IAAAsB,GAAA,KAEMC,GAA6B,CACjC,QAAS,cACT,KAAM,QACN,WAAY,CAAC,OAAO,EACpB,OAAQ,cACR,KAAOC,MAAQF,GAAA,eAAcE,EAAK,OAAO,GAG3CC,GAAA,QAAeF,8FCJf,IAAAG,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,IAAAC,CAAG,CAAC,OAAML,GAAA,+BAA8BK,CAAG,SAC/D,OAAQ,CAAC,CAAC,OAAQ,CAAC,IAAAA,CAAG,CAAC,OAAML,GAAA,aAAYK,CAAG,KAGxCC,GAA6B,CACjC,QAAS,QACT,KAAM,QACN,WAAY,CAAC,SAAU,SAAS,EAChC,OAAQ,cACR,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,OAAAC,EAAQ,aAAAC,EAAc,GAAAC,CAAE,EAAIH,EAC7B,CAAC,YAAAI,CAAW,EAAIF,EACtBC,EAAG,MAAQ,GACP,IAAAT,GAAA,mBAAkBS,EAAIF,CAAM,IAC5BG,KAAaR,GAAA,yBAAwBI,EAAKI,CAAW,EACpDJ,EAAI,MAAGL,GAAA,eAAcK,CAAG,CAAC,EAChC,GAGFK,GAAA,QAAeN,8FC5Bf,IAAAO,GAAA,KACAC,GAAA,KAQMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,IAAAC,EAAK,IAAAC,CAAG,CAAC,IAC3BA,IAAQ,UACJJ,GAAA,6BAA4BG,CAAG,oBAC/BH,GAAA,6BAA4BG,CAAG,qBAAqBC,CAAG,iBAC7D,OAAQ,CAAC,CAAC,OAAQ,CAAC,IAAAD,EAAK,IAAAC,CAAG,CAAC,IAC1BA,IAAQ,UAAYJ,GAAA,mBAAkBG,CAAG,OAAMH,GAAA,mBAAkBG,CAAG,kBAAkBC,CAAG,KAGvFC,GAA6B,CACjC,QAAS,WACT,KAAM,QACN,WAAY,CAAC,SAAU,SAAS,EAChC,OAAQ,cACR,YAAa,GACb,MAAAH,GACA,KAAKI,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,aAAAC,EAAc,KAAAC,EAAM,GAAAC,CAAE,EAAIL,EAC1CH,EACAC,EACE,CAAC,YAAAQ,EAAa,YAAAC,CAAW,EAAIJ,EAC/BE,EAAG,KAAK,MACVR,EAAMS,IAAgB,OAAY,EAAIA,EACtCR,EAAMS,GAENV,EAAM,EAER,IAAMW,EAAMP,EAAI,MAAM,SAAOP,GAAA,KAAIU,CAAI,SAAS,EAE9C,GADAJ,EAAI,UAAU,CAAC,IAAAH,EAAK,IAAAC,CAAG,CAAC,EACpBA,IAAQ,QAAaD,IAAQ,EAAG,IAClCF,GAAA,iBAAgBU,EAAI,sEAAsE,EAC1F,MACF,CACA,GAAIP,IAAQ,QAAaD,EAAMC,EAAK,IAClCH,GAAA,iBAAgBU,EAAI,iDAAiD,EACrEL,EAAI,KAAI,EACR,MACF,CACA,MAAIL,GAAA,mBAAkBU,EAAIH,CAAM,EAAG,CACjC,IAAIO,KAAOf,GAAA,KAAIc,CAAG,OAAOX,CAAG,GACxBC,IAAQ,SAAWW,KAAOf,GAAA,KAAIe,CAAI,OAAOD,CAAG,OAAOV,CAAG,IAC1DE,EAAI,KAAKS,CAAI,EACb,MACF,CAEAJ,EAAG,MAAQ,GACX,IAAMK,EAAQT,EAAI,KAAK,OAAO,EAC1BH,IAAQ,QAAaD,IAAQ,EAC/Bc,EAAcD,EAAO,IAAMT,EAAI,GAAGS,EAAO,IAAMT,EAAI,MAAK,CAAE,CAAC,EAClDJ,IAAQ,GACjBI,EAAI,IAAIS,EAAO,EAAI,EACfZ,IAAQ,QAAWG,EAAI,MAAGP,GAAA,KAAIU,CAAI,cAAeQ,CAAsB,IAE3EX,EAAI,IAAIS,EAAO,EAAK,EACpBE,EAAsB,GAExBZ,EAAI,OAAOU,EAAO,IAAMV,EAAI,MAAK,CAAE,EAEnC,SAASY,GAAsB,CAC7B,IAAMC,EAAWZ,EAAI,KAAK,QAAQ,EAC5Ba,EAAQb,EAAI,IAAI,QAAS,CAAC,EAChCU,EAAcE,EAAU,IAAMZ,EAAI,GAAGY,EAAU,IAAME,EAAYD,CAAK,CAAC,CAAC,CAC1E,CAEA,SAASH,EAAcK,EAAcC,EAAiB,CACpDhB,EAAI,SAAS,IAAK,EAAGO,EAAMU,GAAK,CAC9BlB,EAAI,UACF,CACE,QAAS,WACT,SAAUkB,EACV,aAAcvB,GAAA,KAAK,IACnB,cAAe,IAEjBqB,CAAM,EAERC,EAAK,CACP,CAAC,CACH,CAEA,SAASF,EAAYD,EAAW,CAC9Bb,EAAI,QAAKP,GAAA,KAAIoB,CAAK,IAAI,EAClBhB,IAAQ,OACVG,EAAI,MAAGP,GAAA,KAAIoB,CAAK,OAAOjB,CAAG,GAAI,IAAMI,EAAI,OAAOS,EAAO,EAAI,EAAE,MAAK,CAAE,GAEnET,EAAI,MAAGP,GAAA,KAAIoB,CAAK,MAAMhB,CAAG,GAAI,IAAMG,EAAI,OAAOS,EAAO,EAAK,EAAE,MAAK,CAAE,EAC/Db,IAAQ,EAAGI,EAAI,OAAOS,EAAO,EAAI,EAChCT,EAAI,MAAGP,GAAA,KAAIoB,CAAK,OAAOjB,CAAG,GAAI,IAAMI,EAAI,OAAOS,EAAO,EAAI,CAAC,EAEpE,CACF,GAGFS,GAAA,QAAepB,4JCpGf,IAAAqB,GAAA,KACAC,GAAA,KACAC,GAAA,KAmBaC,GAAA,MAAgC,CAC3C,QAAS,CAAC,CAAC,OAAQ,CAAC,SAAAC,EAAU,UAAAC,EAAW,KAAAC,CAAI,CAAC,IAAK,CACjD,IAAMC,EAAeF,IAAc,EAAI,WAAa,aACpD,SAAOL,GAAA,iBAAgBO,CAAY,IAAID,CAAI,kBAAkBF,CAAQ,aACvE,EACA,OAAQ,CAAC,CAAC,OAAQ,CAAC,SAAAA,EAAU,UAAAC,EAAW,KAAAC,EAAM,gBAAAE,CAAe,CAAC,OAC5DR,GAAA,gBAAeI,CAAQ;uBACJI,CAAe;iBACrBH,CAAS;YACdC,CAAI,KAGhB,IAAMG,GAA6B,CACjC,QAAS,eACT,KAAM,SACN,WAAY,SACZ,MAAAN,GAAA,MACA,KAAKO,EAAe,CAClB,GAAM,CAACC,EAAUC,CAAO,EAAIC,GAAkBH,CAAG,EACjDI,GAAqBJ,EAAKC,CAAQ,EAClCI,GAAmBL,EAAKE,CAAO,CACjC,GAGF,SAASC,GAAkB,CAAC,OAAAG,CAAM,EAAa,CAC7C,IAAMC,EAAqC,CAAA,EACrCC,EAAiC,CAAA,EACvC,QAAWC,KAAOH,EAAQ,CACxB,GAAIG,IAAQ,YAAa,SACzB,IAAMb,EAAO,MAAM,QAAQU,EAAOG,CAAG,CAAC,EAAIF,EAAeC,EACzDZ,EAAKa,CAAG,EAAIH,EAAOG,CAAG,CACxB,CACA,MAAO,CAACF,EAAcC,CAAU,CAClC,CAEA,SAAgBJ,GACdJ,EACAO,EAA2CP,EAAI,OAAM,CAErD,GAAM,CAAC,IAAAU,EAAK,KAAAC,EAAM,GAAAC,CAAE,EAAIZ,EACxB,GAAI,OAAO,KAAKO,CAAY,EAAE,SAAW,EAAG,OAC5C,IAAMM,EAAUH,EAAI,IAAI,SAAS,EACjC,QAAWI,KAAQP,EAAc,CAC/B,IAAMX,EAAOW,EAAaO,CAAI,EAC9B,GAAIlB,EAAK,SAAW,EAAG,SACvB,IAAMmB,KAAcvB,GAAA,gBAAekB,EAAKC,EAAMG,EAAMF,EAAG,KAAK,aAAa,EACzEZ,EAAI,UAAU,CACZ,SAAUc,EACV,UAAWlB,EAAK,OAChB,KAAMA,EAAK,KAAK,IAAI,EACrB,EACGgB,EAAG,UACLF,EAAI,GAAGK,EAAa,IAAK,CACvB,QAAWC,KAAWpB,KACpBJ,GAAA,wBAAuBQ,EAAKgB,CAAO,CAEvC,CAAC,GAEDN,EAAI,MAAGpB,GAAA,KAAIyB,CAAW,WAAQvB,GAAA,kBAAiBQ,EAAKJ,EAAMiB,CAAO,CAAC,GAAG,KACrErB,GAAA,mBAAkBQ,EAAKa,CAAO,EAC9BH,EAAI,KAAI,EAEZ,CACF,CA5BAjB,GAAA,qBAAAW,GA8BA,SAAgBC,GAAmBL,EAAiBQ,EAAwBR,EAAI,OAAM,CACpF,GAAM,CAAC,IAAAU,EAAK,KAAAC,EAAM,QAAAM,EAAS,GAAAL,CAAE,EAAIZ,EAC3BkB,EAAQR,EAAI,KAAK,OAAO,EAC9B,QAAWI,KAAQN,KACbjB,GAAA,mBAAkBqB,EAAIJ,EAAWM,CAAI,CAAc,IACvDJ,EAAI,MACFlB,GAAA,gBAAekB,EAAKC,EAAMG,EAAMF,EAAG,KAAK,aAAa,EACrD,IAAK,CACH,IAAMO,EAASnB,EAAI,UAAU,CAAC,QAAAiB,EAAS,WAAYH,CAAI,EAAGI,CAAK,EAC/DlB,EAAI,oBAAoBmB,EAAQD,CAAK,CACvC,EACA,IAAMR,EAAI,IAAIQ,EAAO,EAAI,GAE3BlB,EAAI,GAAGkB,CAAK,EAEhB,CAfAzB,GAAA,mBAAAY,GAiBAZ,GAAA,QAAeM,8FCxGf,IAAAqB,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,8BACT,OAAQ,CAAC,CAAC,OAAAC,CAAM,OAAMH,GAAA,oBAAmBG,EAAO,YAAY,KAGxDC,GAA6B,CACjC,QAAS,gBACT,KAAM,SACN,WAAY,CAAC,SAAU,SAAS,EAChC,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,KAAAC,EAAM,GAAAC,CAAE,EAAIJ,EAChC,MAAIJ,GAAA,mBAAkBQ,EAAIF,CAAM,EAAG,OACnC,IAAMG,EAAQJ,EAAI,KAAK,OAAO,EAE9BA,EAAI,MAAM,MAAOE,EAAOG,GAAO,CAC7BN,EAAI,UAAU,CAAC,aAAcM,CAAG,CAAC,EACjCN,EAAI,UACF,CACE,QAAS,gBACT,KAAMM,EACN,UAAW,CAAC,QAAQ,EACpB,aAAcA,EACd,cAAe,IAEjBD,CAAK,EAEPJ,EAAI,MAAGN,GAAA,KAAIU,CAAK,EAAG,IAAK,CACtBL,EAAI,MAAM,EAAI,EACTI,EAAG,WAAWH,EAAI,MAAK,CAC9B,CAAC,CACH,CAAC,EAEDD,EAAI,GAAGK,CAAK,CACd,GAGFE,GAAA,QAAeR,8FC1Cf,IAAAS,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAQMC,GAAgC,CACpC,QAAS,sCACT,OAAQ,CAAC,CAAC,OAAAC,CAAM,OAAMJ,GAAA,0BAAyBI,EAAO,kBAAkB,KAGpEC,GAAsD,CAC1D,QAAS,uBACT,KAAM,CAAC,QAAQ,EACf,WAAY,CAAC,UAAW,QAAQ,EAChC,eAAgB,GAChB,YAAa,GACb,MAAAF,GACA,KAAKG,EAAG,CACN,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,aAAAC,EAAc,KAAAC,EAAM,UAAAC,EAAW,GAAAC,CAAE,EAAIN,EAEzD,GAAI,CAACK,EAAW,MAAM,IAAI,MAAM,0BAA0B,EAC1D,GAAM,CAAC,UAAAE,EAAW,KAAAC,CAAI,EAAIF,EAE1B,GADAA,EAAG,MAAQ,GACPE,EAAK,mBAAqB,UAASZ,GAAA,mBAAkBU,EAAIJ,CAAM,EAAG,OACtE,IAAMO,KAAQhB,GAAA,qBAAoBU,EAAa,UAAU,EACnDO,KAAWjB,GAAA,qBAAoBU,EAAa,iBAAiB,EACnEQ,EAAyB,EACzBX,EAAI,MAAGN,GAAA,KAAIW,CAAS,QAAQV,GAAA,QAAE,MAAM,EAAE,EAEtC,SAASgB,GAAyB,CAChCV,EAAI,MAAM,MAAOG,EAAOQ,GAAa,CAC/B,CAACH,EAAM,QAAU,CAACC,EAAS,OAAQG,EAAuBD,CAAG,EAC5DX,EAAI,GAAGa,EAAaF,CAAG,EAAG,IAAMC,EAAuBD,CAAG,CAAC,CAClE,CAAC,CACH,CAEA,SAASE,EAAaF,EAAS,CAC7B,IAAIG,EACJ,GAAIN,EAAM,OAAS,EAAG,CAEpB,IAAMO,KAAcpB,GAAA,gBAAeU,EAAIH,EAAa,WAAY,YAAY,EAC5EY,KAActB,GAAA,eAAcQ,EAAKe,EAAqBJ,CAAG,CAC3D,MAAWH,EAAM,OACfM,KAAcrB,GAAA,IAAG,GAAGe,EAAM,IAAKQ,MAAMvB,GAAA,KAAIkB,CAAG,QAAQK,CAAC,EAAE,CAAC,EAExDF,EAAcrB,GAAA,IAEhB,OAAIgB,EAAS,SACXK,KAAcrB,GAAA,IAAGqB,EAAa,GAAGL,EAAS,IAAKO,MAAMvB,GAAA,QAAID,GAAA,YAAWO,EAAKiB,CAAC,CAAC,SAASL,CAAG,GAAG,CAAC,MAEtFlB,GAAA,KAAIqB,CAAW,CACxB,CAEA,SAASG,EAAiBN,EAAS,CACjCX,EAAI,QAAKP,GAAA,YAAWU,CAAI,IAAIQ,CAAG,GAAG,CACpC,CAEA,SAASC,EAAuBD,EAAS,CACvC,GAAIJ,EAAK,mBAAqB,OAAUA,EAAK,kBAAoBN,IAAW,GAAQ,CAClFgB,EAAiBN,CAAG,EACpB,MACF,CAEA,GAAIV,IAAW,GAAO,CACpBF,EAAI,UAAU,CAAC,mBAAoBY,CAAG,CAAC,EACvCZ,EAAI,MAAK,EACJO,GAAWN,EAAI,MAAK,EACzB,MACF,CAEA,GAAI,OAAOC,GAAU,UAAY,IAACN,GAAA,mBAAkBU,EAAIJ,CAAM,EAAG,CAC/D,IAAMiB,EAAQlB,EAAI,KAAK,OAAO,EAC1BO,EAAK,mBAAqB,WAC5BY,EAAsBR,EAAKO,EAAO,EAAK,EACvClB,EAAI,MAAGP,GAAA,KAAIyB,CAAK,EAAG,IAAK,CACtBnB,EAAI,MAAK,EACTkB,EAAiBN,CAAG,CACtB,CAAC,IAEDQ,EAAsBR,EAAKO,CAAK,EAC3BZ,GAAWN,EAAI,MAAGP,GAAA,KAAIyB,CAAK,EAAG,IAAMlB,EAAI,MAAK,CAAE,EAExD,CACF,CAEA,SAASmB,EAAsBR,EAAWO,EAAaE,EAAc,CACnE,IAAMC,EAA2B,CAC/B,QAAS,uBACT,SAAUV,EACV,aAAchB,GAAA,KAAK,KAEjByB,IAAW,IACb,OAAO,OAAOC,EAAW,CACvB,cAAe,GACf,aAAc,GACd,UAAW,GACZ,EAEHtB,EAAI,UAAUsB,EAAWH,CAAK,CAChC,CACF,GAGFI,GAAA,QAAexB,8FCpHf,IAAAyB,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAA6B,CACjC,QAAS,aACT,KAAM,SACN,WAAY,SACZ,KAAKC,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,aAAAC,EAAc,KAAAC,EAAM,GAAAC,CAAE,EAAIL,EAC1CK,EAAG,KAAK,mBAAqB,OAASF,EAAa,uBAAyB,QAC9EL,GAAA,QAAM,KAAK,IAAIH,GAAA,WAAWU,EAAIP,GAAA,QAAO,sBAAsB,CAAC,EAE9D,IAAMQ,KAAWV,GAAA,qBAAoBM,CAAM,EAC3C,QAAWK,KAAQD,EACjBD,EAAG,kBAAkB,IAAIE,CAAI,EAE3BF,EAAG,KAAK,aAAeC,EAAS,QAAUD,EAAG,QAAU,KACzDA,EAAG,MAAQR,GAAA,eAAe,MAAMI,KAAKJ,GAAA,QAAOS,CAAQ,EAAGD,EAAG,KAAK,GAEjE,IAAMG,EAAaF,EAAS,OAAQG,GAAM,IAACZ,GAAA,mBAAkBQ,EAAIH,EAAOO,CAAC,CAAC,CAAC,EAC3E,GAAID,EAAW,SAAW,EAAG,OAC7B,IAAME,EAAQT,EAAI,KAAK,OAAO,EAE9B,QAAWM,KAAQC,EACbG,EAAWJ,CAAI,EACjBK,EAAoBL,CAAI,GAExBN,EAAI,MAAGL,GAAA,gBAAeK,EAAKG,EAAMG,EAAMF,EAAG,KAAK,aAAa,CAAC,EAC7DO,EAAoBL,CAAI,EACnBF,EAAG,WAAWJ,EAAI,KAAI,EAAG,IAAIS,EAAO,EAAI,EAC7CT,EAAI,MAAK,GAEXD,EAAI,GAAG,kBAAkB,IAAIO,CAAI,EACjCP,EAAI,GAAGU,CAAK,EAGd,SAASC,EAAWJ,EAAY,CAC9B,OAAOF,EAAG,KAAK,aAAe,CAACA,EAAG,eAAiBH,EAAOK,CAAI,EAAE,UAAY,MAC9E,CAEA,SAASK,EAAoBL,EAAY,CACvCP,EAAI,UACF,CACE,QAAS,aACT,WAAYO,EACZ,SAAUA,GAEZG,CAAK,CAET,CACF,GAGFG,GAAA,QAAed,8FCtDf,IAAAe,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAGMC,GAA6B,CACjC,QAAS,oBACT,KAAM,SACN,WAAY,SACZ,KAAKC,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,KAAAC,EAAM,aAAAC,EAAc,GAAAC,CAAE,EAAIL,EACxC,CAAC,KAAAM,CAAI,EAAID,EACTE,KAAWZ,GAAA,qBAAoBO,CAAM,EACrCM,EAAsBD,EAAS,OAAQE,MAC3CZ,GAAA,mBAAkBQ,EAAIH,EAAOO,CAAC,CAAc,CAAC,EAG/C,GACEF,EAAS,SAAW,GACnBC,EAAoB,SAAWD,EAAS,SACtC,CAACF,EAAG,KAAK,aAAeA,EAAG,QAAU,IAExC,OAGF,IAAMK,EACJJ,EAAK,cAAgB,CAACA,EAAK,yBAA2BF,EAAa,WAC/DO,EAAQV,EAAI,KAAK,OAAO,EAC1BI,EAAG,QAAU,IAAQ,EAAEA,EAAG,iBAAiBT,GAAA,QAC7CS,EAAG,SAAQP,GAAA,sBAAqBG,EAAKI,EAAG,KAAK,GAE/C,GAAM,CAAC,MAAAO,CAAK,EAAIP,EAChBQ,EAAyB,EAEzB,SAASA,GAAyB,CAChC,QAAWC,KAAOP,EACZG,GAAiBK,EAAwBD,CAAG,EAC5CT,EAAG,UACLW,EAAmBF,CAAG,GAEtBb,EAAI,IAAIU,EAAO,EAAI,EACnBK,EAAmBF,CAAG,EACtBb,EAAI,GAAGU,CAAK,EAGlB,CAEA,SAASI,EAAwBD,EAAW,CAC1C,QAAWG,KAAQP,EACb,IAAI,OAAOI,CAAG,EAAE,KAAKG,CAAI,MAC3BpB,GAAA,iBACEQ,EACA,YAAYY,CAAI,oBAAoBH,CAAG,gCAAgC,CAI/E,CAEA,SAASE,EAAmBF,EAAW,CACrCb,EAAI,MAAM,MAAOE,EAAOe,GAAO,CAC7BjB,EAAI,MAAGL,GAAA,QAAID,GAAA,YAAWK,EAAKc,CAAG,CAAC,SAASI,CAAG,IAAK,IAAK,CACnD,IAAMC,EAAcX,EAAoB,SAASM,CAAG,EAC/CK,GACHnB,EAAI,UACF,CACE,QAAS,oBACT,WAAYc,EACZ,SAAUI,EACV,aAAcpB,GAAA,KAAK,KAErBa,CAAK,EAILN,EAAG,KAAK,aAAeO,IAAU,GACnCX,EAAI,UAAOL,GAAA,KAAIgB,CAAK,IAAIM,CAAG,IAAK,EAAI,EAC3B,CAACC,GAAe,CAACd,EAAG,WAG7BJ,EAAI,MAAGL,GAAA,KAAIe,CAAK,EAAG,IAAMV,EAAI,MAAK,CAAE,CAExC,CAAC,CACH,CAAC,CACH,CACF,GAGFmB,GAAA,QAAerB,8FCxFf,IAAAsB,GAAA,KAIMC,GAA6B,CACjC,QAAS,MACT,WAAY,CAAC,SAAU,SAAS,EAChC,YAAa,GACb,KAAKC,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,GAAAC,CAAE,EAAIH,EAC1B,MAAIF,GAAA,mBAAkBK,EAAID,CAAM,EAAG,CACjCF,EAAI,KAAI,EACR,MACF,CAEA,IAAMI,EAAQH,EAAI,KAAK,OAAO,EAC9BD,EAAI,UACF,CACE,QAAS,MACT,cAAe,GACf,aAAc,GACd,UAAW,IAEbI,CAAK,EAGPJ,EAAI,WACFI,EACA,IAAMJ,EAAI,MAAK,EACf,IAAMA,EAAI,MAAK,CAAE,CAErB,EACA,MAAO,CAAC,QAAS,mBAAmB,GAGtCK,GAAA,QAAeN,8FCpCf,IAAAO,GAAA,KAIMC,GAA6B,CACjC,QAAS,QACT,WAAY,QACZ,YAAa,GACb,KAAMD,GAAA,cACN,MAAO,CAAC,QAAS,8BAA8B,GAGjDE,GAAA,QAAeD,8FCNf,IAAAE,GAAA,KACAC,GAAA,KASMC,GAAgC,CACpC,QAAS,yCACT,OAAQ,CAAC,CAAC,OAAAC,CAAM,OAAMH,GAAA,sBAAqBG,EAAO,OAAO,KAGrDC,GAA6B,CACjC,QAAS,QACT,WAAY,QACZ,YAAa,GACb,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,aAAAC,EAAc,GAAAC,CAAE,EAAIJ,EAExC,GAAI,CAAC,MAAM,QAAQE,CAAM,EAAG,MAAM,IAAI,MAAM,0BAA0B,EACtE,GAAIE,EAAG,KAAK,eAAiBD,EAAa,cAAe,OACzD,IAAME,EAAsBH,EACtBI,EAAQL,EAAI,IAAI,QAAS,EAAK,EAC9BM,EAAUN,EAAI,IAAI,UAAW,IAAI,EACjCO,EAAWP,EAAI,KAAK,QAAQ,EAClCD,EAAI,UAAU,CAAC,QAAAO,CAAO,CAAC,EAGvBN,EAAI,MAAMQ,CAAa,EAEvBT,EAAI,OACFM,EACA,IAAMN,EAAI,MAAK,EACf,IAAMA,EAAI,MAAM,EAAI,CAAC,EAGvB,SAASS,GAAa,CACpBJ,EAAO,QAAQ,CAACK,EAAgBC,IAAa,CAC3C,IAAIC,KACAhB,GAAA,mBAAkBQ,EAAIM,CAAG,EAC3BT,EAAI,IAAIO,EAAU,EAAI,EAEtBI,EAASZ,EAAI,UACX,CACE,QAAS,QACT,WAAYW,EACZ,cAAe,IAEjBH,CAAQ,EAIRG,EAAI,GACNV,EACG,MAAGN,GAAA,KAAIa,CAAQ,OAAOF,CAAK,EAAE,EAC7B,OAAOA,EAAO,EAAK,EACnB,OAAOC,KAASZ,GAAA,MAAKY,CAAO,KAAKI,CAAC,GAAG,EACrC,KAAI,EAGTV,EAAI,GAAGO,EAAU,IAAK,CACpBP,EAAI,OAAOK,EAAO,EAAI,EACtBL,EAAI,OAAOM,EAASI,CAAC,EACjBC,GAAQZ,EAAI,eAAeY,EAAQjB,GAAA,IAAI,CAC7C,CAAC,CACH,CAAC,CACH,CACF,GAGFkB,GAAA,QAAed,8FC/Ef,IAAAe,GAAA,KAEMC,GAA6B,CACjC,QAAS,QACT,WAAY,QACZ,KAAKC,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,OAAAC,EAAQ,GAAAC,CAAE,EAAIH,EAE1B,GAAI,CAAC,MAAM,QAAQE,CAAM,EAAG,MAAM,IAAI,MAAM,0BAA0B,EACtE,IAAME,EAAQH,EAAI,KAAK,OAAO,EAC9BC,EAAO,QAAQ,CAACG,EAAgBC,IAAa,CAC3C,MAAIR,GAAA,mBAAkBK,EAAIE,CAAG,EAAG,OAChC,IAAME,EAASP,EAAI,UAAU,CAAC,QAAS,QAAS,WAAYM,CAAC,EAAGF,CAAK,EACrEJ,EAAI,GAAGI,CAAK,EACZJ,EAAI,eAAeO,CAAM,CAC3B,CAAC,CACH,GAGFC,GAAA,QAAeT,8FCbf,IAAAU,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAAC,CAAM,OAAMH,GAAA,mBAAkBG,EAAO,QAAQ,WACxD,OAAQ,CAAC,CAAC,OAAAA,CAAM,OAAMH,GAAA,sBAAqBG,EAAO,QAAQ,KAGtDC,GAA6B,CACjC,QAAS,KACT,WAAY,CAAC,SAAU,SAAS,EAChC,YAAa,GACb,MAAAF,GACA,KAAKG,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,aAAAC,EAAc,GAAAC,CAAE,EAAIH,EAC5BE,EAAa,OAAS,QAAaA,EAAa,OAAS,WAC3DN,GAAA,iBAAgBO,EAAI,2CAA2C,EAEjE,IAAMC,EAAUC,GAAUF,EAAI,MAAM,EAC9BG,EAAUD,GAAUF,EAAI,MAAM,EACpC,GAAI,CAACC,GAAW,CAACE,EAAS,OAE1B,IAAMC,EAAQN,EAAI,IAAI,QAAS,EAAI,EAC7BO,EAAWP,EAAI,KAAK,QAAQ,EAIlC,GAHAQ,EAAU,EACVT,EAAI,MAAK,EAELI,GAAWE,EAAS,CACtB,IAAMI,EAAWT,EAAI,IAAI,UAAU,EACnCD,EAAI,UAAU,CAAC,SAAAU,CAAQ,CAAC,EACxBT,EAAI,GAAGO,EAAUG,EAAe,OAAQD,CAAQ,EAAGC,EAAe,OAAQD,CAAQ,CAAC,CACrF,MAAWN,EACTH,EAAI,GAAGO,EAAUG,EAAe,MAAM,CAAC,EAEvCV,EAAI,MAAGN,GAAA,KAAIa,CAAQ,EAAGG,EAAe,MAAM,CAAC,EAG9CX,EAAI,KAAKO,EAAO,IAAMP,EAAI,MAAM,EAAI,CAAC,EAErC,SAASS,GAAU,CACjB,IAAMG,EAASZ,EAAI,UACjB,CACE,QAAS,KACT,cAAe,GACf,aAAc,GACd,UAAW,IAEbQ,CAAQ,EAEVR,EAAI,eAAeY,CAAM,CAC3B,CAEA,SAASD,EAAeE,EAAiBH,EAAe,CACtD,MAAO,IAAK,CACV,IAAME,EAASZ,EAAI,UAAU,CAAC,QAAAa,CAAO,EAAGL,CAAQ,EAChDP,EAAI,OAAOM,EAAOC,CAAQ,EAC1BR,EAAI,oBAAoBY,EAAQL,CAAK,EACjCG,EAAUT,EAAI,OAAOS,KAAUf,GAAA,KAAIkB,CAAO,EAAE,EAC3Cb,EAAI,UAAU,CAAC,SAAUa,CAAO,CAAC,CACxC,CACF,CACF,GAGF,SAASR,GAAUF,EAAkBU,EAAe,CAClD,IAAMC,EAASX,EAAG,OAAOU,CAAO,EAChC,OAAOC,IAAW,QAAa,IAAClB,GAAA,mBAAkBO,EAAIW,CAAM,CAC9D,CAEAC,GAAA,QAAehB,8FC7Ef,IAAAiB,GAAA,KAEMC,GAA6B,CACjC,QAAS,CAAC,OAAQ,MAAM,EACxB,WAAY,CAAC,SAAU,SAAS,EAChC,KAAK,CAAC,QAAAC,EAAS,aAAAC,EAAc,GAAAC,CAAE,EAAa,CACtCD,EAAa,KAAO,WAAWH,GAAA,iBAAgBI,EAAI,IAAIF,CAAO,2BAA2B,CAC/F,GAGFG,GAAA,QAAeJ,8FCXf,IAAAK,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEA,SAAwBC,GAAcC,EAAY,GAAK,CACrD,IAAMC,EAAa,CAEjBR,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,QAEAT,GAAA,QACAC,GAAA,QACAF,GAAA,QACAG,GAAA,QACAC,GAAA,SAGF,OAAIQ,EAAWC,EAAW,KAAKjB,GAAA,QAAaE,GAAA,OAAS,EAChDe,EAAW,KAAKlB,GAAA,QAAiBE,GAAA,OAAK,EAC3CgB,EAAW,KAAKd,GAAA,OAAQ,EACjBc,CACT,CArBAC,GAAA,QAAAH,8FCTA,IAAAI,GAAA,KAaMC,GAAgC,CACpC,QAAS,CAAC,CAAC,WAAAC,CAAU,OAAMF,GAAA,0BAAyBE,CAAU,IAC9D,OAAQ,CAAC,CAAC,WAAAA,CAAU,OAAMF,GAAA,cAAaE,CAAU,KAG7CC,GAA6B,CACjC,QAAS,SACT,KAAM,CAAC,SAAU,QAAQ,EACzB,WAAY,SACZ,MAAO,GACP,MAAAF,GACA,KAAKG,EAAiBC,EAAiB,CACrC,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,WAAAP,EAAY,GAAAQ,CAAE,EAAIN,EAC7C,CAAC,KAAAO,EAAM,cAAAC,EAAe,UAAAC,EAAW,KAAAC,CAAI,EAAIJ,EAC/C,GAAI,CAACC,EAAK,gBAAiB,OAEvBH,EAAOO,EAAmB,EACzBC,EAAc,EAEnB,SAASD,GAAmB,CAC1B,IAAME,EAAOX,EAAI,WAAW,UAAW,CACrC,IAAKQ,EAAK,QACV,KAAMH,EAAK,KAAK,QACjB,EACKO,EAAOZ,EAAI,MAAM,UAAQN,GAAA,KAAIiB,CAAI,IAAIf,CAAU,GAAG,EAClDiB,EAAQb,EAAI,IAAI,OAAO,EACvBc,EAASd,EAAI,IAAI,QAAQ,EAE/BA,EAAI,MACFN,GAAA,YAAWkB,CAAI,qBAAqBA,CAAI,sBACxC,IAAMZ,EAAI,OAAOa,KAAOnB,GAAA,KAAIkB,CAAI,mBAAmB,EAAE,OAAOE,KAAQpB,GAAA,KAAIkB,CAAI,WAAW,EACvF,IAAMZ,EAAI,OAAOa,KAAOnB,GAAA,YAAW,EAAE,OAAOoB,EAAQF,CAAI,CAAC,EAE3Dd,EAAI,aAAUJ,GAAA,IAAGqB,EAAU,EAAIC,EAAU,CAAE,CAAC,EAE5C,SAASD,GAAU,CACjB,OAAIV,EAAK,eAAiB,GAAcX,GAAA,OACjCA,GAAA,KAAIE,CAAU,QAAQkB,CAAM,EACrC,CAEA,SAASE,GAAU,CACjB,IAAMC,EAAaV,EAAU,UACzBb,GAAA,MAAKkB,CAAI,kBAAkBE,CAAM,IAAIb,CAAI,OAAOa,CAAM,IAAIb,CAAI,QAC9DP,GAAA,KAAIoB,CAAM,IAAIb,CAAI,IAChBiB,KAAYxB,GAAA,aAAYoB,CAAM,oBAAoBG,CAAU,MAAMH,CAAM,SAASb,CAAI,KAC3F,SAAOP,GAAA,KAAIoB,CAAM,OAAOA,CAAM,gBAAgBD,CAAK,QAAQd,CAAQ,QAAQmB,CAAS,EACtF,CACF,CAEA,SAASR,GAAc,CACrB,IAAMS,EAAqCX,EAAK,QAAQL,CAAM,EAC9D,GAAI,CAACgB,EAAW,CACdC,EAAa,EACb,MACF,CACA,GAAID,IAAc,GAAM,OACxB,GAAM,CAACE,EAASP,EAAQQ,CAAM,EAAIC,EAAUJ,CAAS,EACjDE,IAAYtB,GAAUD,EAAI,KAAK0B,EAAc,CAAE,EAEnD,SAASJ,GAAa,CACpB,GAAIf,EAAK,eAAiB,GAAO,CAC/BG,EAAK,OAAO,KAAKiB,EAAU,CAAE,EAC7B,MACF,CACA,MAAM,IAAI,MAAMA,EAAU,CAAE,EAE5B,SAASA,GAAU,CACjB,MAAO,mBAAmBtB,CAAgB,gCAAgCG,CAAa,GACzF,CACF,CAEA,SAASiB,EAAUG,EAAmB,CACpC,IAAMC,EACJD,aAAkB,UACdhC,GAAA,YAAWgC,CAAM,EACjBrB,EAAK,KAAK,WACVX,GAAA,KAAIW,EAAK,KAAK,OAAO,MAAGX,GAAA,aAAYS,CAAM,CAAC,GAC3C,OACAyB,EAAM5B,EAAI,WAAW,UAAW,CAAC,IAAKG,EAAQ,IAAKuB,EAAQ,KAAAC,CAAI,CAAC,EACtE,OAAI,OAAOD,GAAU,UAAY,EAAEA,aAAkB,QAC5C,CAACA,EAAO,MAAQ,SAAUA,EAAO,YAAUhC,GAAA,KAAIkC,CAAG,WAAW,EAG/D,CAAC,SAAUF,EAAQE,CAAG,CAC/B,CAEA,SAASJ,GAAc,CACrB,GAAI,OAAOL,GAAa,UAAY,EAAEA,aAAqB,SAAWA,EAAU,MAAO,CACrF,GAAI,CAACZ,EAAU,OAAQ,MAAM,IAAI,MAAM,6BAA6B,EACpE,SAAOb,GAAA,WAAU4B,CAAM,IAAIrB,CAAI,GACjC,CACA,OAAO,OAAOa,GAAU,cAAapB,GAAA,KAAI4B,CAAM,IAAIrB,CAAI,OAAMP,GAAA,KAAI4B,CAAM,SAASrB,CAAI,GACtF,CACF,CACF,GAGF4B,GAAA,QAAehC,8FCtHf,IAAAiC,GAAA,KAEMC,GAAqB,CAACD,GAAA,OAAa,EAEzCE,GAAA,QAAeD,8FCJf,IAAAE,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAAiC,CAAC,QAAS,cAAe,SAAS,EAEnEC,GAAmC,CACvCL,GAAA,QACAC,GAAA,QACAC,GAAA,QAAuB,EACvBC,GAAA,QACAC,IAGFE,GAAA,QAAeD,mHCdf,IAAYE,IAAZ,SAAYA,EAAU,CACpBA,EAAA,IAAA,MACAA,EAAA,QAAA,SACF,GAHYA,KAAUC,GAAA,WAAVD,GAAU,CAAA,EAAA,6FCAtB,IAAAE,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAIMC,GAAgC,CACpC,QAAS,CAAC,CAAC,OAAQ,CAAC,WAAAC,EAAY,QAAAC,CAAO,CAAC,IACtCD,IAAeL,GAAA,WAAW,IACtB,QAAQM,CAAO,mBACf,iBAAiBA,CAAO,qBAC9B,OAAQ,CAAC,CAAC,OAAQ,CAAC,WAAAD,EAAY,IAAAE,EAAK,QAAAD,CAAO,CAAC,OAC1CP,GAAA,aAAYM,CAAU,UAAUC,CAAO,eAAeC,CAAG,KAGvDC,GAA6B,CACjC,QAAS,gBACT,KAAM,SACN,WAAY,SACZ,MAAAJ,GACA,KAAKK,EAAe,CAClB,GAAM,CAAC,IAAAC,EAAK,KAAAC,EAAM,OAAAC,EAAQ,aAAAC,EAAc,GAAAC,CAAE,EAAIL,EACxC,CAAC,MAAAM,CAAK,EAAIF,EAChB,GAAI,CAACC,EAAG,KAAK,cACX,MAAM,IAAI,MAAM,8CAA8C,EAEhE,IAAMR,EAAUM,EAAO,aACvB,GAAI,OAAON,GAAW,SAAU,MAAM,IAAI,MAAM,sCAAsC,EACtF,GAAIM,EAAO,QAAS,MAAM,IAAI,MAAM,yCAAyC,EAC7E,GAAI,CAACG,EAAO,MAAM,IAAI,MAAM,uCAAuC,EACnE,IAAMC,EAAQN,EAAI,IAAI,QAAS,EAAK,EAC9BH,EAAMG,EAAI,MAAM,SAAOX,GAAA,KAAIY,CAAI,MAAGZ,GAAA,aAAYO,CAAO,CAAC,EAAE,EAC9DI,EAAI,MACFX,GAAA,YAAWQ,CAAG,eACd,IAAMU,EAAe,EACrB,IAAMR,EAAI,MAAM,GAAO,CAAC,WAAYT,GAAA,WAAW,IAAK,IAAAO,EAAK,QAAAD,CAAO,CAAC,CAAC,EAEpEG,EAAI,GAAGO,CAAK,EAEZ,SAASC,GAAe,CACtB,IAAMC,EAAUC,EAAU,EAC1BT,EAAI,GAAG,EAAK,EACZ,QAAWU,KAAYF,EACrBR,EAAI,UAAOX,GAAA,KAAIQ,CAAG,QAAQa,CAAQ,EAAE,EACpCV,EAAI,OAAOM,EAAOK,EAAeH,EAAQE,CAAQ,CAAC,CAAC,EAErDV,EAAI,KAAI,EACRD,EAAI,MAAM,GAAO,CAAC,WAAYT,GAAA,WAAW,QAAS,IAAAO,EAAK,QAAAD,CAAO,CAAC,EAC/DI,EAAI,MAAK,CACX,CAEA,SAASW,EAAeC,EAAmB,CACzC,IAAMC,EAASb,EAAI,KAAK,OAAO,EACzBc,EAASf,EAAI,UAAU,CAAC,QAAS,QAAS,WAAAa,CAAU,EAAGC,CAAM,EACnE,OAAAd,EAAI,eAAee,EAAQzB,GAAA,IAAI,EACxBwB,CACT,CAEA,SAASJ,GAAU,OACjB,IAAMM,EAAyC,CAAA,EACzCC,EAAcC,EAAYd,CAAY,EACxCe,EAAc,GAClB,QAASC,EAAI,EAAGA,EAAId,EAAM,OAAQc,IAAK,CACrC,IAAIC,EAAMf,EAAMc,CAAC,EACjB,GAAIC,GAAK,MAAQ,IAAC3B,GAAA,sBAAqB2B,EAAKhB,EAAG,KAAK,KAAK,EAAG,CAC1D,IAAMiB,EAAMD,EAAI,KAGhB,GAFAA,EAAM7B,GAAA,WAAW,KAAKa,EAAG,KAAMA,EAAG,UAAU,KAAMA,EAAG,OAAQiB,CAAG,EAC5DD,aAAe7B,GAAA,YAAW6B,EAAMA,EAAI,QACpCA,IAAQ,OAAW,MAAM,IAAI5B,GAAA,QAAgBY,EAAG,KAAK,YAAaA,EAAG,OAAQiB,CAAG,CACtF,CACA,IAAMC,GAAUC,EAAAH,GAAK,cAAU,MAAAG,IAAA,OAAA,OAAAA,EAAG3B,CAAO,EACzC,GAAI,OAAO0B,GAAW,SACpB,MAAM,IAAI,MACR,iFAAiF1B,CAAO,GAAG,EAG/FsB,EAAcA,IAAgBF,GAAeC,EAAYG,CAAG,GAC5DI,EAAYF,EAASH,CAAC,CACxB,CACA,GAAI,CAACD,EAAa,MAAM,IAAI,MAAM,mBAAmBtB,CAAO,oBAAoB,EAChF,OAAOmB,EAEP,SAASE,EAAY,CAAC,SAAAQ,CAAQ,EAAkB,CAC9C,OAAO,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SAAS7B,CAAO,CAC7D,CAEA,SAAS4B,EAAYJ,EAAsBD,EAAS,CAClD,GAAIC,EAAI,MACNM,EAAWN,EAAI,MAAOD,CAAC,UACdC,EAAI,KACb,QAAWV,KAAYU,EAAI,KACzBM,EAAWhB,EAAUS,CAAC,MAGxB,OAAM,IAAI,MAAM,8BAA8BvB,CAAO,+BAA+B,CAExF,CAEA,SAAS8B,EAAWhB,EAAmBS,EAAS,CAC9C,GAAI,OAAOT,GAAY,UAAYA,KAAYK,EAC7C,MAAM,IAAI,MAAM,mBAAmBnB,CAAO,iCAAiC,EAE7EmB,EAAaL,CAAQ,EAAIS,CAC3B,CACF,CACF,GAGFQ,GAAA,QAAe7B,KChHf,IAAA8B,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACE,GAAM,0CACN,QAAW,0CACX,YAAe,0BACf,YAAe,CACb,YAAe,CACb,KAAQ,QACR,SAAY,EACZ,MAAS,CAAC,KAAQ,GAAG,CACvB,EACA,gBAAmB,CACjB,KAAQ,UACR,QAAW,CACb,EACA,wBAA2B,CACzB,MAAS,CAAC,CAAC,KAAQ,+BAA+B,EAAG,CAAC,QAAW,CAAC,CAAC,CACrE,EACA,YAAe,CACb,KAAQ,CAAC,QAAS,UAAW,UAAW,OAAQ,SAAU,SAAU,QAAQ,CAC9E,EACA,YAAe,CACb,KAAQ,QACR,MAAS,CAAC,KAAQ,QAAQ,EAC1B,SAAY,EACZ,YAAe,EACjB,CACF,EACA,KAAQ,SACR,WAAc,CACZ,GAAM,CACJ,KAAQ,SACR,OAAU,KACZ,EACA,QAAW,CACT,KAAQ,SACR,OAAU,KACZ,EACA,MAAS,CACP,KAAQ,QACV,EACA,YAAe,CACb,KAAQ,QACV,EACA,QAAW,CAAC,EACZ,WAAc,CACZ,KAAQ,SACR,QAAW,EACX,iBAAoB,EACtB,EACA,QAAW,CACT,KAAQ,QACV,EACA,iBAAoB,CAClB,KAAQ,UACR,QAAW,EACb,EACA,QAAW,CACT,KAAQ,QACV,EACA,iBAAoB,CAClB,KAAQ,UACR,QAAW,EACb,EACA,UAAa,CAAC,KAAQ,+BAA+B,EACrD,UAAa,CAAC,KAAQ,uCAAuC,EAC7D,QAAW,CACT,KAAQ,SACR,OAAU,OACZ,EACA,gBAAmB,CACjB,MAAS,CAAC,CAAC,KAAQ,SAAS,EAAG,CAAC,KAAQ,GAAG,CAAC,EAC5C,QAAW,CAAC,CACd,EACA,MAAS,CACP,MAAS,CAAC,CAAC,KAAQ,GAAG,EAAG,CAAC,KAAQ,2BAA2B,CAAC,EAC9D,QAAW,CAAC,CACd,EACA,SAAY,CAAC,KAAQ,+BAA+B,EACpD,SAAY,CAAC,KAAQ,uCAAuC,EAC5D,YAAe,CACb,KAAQ,UACR,QAAW,EACb,EACA,cAAiB,CAAC,KAAQ,+BAA+B,EACzD,cAAiB,CAAC,KAAQ,uCAAuC,EACjE,SAAY,CAAC,KAAQ,2BAA2B,EAChD,qBAAwB,CACtB,MAAS,CAAC,CAAC,KAAQ,SAAS,EAAG,CAAC,KAAQ,GAAG,CAAC,EAC5C,QAAW,CAAC,CACd,EACA,YAAe,CACb,KAAQ,SACR,qBAAwB,CAAC,KAAQ,GAAG,EACpC,QAAW,CAAC,CACd,EACA,WAAc,CACZ,KAAQ,SACR,qBAAwB,CAAC,KAAQ,GAAG,EACpC,QAAW,CAAC,CACd,EACA,kBAAqB,CACnB,KAAQ,SACR,qBAAwB,CAAC,KAAQ,GAAG,EACpC,QAAW,CAAC,CACd,EACA,aAAgB,CACd,KAAQ,SACR,qBAAwB,CACtB,MAAS,CAAC,CAAC,KAAQ,GAAG,EAAG,CAAC,KAAQ,2BAA2B,CAAC,CAChE,CACF,EACA,KAAQ,CACN,KAAQ,QACR,SAAY,EACZ,YAAe,EACjB,EACA,KAAQ,CACN,MAAS,CACP,CAAC,KAAQ,2BAA2B,EACpC,CACE,KAAQ,QACR,MAAS,CAAC,KAAQ,2BAA2B,EAC7C,SAAY,EACZ,YAAe,EACjB,CACF,CACF,EACA,MAAS,CAAC,KAAQ,2BAA2B,EAC7C,MAAS,CAAC,KAAQ,2BAA2B,EAC7C,MAAS,CAAC,KAAQ,2BAA2B,EAC7C,IAAO,CAAC,KAAQ,GAAG,CACrB,EACA,aAAgB,CACd,iBAAoB,CAAC,SAAS,EAC9B,iBAAoB,CAAC,SAAS,CAChC,EACA,QAAW,CAAC,CACd,0KCxIA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEMC,GAAoB,CAAC,aAAa,EAElCC,GAAiB,yCAEjBC,GAAN,cAAkBN,GAAA,OAAO,CACvB,YAAYO,EAAgB,CAAA,EAAE,CAC5B,MAAM,CACJ,GAAGA,EACH,SAAU,KACX,CACH,CAEA,kBAAgB,CACd,MAAM,iBAAgB,EACtBN,GAAA,QAAmB,QAASO,GAAM,KAAK,cAAcA,CAAC,CAAC,EACnD,KAAK,KAAK,eAAe,KAAK,WAAWN,GAAA,OAAa,CAC5D,CAEA,uBAAqB,CAEnB,GADA,MAAM,sBAAqB,EACvB,CAAC,KAAK,KAAK,KAAM,OACrB,IAAMO,EAAa,KAAK,KAAK,MACzB,KAAK,gBAAgBN,GAAkBC,EAAiB,EACxDD,GACJ,KAAK,cAAcM,EAAYJ,GAAgB,EAAK,EACpD,KAAK,KAAK,+BAA+B,EAAIA,EAC/C,CAEA,aAAW,CACT,OAAQ,KAAK,KAAK,YAChB,MAAM,YAAW,IAAO,KAAK,UAAUA,EAAc,EAAIA,GAAiB,OAC9E,GAGFK,GAAO,QAAUC,GAAUL,GAC3B,OAAO,eAAeK,GAAS,aAAc,CAAC,MAAO,EAAI,CAAC,EAE1DA,GAAA,QAAeL,GAiCf,IAAAM,GAAA,KAAQ,OAAA,eAAAD,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,UAAU,CAAA,CAAA,EAIlB,IAAAC,GAAA,KAAQ,OAAA,eAAAF,GAAA,IAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,CAAC,CAAA,CAAA,EAAE,OAAA,eAAAF,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,SAAS,CAAA,CAAA,EAAE,OAAA,eAAAF,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,GAAG,CAAA,CAAA,EAAE,OAAA,eAAAF,GAAA,OAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,IAAI,CAAA,CAAA,EAAQ,OAAA,eAAAF,GAAA,UAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,OAAO,CAAA,CAAA,IChFnD,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAC,IAAAC,KAAC,SAAUC,EAAS,CAChB,GAAI,OAAOL,IAAY,SAEnBC,GAAO,QAAUI,EAAQ,UAClB,OAAO,QAAW,YAAc,OAAO,IAE9C,OAAOA,CAAO,MACX,CAEH,IAAIC,EAEJ,GAAI,CACAA,EAAO,MACX,MAAY,CACRA,EAAO,IACX,CAEAA,EAAK,SAAWD,EAAQ,CAC5B,CACJ,GAAE,SAAUE,EAAW,CAEnB,aAeA,IAAIC,EAAQ,SAAUC,EAAGC,EAAG,CACxB,OAAQD,EAAIC,EAAK,UACrB,EACIC,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAG7F,SAASC,EAAIC,EAAGJ,EAAGC,EAAGI,EAAGC,EAAGC,EAAG,CAC3B,OAAAP,EAAID,EAAMA,EAAMC,EAAGI,CAAC,EAAGL,EAAMM,EAAGE,CAAC,CAAC,EAC3BR,EAAOC,GAAKM,EAAMN,IAAO,GAAKM,EAAKL,CAAC,CAC/C,CAEA,SAASO,EAASH,EAAGI,EAAG,CACpB,IAAIT,EAAIK,EAAE,CAAC,EACPJ,EAAII,EAAE,CAAC,EACPK,EAAIL,EAAE,CAAC,EACPM,EAAIN,EAAE,CAAC,EAEXL,IAAMC,EAAIS,EAAI,CAACT,EAAIU,GAAKF,EAAE,CAAC,EAAI,UAAY,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAI,CAACD,EAAIU,GAAKD,EAAE,CAAC,EAAI,UAAY,EAC3CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAI,CAACW,EAAIV,GAAKQ,EAAE,CAAC,EAAI,UAAY,EAC3CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAI,CAACD,EAAIV,GAAKS,EAAE,CAAC,EAAI,WAAa,EAC5CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIS,EAAI,CAACT,EAAIU,GAAKF,EAAE,CAAC,EAAI,UAAY,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAI,CAACD,EAAIU,GAAKD,EAAE,CAAC,EAAI,WAAa,EAC5CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAI,CAACW,EAAIV,GAAKQ,EAAE,CAAC,EAAI,WAAa,EAC5CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAI,CAACD,EAAIV,GAAKS,EAAE,CAAC,EAAI,SAAW,EAC1CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIS,EAAI,CAACT,EAAIU,GAAKF,EAAE,CAAC,EAAI,WAAa,EAC5CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAI,CAACD,EAAIU,GAAKD,EAAE,CAAC,EAAI,WAAa,EAC5CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAI,CAACW,EAAIV,GAAKQ,EAAE,EAAE,EAAI,MAAQ,EACxCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAI,CAACD,EAAIV,GAAKS,EAAE,EAAE,EAAI,WAAa,EAC7CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIS,EAAI,CAACT,EAAIU,GAAKF,EAAE,EAAE,EAAI,WAAa,EAC7CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAI,CAACD,EAAIU,GAAKD,EAAE,EAAE,EAAI,SAAW,EAC3CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAI,CAACW,EAAIV,GAAKQ,EAAE,EAAE,EAAI,WAAa,EAC7CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAI,CAACD,EAAIV,GAAKS,EAAE,EAAE,EAAI,WAAa,EAC7CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAEhCV,IAAMC,EAAIU,EAAID,EAAI,CAACC,GAAKF,EAAE,CAAC,EAAI,UAAY,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIU,EAAIT,EAAI,CAACS,GAAKD,EAAE,CAAC,EAAI,WAAa,EAC5CE,GAAMA,GAAK,EAAIA,IAAM,IAAMX,EAAI,EAC/BU,IAAMC,EAAIV,EAAID,EAAI,CAACC,GAAKQ,EAAE,EAAE,EAAI,UAAY,EAC5CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIV,EAAIW,EAAI,CAACX,GAAKS,EAAE,CAAC,EAAI,UAAY,EAC3CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIU,EAAID,EAAI,CAACC,GAAKF,EAAE,CAAC,EAAI,UAAY,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIU,EAAIT,EAAI,CAACS,GAAKD,EAAE,EAAE,EAAI,SAAW,EAC3CE,GAAMA,GAAK,EAAIA,IAAM,IAAMX,EAAI,EAC/BU,IAAMC,EAAIV,EAAID,EAAI,CAACC,GAAKQ,EAAE,EAAE,EAAI,UAAY,EAC5CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIV,EAAIW,EAAI,CAACX,GAAKS,EAAE,CAAC,EAAI,UAAY,EAC3CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIU,EAAID,EAAI,CAACC,GAAKF,EAAE,CAAC,EAAI,UAAY,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIU,EAAIT,EAAI,CAACS,GAAKD,EAAE,EAAE,EAAI,WAAa,EAC7CE,GAAMA,GAAK,EAAIA,IAAM,IAAMX,EAAI,EAC/BU,IAAMC,EAAIV,EAAID,EAAI,CAACC,GAAKQ,EAAE,CAAC,EAAI,UAAY,EAC3CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIV,EAAIW,EAAI,CAACX,GAAKS,EAAE,CAAC,EAAI,WAAa,EAC5CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAChCV,IAAMC,EAAIU,EAAID,EAAI,CAACC,GAAKF,EAAE,EAAE,EAAI,WAAa,EAC7CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIU,EAAIT,EAAI,CAACS,GAAKD,EAAE,CAAC,EAAI,SAAW,EAC1CE,GAAMA,GAAK,EAAIA,IAAM,IAAMX,EAAI,EAC/BU,IAAMC,EAAIV,EAAID,EAAI,CAACC,GAAKQ,EAAE,CAAC,EAAI,WAAa,EAC5CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIV,EAAIW,EAAI,CAACX,GAAKS,EAAE,EAAE,EAAI,WAAa,EAC7CR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAEhCV,IAAMC,EAAIS,EAAIC,GAAKF,EAAE,CAAC,EAAI,OAAS,EACnCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAIS,GAAKD,EAAE,CAAC,EAAI,WAAa,EACvCE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAIC,GAAKQ,EAAE,EAAE,EAAI,WAAa,EACxCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAIX,GAAKS,EAAE,EAAE,EAAI,SAAW,EACtCR,GAAMA,GAAK,GAAKA,IAAM,GAAKS,EAAI,EAC/BV,IAAMC,EAAIS,EAAIC,GAAKF,EAAE,CAAC,EAAI,WAAa,EACvCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAIS,GAAKD,EAAE,CAAC,EAAI,WAAa,EACvCE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAIC,GAAKQ,EAAE,CAAC,EAAI,UAAY,EACtCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAIX,GAAKS,EAAE,EAAE,EAAI,WAAa,EACxCR,GAAMA,GAAK,GAAKA,IAAM,GAAKS,EAAI,EAC/BV,IAAMC,EAAIS,EAAIC,GAAKF,EAAE,EAAE,EAAI,UAAY,EACvCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAIS,GAAKD,EAAE,CAAC,EAAI,UAAY,EACtCE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAIC,GAAKQ,EAAE,CAAC,EAAI,UAAY,EACtCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAIX,GAAKS,EAAE,CAAC,EAAI,SAAW,EACrCR,GAAMA,GAAK,GAAKA,IAAM,GAAKS,EAAI,EAC/BV,IAAMC,EAAIS,EAAIC,GAAKF,EAAE,CAAC,EAAI,UAAY,EACtCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMX,EAAIC,EAAIS,GAAKD,EAAE,EAAE,EAAI,UAAY,EACvCE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMC,EAAIX,EAAIC,GAAKQ,EAAE,EAAE,EAAI,UAAY,EACvCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMS,EAAIC,EAAIX,GAAKS,EAAE,CAAC,EAAI,UAAY,EACtCR,GAAMA,GAAK,GAAKA,IAAM,GAAKS,EAAI,EAE/BV,IAAMU,GAAKT,EAAI,CAACU,IAAMF,EAAE,CAAC,EAAI,UAAY,EACzCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMV,GAAKD,EAAI,CAACU,IAAMD,EAAE,CAAC,EAAI,WAAa,EAC1CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMV,GAAKW,EAAI,CAACV,IAAMQ,EAAE,EAAE,EAAI,WAAa,EAC3CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMU,GAAKD,EAAI,CAACV,IAAMS,EAAE,CAAC,EAAI,SAAW,EACxCR,GAAMA,GAAK,GAAIA,IAAM,IAAMS,EAAI,EAC/BV,IAAMU,GAAKT,EAAI,CAACU,IAAMF,EAAE,EAAE,EAAI,WAAa,EAC3CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMV,GAAKD,EAAI,CAACU,IAAMD,EAAE,CAAC,EAAI,WAAa,EAC1CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMV,GAAKW,EAAI,CAACV,IAAMQ,EAAE,EAAE,EAAI,QAAU,EACxCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMU,GAAKD,EAAI,CAACV,IAAMS,EAAE,CAAC,EAAI,WAAa,EAC1CR,GAAMA,GAAK,GAAIA,IAAM,IAAMS,EAAI,EAC/BV,IAAMU,GAAKT,EAAI,CAACU,IAAMF,EAAE,CAAC,EAAI,WAAa,EAC1CT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMV,GAAKD,EAAI,CAACU,IAAMD,EAAE,EAAE,EAAI,SAAW,EACzCE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMV,GAAKW,EAAI,CAACV,IAAMQ,EAAE,CAAC,EAAI,WAAa,EAC1CC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMU,GAAKD,EAAI,CAACV,IAAMS,EAAE,EAAE,EAAI,WAAa,EAC3CR,GAAMA,GAAK,GAAIA,IAAM,IAAMS,EAAI,EAC/BV,IAAMU,GAAKT,EAAI,CAACU,IAAMF,EAAE,CAAC,EAAI,UAAY,EACzCT,GAAMA,GAAK,EAAIA,IAAM,IAAMC,EAAI,EAC/BU,IAAMV,GAAKD,EAAI,CAACU,IAAMD,EAAE,EAAE,EAAI,WAAa,EAC3CE,GAAMA,GAAK,GAAKA,IAAM,IAAMX,EAAI,EAChCU,IAAMV,GAAKW,EAAI,CAACV,IAAMQ,EAAE,CAAC,EAAI,UAAY,EACzCC,GAAMA,GAAK,GAAKA,IAAM,IAAMC,EAAI,EAChCV,IAAMU,GAAKD,EAAI,CAACV,IAAMS,EAAE,CAAC,EAAI,UAAY,EACzCR,GAAMA,GAAK,GAAKA,IAAM,IAAMS,EAAI,EAEhCL,EAAE,CAAC,EAAIL,EAAIK,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIJ,EAAII,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIK,EAAIL,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIM,EAAIN,EAAE,CAAC,EAAI,CACtB,CAEA,SAASO,EAAON,EAAG,CACf,IAAIO,EAAU,CAAC,EACXC,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBD,EAAQC,GAAK,CAAC,EAAIR,EAAE,WAAWQ,CAAC,GAAKR,EAAE,WAAWQ,EAAI,CAAC,GAAK,IAAMR,EAAE,WAAWQ,EAAI,CAAC,GAAK,KAAOR,EAAE,WAAWQ,EAAI,CAAC,GAAK,IAE3H,OAAOD,CACX,CAEA,SAASE,EAAaf,EAAG,CACrB,IAAIa,EAAU,CAAC,EACXC,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBD,EAAQC,GAAK,CAAC,EAAId,EAAEc,CAAC,GAAKd,EAAEc,EAAI,CAAC,GAAK,IAAMd,EAAEc,EAAI,CAAC,GAAK,KAAOd,EAAEc,EAAI,CAAC,GAAK,IAE/E,OAAOD,CACX,CAEA,SAASG,EAAKV,EAAG,CACb,IAAIW,EAAIX,EAAE,OACNY,EAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EACvDJ,EACAK,EACAC,EACAC,EACAC,EACAC,EAEJ,IAAKT,EAAI,GAAIA,GAAKG,EAAGH,GAAK,GACtBN,EAASU,EAAON,EAAON,EAAE,UAAUQ,EAAI,GAAIA,CAAC,CAAC,CAAC,EAKlD,IAHAR,EAAIA,EAAE,UAAUQ,EAAI,EAAE,EACtBK,EAASb,EAAE,OACXc,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjDN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBM,EAAKN,GAAK,CAAC,GAAKR,EAAE,WAAWQ,CAAC,IAAOA,EAAI,GAAM,GAGnD,GADAM,EAAKN,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAN,EAASU,EAAOE,CAAI,EACfN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBM,EAAKN,CAAC,EAAI,EAKlB,OAAAO,EAAMJ,EAAI,EACVI,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CC,EAAK,SAASD,EAAI,CAAC,EAAG,EAAE,EACxBE,EAAK,SAASF,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIE,EACXF,EAAK,EAAE,EAAIG,EAEXf,EAASU,EAAOE,CAAI,EACbF,CACX,CAEA,SAASM,EAAWxB,EAAG,CACnB,IAAIiB,EAAIjB,EAAE,OACNkB,EAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EACvDJ,EACAK,EACAC,EACAC,EACAC,EACAC,EAEJ,IAAKT,EAAI,GAAIA,GAAKG,EAAGH,GAAK,GACtBN,EAASU,EAAOH,EAAaf,EAAE,SAASc,EAAI,GAAIA,CAAC,CAAC,CAAC,EAWvD,IAJAd,EAAKc,EAAI,GAAMG,EAAIjB,EAAE,SAASc,EAAI,EAAE,EAAI,IAAI,WAAW,CAAC,EAExDK,EAASnB,EAAE,OACXoB,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjDN,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBM,EAAKN,GAAK,CAAC,GAAKd,EAAEc,CAAC,IAAOA,EAAI,GAAM,GAIxC,GADAM,EAAKN,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAN,EAASU,EAAOE,CAAI,EACfN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBM,EAAKN,CAAC,EAAI,EAKlB,OAAAO,EAAMJ,EAAI,EACVI,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CC,EAAK,SAASD,EAAI,CAAC,EAAG,EAAE,EACxBE,EAAK,SAASF,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIE,EACXF,EAAK,EAAE,EAAIG,EAEXf,EAASU,EAAOE,CAAI,EAEbF,CACX,CAEA,SAASO,EAAKR,EAAG,CACb,IAAIX,EAAI,GACJoB,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACpBpB,GAAKJ,EAASe,GAAMS,EAAI,EAAI,EAAM,EAAI,EAAIxB,EAASe,GAAMS,EAAI,EAAM,EAAI,EAE3E,OAAOpB,CACX,CAEA,SAASqB,EAAItB,EAAG,CACZ,IAAIS,EACJ,IAAKA,EAAI,EAAGA,EAAIT,EAAE,OAAQS,GAAK,EAC3BT,EAAES,CAAC,EAAIW,EAAKpB,EAAES,CAAC,CAAC,EAEpB,OAAOT,EAAE,KAAK,EAAE,CACpB,CAGIsB,EAAIX,EAAK,OAAO,CAAC,IAAM,qCACvBjB,EAAQ,SAAUM,EAAGuB,EAAG,CACpB,IAAIC,GAAOxB,EAAI,QAAWuB,EAAI,OAC1BE,GAAOzB,GAAK,KAAOuB,GAAK,KAAOC,GAAO,IAC1C,OAAQC,GAAO,GAAOD,EAAM,KAChC,GAWA,OAAO,YAAgB,KAAe,CAAC,YAAY,UAAU,OAC5D,UAAY,CACT,SAASE,EAAMC,EAAKb,EAAQ,CAGxB,OAFAa,EAAOA,EAAM,GAAM,EAEfA,EAAM,EACC,KAAK,IAAIA,EAAMb,EAAQ,CAAC,EAG5B,KAAK,IAAIa,EAAKb,CAAM,CAC/B,CAEA,YAAY,UAAU,MAAQ,SAAUc,EAAMC,EAAI,CAC9C,IAAIf,EAAS,KAAK,WACdgB,EAAQJ,EAAME,EAAMd,CAAM,EAC1BiB,EAAMjB,EACNkB,EACAC,EACAC,EACAC,EAMJ,OAJIN,IAAOpC,IACPsC,EAAML,EAAMG,EAAIf,CAAM,GAGtBgB,EAAQC,EACD,IAAI,YAAY,CAAC,GAG5BC,EAAMD,EAAMD,EACZG,EAAS,IAAI,YAAYD,CAAG,EAC5BE,EAAc,IAAI,WAAWD,CAAM,EAEnCE,EAAc,IAAI,WAAW,KAAML,EAAOE,CAAG,EAC7CE,EAAY,IAAIC,CAAW,EAEpBF,EACX,CACJ,EAAG,EASP,SAASG,EAAOC,EAAK,CACjB,MAAI,kBAAkB,KAAKA,CAAG,IAC1BA,EAAM,SAAS,mBAAmBA,CAAG,CAAC,GAGnCA,CACX,CAEA,SAASC,EAAoBD,EAAKE,EAAkB,CAChD,IAAIzB,EAASuB,EAAI,OACdG,EAAO,IAAI,YAAY1B,CAAM,EAC7B2B,EAAM,IAAI,WAAWD,CAAI,EACzB/B,EAEH,IAAKA,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBgC,EAAIhC,CAAC,EAAI4B,EAAI,WAAW5B,CAAC,EAG7B,OAAO8B,EAAmBE,EAAMD,CACpC,CAEA,SAASE,EAAoBF,EAAM,CAC/B,OAAO,OAAO,aAAa,MAAM,KAAM,IAAI,WAAWA,CAAI,CAAC,CAC/D,CAEA,SAASG,EAAwBC,EAAOC,EAAQN,EAAkB,CAC9D,IAAIO,EAAS,IAAI,WAAWF,EAAM,WAAaC,EAAO,UAAU,EAEhE,OAAAC,EAAO,IAAI,IAAI,WAAWF,CAAK,CAAC,EAChCE,EAAO,IAAI,IAAI,WAAWD,CAAM,EAAGD,EAAM,UAAU,EAE5CL,EAAmBO,EAASA,EAAO,MAC9C,CAEA,SAASC,EAAkBzB,EAAK,CAC5B,IAAI0B,EAAQ,CAAC,EACTlC,EAASQ,EAAI,OACbtB,EAEJ,IAAKA,EAAI,EAAGA,EAAIc,EAAS,EAAGd,GAAK,EAC7BgD,EAAM,KAAK,SAAS1B,EAAI,OAAOtB,EAAG,CAAC,EAAG,EAAE,CAAC,EAG7C,OAAO,OAAO,aAAa,MAAM,OAAQgD,CAAK,CAClD,CAWA,SAASC,GAAW,CAEhB,KAAK,MAAM,CACf,CAUA,OAAAA,EAAS,UAAU,OAAS,SAAUZ,EAAK,CAGvC,YAAK,aAAaD,EAAOC,CAAG,CAAC,EAEtB,IACX,EASAY,EAAS,UAAU,aAAe,SAAUC,EAAU,CAClD,KAAK,OAASA,EACd,KAAK,SAAWA,EAAS,OAEzB,IAAIpC,EAAS,KAAK,MAAM,OACpBL,EAEJ,IAAKA,EAAI,GAAIA,GAAKK,EAAQL,GAAK,GAC3BN,EAAS,KAAK,MAAOI,EAAO,KAAK,MAAM,UAAUE,EAAI,GAAIA,CAAC,CAAC,CAAC,EAGhE,YAAK,MAAQ,KAAK,MAAM,UAAUA,EAAI,EAAE,EAEjC,IACX,EAUAwC,EAAS,UAAU,IAAM,SAAUE,EAAK,CACpC,IAAIX,EAAO,KAAK,MACZ1B,EAAS0B,EAAK,OACd/B,EACAM,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtDqC,EAEJ,IAAK3C,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBM,EAAKN,GAAK,CAAC,GAAK+B,EAAK,WAAW/B,CAAC,IAAOA,EAAI,GAAM,GAGtD,YAAK,QAAQM,EAAMD,CAAM,EACzBsC,EAAM9B,EAAI,KAAK,KAAK,EAEhB6B,IACAC,EAAML,EAAkBK,CAAG,GAG/B,KAAK,MAAM,EAEJA,CACX,EAOAH,EAAS,UAAU,MAAQ,UAAY,CACnC,YAAK,MAAQ,GACb,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EAErD,IACX,EAOAA,EAAS,UAAU,SAAW,UAAY,CACtC,MAAO,CACH,KAAM,KAAK,MACX,OAAQ,KAAK,QACb,KAAM,KAAK,MAAM,MAAM,CAC3B,CACJ,EASAA,EAAS,UAAU,SAAW,SAAUpC,EAAO,CAC3C,YAAK,MAAQA,EAAM,KACnB,KAAK,QAAUA,EAAM,OACrB,KAAK,MAAQA,EAAM,KAEZ,IACX,EAMAoC,EAAS,UAAU,QAAU,UAAY,CACrC,OAAO,KAAK,MACZ,OAAO,KAAK,MACZ,OAAO,KAAK,OAChB,EAQAA,EAAS,UAAU,QAAU,SAAUlC,EAAMD,EAAQ,CACjD,IAAIL,EAAIK,EACJE,EACAC,EACAC,EAGJ,GADAH,EAAKN,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADAN,EAAS,KAAK,MAAOY,CAAI,EACpBN,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBM,EAAKN,CAAC,EAAI,EAMlBO,EAAM,KAAK,QAAU,EACrBA,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CC,EAAK,SAASD,EAAI,CAAC,EAAG,EAAE,EACxBE,EAAK,SAASF,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIE,EACXF,EAAK,EAAE,EAAIG,EACXf,EAAS,KAAK,MAAOY,CAAI,CAC7B,EAWAkC,EAAS,KAAO,SAAUZ,EAAKc,EAAK,CAGhC,OAAOF,EAAS,WAAWb,EAAOC,CAAG,EAAGc,CAAG,CAC/C,EAUAF,EAAS,WAAa,SAAUI,EAASF,EAAK,CAC1C,IAAIG,EAAO3C,EAAK0C,CAAO,EACnBD,EAAM9B,EAAIgC,CAAI,EAElB,OAAOH,EAAMJ,EAAkBK,CAAG,EAAIA,CAC1C,EASAH,EAAS,YAAc,UAAY,CAE/B,KAAK,MAAM,CACf,EASAA,EAAS,YAAY,UAAU,OAAS,SAAUR,EAAK,CACnD,IAAID,EAAOG,EAAwB,KAAK,MAAM,OAAQF,EAAK,EAAI,EAC3D3B,EAAS0B,EAAK,OACd/B,EAIJ,IAFA,KAAK,SAAWgC,EAAI,WAEfhC,EAAI,GAAIA,GAAKK,EAAQL,GAAK,GAC3BN,EAAS,KAAK,MAAOO,EAAa8B,EAAK,SAAS/B,EAAI,GAAIA,CAAC,CAAC,CAAC,EAG/D,YAAK,MAASA,EAAI,GAAMK,EAAS,IAAI,WAAW0B,EAAK,OAAO,MAAM/B,EAAI,EAAE,CAAC,EAAI,IAAI,WAAW,CAAC,EAEtF,IACX,EAUAwC,EAAS,YAAY,UAAU,IAAM,SAAUE,EAAK,CAChD,IAAIX,EAAO,KAAK,MACZ1B,EAAS0B,EAAK,OACdzB,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtDN,EACA2C,EAEJ,IAAK3C,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBM,EAAKN,GAAK,CAAC,GAAK+B,EAAK/B,CAAC,IAAOA,EAAI,GAAM,GAG3C,YAAK,QAAQM,EAAMD,CAAM,EACzBsC,EAAM9B,EAAI,KAAK,KAAK,EAEhB6B,IACAC,EAAML,EAAkBK,CAAG,GAG/B,KAAK,MAAM,EAEJA,CACX,EAOAH,EAAS,YAAY,UAAU,MAAQ,UAAY,CAC/C,YAAK,MAAQ,IAAI,WAAW,CAAC,EAC7B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EAErD,IACX,EAOAA,EAAS,YAAY,UAAU,SAAW,UAAY,CAClD,IAAIpC,EAAQoC,EAAS,UAAU,SAAS,KAAK,IAAI,EAGjD,OAAApC,EAAM,KAAO6B,EAAoB7B,EAAM,IAAI,EAEpCA,CACX,EASAoC,EAAS,YAAY,UAAU,SAAW,SAAUpC,EAAO,CAEvD,OAAAA,EAAM,KAAOyB,EAAoBzB,EAAM,KAAM,EAAI,EAE1CoC,EAAS,UAAU,SAAS,KAAK,KAAMpC,CAAK,CACvD,EAEAoC,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAE5DA,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAU5DA,EAAS,YAAY,KAAO,SAAUR,EAAKU,EAAK,CAC5C,IAAIG,EAAOnC,EAAW,IAAI,WAAWsB,CAAG,CAAC,EACrCW,EAAM9B,EAAIgC,CAAI,EAElB,OAAOH,EAAMJ,EAAkBK,CAAG,EAAIA,CAC1C,EAEOH,CACX,CAAC,IC9uBD,IAAAM,GAAAC,EAAAC,IAAA,cAAAC,IAAAC,IAAAC,IAOAH,GAAQ,UAAY,SAAmBI,EAAO,CAC5C,IAAIC,EAAQ,CAAC,EACbA,EAAM,KAAK,CAAC,IAAKD,CAAK,CAAC,EAIvB,QAFIE,EAAM,GACNC,EAAMC,EAAKC,EAAQC,EAAKC,EAAGC,EAAaC,EAAMC,EAAGC,EAAKC,EAAOC,EACzDV,EAAOF,EAAM,IAAI,GAKvB,GAJAG,EAAMD,EAAK,IACXE,EAASF,EAAK,QAAU,GACxBG,EAAMH,EAAK,KAAO,GAClBD,GAAOG,EACHC,EACFJ,GAAOI,UACE,OAAOF,GAAQ,SACxBF,GAAO,OAAOE,EAAQ,IAAc,KAAO,KAAK,UAAUA,CAAG,UACpDA,IAAQ,KACjBF,GAAO,eACE,MAAM,QAAQE,CAAG,EAAG,CAE7B,IADAH,EAAM,KAAK,CAAC,IAAK,GAAG,CAAC,EAChBM,EAAIH,EAAI,OAAS,EAAGG,GAAK,EAAGA,IAC/BC,EAAcD,IAAM,EAAI,GAAK,IAC7BN,EAAM,KAAK,CAAC,IAAKG,EAAIG,CAAC,EAAG,OAAQC,CAAW,CAAC,EAE/CP,EAAM,KAAK,CAAC,IAAK,GAAG,CAAC,CACvB,KAAO,CACLQ,EAAO,CAAC,EACR,IAAKC,KAAKN,EACJA,EAAI,eAAeM,CAAC,GACtBD,EAAK,KAAKC,CAAC,EAIf,IADAT,EAAM,KAAK,CAAC,IAAK,GAAG,CAAC,EAChBM,EAAIE,EAAK,OAAS,EAAGF,GAAK,EAAGA,IAChCI,EAAMF,EAAKF,CAAC,EACZK,EAAQR,EAAIO,CAAG,EACfE,EAAaN,EAAI,EAAI,IAAM,GAC3BM,GAAa,KAAK,UAAUF,CAAG,EAAI,IACnCV,EAAM,KAAK,CAAC,IAAKW,EAAO,OAAQC,CAAS,CAAC,EAE5CZ,EAAM,KAAK,CAAC,IAAK,GAAG,CAAC,CACvB,CAEF,OAAOC,CACT,EAKA,SAASY,GAAIV,EAAKW,EAAOC,EAAW,CAClC,IAAIC,EAAkBD,EAAUA,EAAU,OAAS,CAAC,EAChDZ,IAAQa,EAAgB,UAE1BD,EAAU,IAAI,EACdC,EAAkBD,EAAUA,EAAU,OAAS,CAAC,GAElD,IAAIE,EAAUD,EAAgB,QAC1BE,EAAmBF,EAAgB,MACvC,GAAI,MAAM,QAAQC,CAAO,EACvBA,EAAQ,KAAKd,CAAG,UACPe,IAAqBJ,EAAM,OAAS,EAAG,CAChD,IAAIJ,EAAMI,EAAM,IAAI,EACpBG,EAAQP,CAAG,EAAIP,CACjB,MACEW,EAAM,KAAKX,CAAG,CAElB,CAEAR,GAAQ,MAAQ,SAAUwB,EAAK,CAO7B,QANIL,EAAQ,CAAC,EACTC,EAAY,CAAC,EACbT,EAAI,EACJc,EAAeC,EAAUC,EACzBC,EAAaC,EAAOC,EAAsBC,EAC1CC,EAAcC,IACL,CAEX,GADAR,EAAiBD,EAAIb,GAAG,EACpBc,IAAmB,KACnBA,IAAmB,KACnB,OAAOA,EAAmB,IAAa,CACzC,GAAIN,EAAM,SAAW,EACnB,OAAOA,EAAM,IAAI,EAEjBD,GAAIC,EAAM,IAAI,EAAGA,EAAOC,CAAS,EACjC,QAEJ,CACA,OAAQK,EAAgB,CACtB,IAAK,IACL,IAAK,IACL,IAAK;AAAA,EACL,IAAK,IACL,IAAK,IACH,MACF,IAAK,IACHd,GAAK,EACLO,GAAI,KAAMC,EAAOC,CAAS,EAC1B,MACF,IAAK,IACHT,GAAK,EACLO,GAAI,GAAMC,EAAOC,CAAS,EAC1B,MACF,IAAK,IACHT,GAAK,EACLO,GAAI,GAAOC,EAAOC,CAAS,EAC3B,MACF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAGH,IAFAM,EAAY,GACZf,MAGE,GADAgB,EAAUH,EAAIb,GAAG,EACb,cAAc,KAAKgB,CAAO,EAC5BD,GAAaC,MACR,CACLhB,IACA,KACF,CAEFO,GAAI,WAAWQ,CAAS,EAAGP,EAAOC,CAAS,EAC3C,MACF,IAAK,IAIH,IAHAQ,EAAe,GACfC,EAAS,OACTC,EAAwB,EAEtBC,EAAKP,EAAIb,GAAG,EACRoB,IAAO,KAAQF,IAAW,MAC1BC,EAAwB,IAAM,GAChCF,GAAgBG,EAChBF,EAASE,EACLF,IAAW,KACbC,IAEAA,EAAwB,EAM9BZ,GAAI,KAAK,MAAM,IAAMU,EAAe,GAAG,EAAGT,EAAOC,CAAS,EAC1D,MACF,IAAK,IACHY,EAAe,CAAE,QAAS,CAAC,EAAG,MAAOb,EAAM,MAAO,EAClDA,EAAM,KAAKa,EAAa,OAAO,EAC/BZ,EAAU,KAAKY,CAAY,EAC3B,MACF,IAAK,IACHC,EAAa,CAAE,QAAS,CAAC,EAAG,MAAOd,EAAM,MAAO,EAChDA,EAAM,KAAKc,EAAW,OAAO,EAC7Bb,EAAU,KAAKa,CAAU,EACzB,MACF,QACE,MAAM,IAAI,MACR,sCAAwCR,CAAc,CAC5D,CACF,CACF,IC5KAS,IAAAC,IAAAC,IC6POC,IAAAC,IAAAC,IAAA,IAAeC,GAAf,KAAwB,CA6B7B,YAAYC,EAA4B,CACtC,OAAO,KAAK,cAAcA,CAAM,CAClC,CA0bF,ECttBO,IAQMC,GAAN,MAAMC,WAA+B,KAAM,CAChD,YAAYC,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,yBACZ,OAAO,eAAe,KAAMD,GAAuB,SAAS,CAC9D,CACF,EAEaE,GAAN,MAAMC,WAA8B,KAAM,CAC/C,YAAYF,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,wBACZ,OAAO,eAAe,KAAME,GAAsB,SAAS,CAC7D,CACF,EAEaC,GAAN,MAAMC,WAAmC,KAAM,CACpD,YAAYJ,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,6BACZ,OAAO,eAAe,KAAMI,GAA2B,SAAS,CAClE,CACF,EAEaC,GAAN,MAAMC,WAAoC,KAAM,CACrD,YAAYN,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,8BACZ,OAAO,eAAe,KAAMM,GAA4B,SAAS,CACnE,CACF,EAEaC,GAAN,MAAMC,WAAqC,KAAM,CACtD,YAAYR,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,+BACZ,OAAO,eAAe,KAAMQ,GAA6B,SAAS,CACpE,CACF,EAEaC,GAAN,MAAMC,WAAgC,KAAM,CACjD,YAAYV,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,0BACZ,OAAO,eAAe,KAAMU,GAAwB,SAAS,CAC/D,CACF,EAEaC,GAAN,MAAMC,WAAgC,KAAM,CACjD,YAAYZ,EAAkB,CAC5B,MAAMA,CAAO,EACb,KAAK,KAAO,0BACZ,OAAO,eAAe,KAAMY,GAAwB,SAAS,CAC/D,CACF,EF7DA,IAAAC,GAAgB,SGDhBC,IAAAC,IAAAC,IAkBO,IAAMC,GAAN,KAAkC,CACvC,cAA2C,IAAI,YAE/C,aAAc,EAEY,SAAY,CAElC,MAAM,QAAQ,QAAQ,EAGtB,QAAWC,KAAS,KAAK,kBAAkB,EAAG,CAC5C,IAAMC,EAA4B,IAAI,YAAY,QAAS,CACzD,OAAQ,CAAE,QAAS,CAAE,MAAAD,CAAM,CAAE,CAC/B,CAAC,EACD,KAAK,cAAc,cAAcC,CAAK,CACxC,CAEA,IAAMA,EAAyC,IAAI,YACjD,cACA,CAAE,OAAQ,CAAC,CAAE,CACf,EACA,KAAK,cAAc,cAAcA,CAAK,CACxC,GACgB,CAClB,CAEA,eAA2B,CAAC,EAElB,mBAA8B,CACtC,GAAI,OAAO,OAAW,IAAa,CACjC,IAAMC,EAAe,OAAO,aAAa,QAAQ,gBAAgB,EACjE,OAAOA,EACHA,EAAa,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAC9C,CAAC,CACP,KACE,QAAO,KAAK,cAEhB,CAEU,kBAAkBC,EAAkB,CACxC,OAAO,OAAW,IACpB,OAAO,aAAa,QAClB,iBACAA,EAAO,IAAI,kBAAkB,EAAE,KAAK,GAAG,CACzC,EAEA,KAAK,eAAiBA,CAE1B,CAEA,MAA2B,MAAOC,GAAa,CAC7C,IAAIJ,EAAQI,GAAU,MACtB,GAAI,CAACJ,GAAS,OAAO,OAAW,IAAa,CAC3C,IAAMK,EAAW,OAAO,OACtB;AAAA;AAAA,sCAKF,EACIA,IAAUL,EAAQK,EACxB,CAEA,IAAIC,EACJ,GAAI,CAACN,EACHM,EAAS,CACP,MAAO,IAAI,MAAM,+BAA+B,CAClD,MACK,CACL,IAAMC,EAAiB,KAAK,kBAAkB,EACzCA,EAAe,SAASP,CAAK,GAChC,KAAK,kBAAkB,CAAC,GAAGO,EAAgBP,CAAK,CAAC,EAGnDM,EAAS,CACP,QAAS,CAAE,MAAAN,CAAM,CACnB,CACF,CAEA,IAAMC,EAA4B,IAAI,YAAY,QAAS,CAAE,OAAAK,CAAO,CAAC,EACrE,KAAK,cAAc,cAAcL,CAAK,CACxC,EAEA,OAA6B,MAAOO,GAAY,CAC9C,IAAMD,EAAiB,KAAK,kBAAkB,EACxCE,EAASF,EAAe,SAASC,EAAQ,KAAK,EAChDC,GACF,KAAK,kBACHF,EAAe,OAAQP,GAAUA,IAAUQ,EAAQ,KAAK,CAC1D,EAGF,IAAMF,EAAwCG,EAC1C,CACE,MAAOD,EAAQ,KACjB,EACA,CACE,MAAOA,EAAQ,MACf,MAAO,IAAI,MAAM,+BAA+B,CAClD,EAEEP,EAA6B,IAAI,YAAY,SAAU,CAAE,OAAAK,CAAO,CAAC,EACvE,KAAK,cAAc,cAAcL,CAAK,CACxC,CACF,EC1HAS,IAAAC,IAAAC,ICAAC,IAAAC,IAAAC,IAAA,IAAAC,GAAgB,SCAhBC,IAAAC,IAAAC,ICAAC,IAAAC,IAAAC,IAGA,IAAIC,GACAC,GAAQ,IAAI,WAAW,EAAE,EACd,SAARC,IAAuB,CAE5B,GAAI,CAACF,KAGHA,GAAkB,OAAO,OAAW,KAAe,OAAO,iBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAAK,OAAO,SAAa,KAAe,OAAO,SAAS,iBAAoB,YAAc,SAAS,gBAAgB,KAAK,QAAQ,EAE3O,CAACA,IACH,MAAM,IAAI,MAAM,0GAA0G,EAI9H,OAAOA,GAAgBC,EAAK,CAC9B,CClBAE,IAAAC,IAAAC,ICAAC,IAAAC,IAAAC,ICAAC,IAAAC,IAAAC,IAAA,IAAOC,GAAQ,sHDEf,SAASC,GAASC,EAAM,CACtB,OAAO,OAAOA,GAAS,UAAYC,GAAM,KAAKD,CAAI,CACpD,CAEA,IAAOE,GAAQH,GDAf,IAAII,GAAY,CAAC,EAEjB,IAASC,GAAI,EAAGA,GAAI,IAAK,EAAEA,GACzBD,GAAU,MAAMC,GAAI,KAAO,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,EAD1C,IAAAA,GAIT,SAASC,GAAUC,EAAK,CACtB,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAG7EC,GAAQL,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,GAAUG,EAAIC,EAAS,EAAE,CAAC,GAAG,YAAY,EAMrgB,GAAI,CAACE,GAASD,CAAI,EAChB,MAAM,UAAU,6BAA6B,EAG/C,OAAOA,CACT,CAEA,IAAOE,GAAQL,GG7BfM,IAAAC,IAAAC,IAGA,SAASC,GAAGC,EAASC,EAAKC,EAAQ,CAChCF,EAAUA,GAAW,CAAC,EACtB,IAAIG,EAAOH,EAAQ,SAAWA,EAAQ,KAAOI,IAAK,EAKlD,GAHAD,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,GAC3BA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,IAEvBF,EAAK,CACPC,EAASA,GAAU,EAEnB,QAAS,EAAI,EAAG,EAAI,GAAI,EAAE,EACxBD,EAAIC,EAAS,CAAC,EAAIC,EAAK,CAAC,EAG1B,OAAOF,CACT,CAEA,OAAOI,GAAUF,CAAI,CACvB,CAEA,IAAOG,GAAQP,GNrBf,IAAAQ,GAAqB,SOFrBC,IAAAC,IAAAC,IAAA,IAAIC,GAAY,CAAC,EACfC,GAAW,GACb,SAASC,IAAM,CACb,GAAID,GAAU,OAAOD,GACrBC,GAAW,GACX,IAAIE,EAAI,OAAO,SAAY,SAAW,QAAU,KAC5CC,EAAeD,GAAK,OAAOA,EAAE,OAAU,WAAaA,EAAE,MAAQ,SAAsBE,EAAQC,EAAUC,EAAM,CAC9G,OAAO,SAAS,UAAU,MAAM,KAAKF,EAAQC,EAAUC,CAAI,CAC7D,EACIC,EACAL,GAAK,OAAOA,EAAE,SAAY,WAC5BK,EAAiBL,EAAE,QACV,OAAO,sBAChBK,EAAiB,SAAwBH,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,EAAE,OAAO,OAAO,sBAAsBA,CAAM,CAAC,CACvF,EAEAG,EAAiB,SAAwBH,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,CAC1C,EAEF,SAASI,EAAmBC,EAAS,CAC/B,SAAW,QAAQ,MAAM,QAAQ,KAAKA,CAAO,CACnD,CACA,IAAIC,EAAc,OAAO,OAAS,SAAqBC,EAAO,CAC5D,OAAOA,IAAUA,CACnB,EACA,SAASC,GAAe,CACtBA,EAAa,KAAK,KAAK,IAAI,CAC7B,CACAb,GAAYa,EACZb,GAAU,KAAOc,EAGjBD,EAAa,aAAeA,EAC5BA,EAAa,UAAU,QAAU,OACjCA,EAAa,UAAU,aAAe,EACtCA,EAAa,UAAU,cAAgB,OAIvC,IAAIE,EAAsB,GAC1B,SAASC,EAAcC,EAAU,CAC/B,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,mEAAuE,OAAOA,CAAQ,CAE9G,CACA,OAAO,eAAeJ,EAAc,sBAAuB,CACzD,WAAY,GACZ,IAAK,UAAY,CACf,OAAOE,CACT,EACA,IAAK,SAAUG,EAAK,CAClB,GAAI,OAAOA,GAAQ,UAAYA,EAAM,GAAKP,EAAYO,CAAG,EACvD,MAAM,IAAI,WAAW,kGAAsGA,EAAM,GAAG,EAEtIH,EAAsBG,CACxB,CACF,CAAC,EACDL,EAAa,KAAO,UAAY,EAC1B,KAAK,UAAY,QAAa,KAAK,UAAY,OAAO,eAAe,IAAI,EAAE,WAC7E,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GAEtB,KAAK,cAAgB,KAAK,eAAiB,MAC7C,EAIAA,EAAa,UAAU,gBAAkB,SAAyBM,EAAG,CACnE,GAAI,OAAOA,GAAM,UAAYA,EAAI,GAAKR,EAAYQ,CAAC,EACjD,MAAM,IAAI,WAAW,gFAAoFA,EAAI,GAAG,EAElH,YAAK,cAAgBA,EACd,IACT,EACA,SAASC,EAAiBC,EAAM,CAC9B,OAAIA,EAAK,gBAAkB,OAAkBR,EAAa,oBACnDQ,EAAK,aACd,CACAR,EAAa,UAAU,gBAAkB,UAA2B,CAClE,OAAOO,EAAiB,IAAI,CAC9B,EACAP,EAAa,UAAU,KAAO,SAAcS,EAAM,CAEhD,QADIf,EAAO,CAAC,EACHgB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAKhB,EAAK,KAAK,UAAUgB,CAAC,CAAC,EACjE,IAAIC,EAAUF,IAAS,QACnBG,EAAS,KAAK,QAClB,GAAIA,IAAW,OAAWD,EAAUA,GAAWC,EAAO,QAAU,eAAmB,CAACD,EAAS,MAAO,GAGpG,GAAIA,EAAS,CACX,IAAIE,EAEJ,GADInB,EAAK,OAAS,IAAGmB,EAAKnB,EAAK,CAAC,GAC5BmB,aAAc,MAGhB,MAAMA,EAGR,IAAIC,EAAM,IAAI,MAAM,oBAAsBD,EAAK,KAAOA,EAAG,QAAU,IAAM,GAAG,EAC5E,MAAAC,EAAI,QAAUD,EACRC,CACR,CACA,IAAIC,GAAUH,EAAOH,CAAI,EACzB,GAAIM,KAAY,OAAW,MAAO,GAClC,GAAI,OAAOA,IAAY,WACrBxB,EAAawB,GAAS,KAAMrB,CAAI,MAIhC,SAFIsB,EAAMD,GAAQ,OACdE,EAAYC,EAAWH,GAASC,CAAG,EAC9BN,EAAI,EAAGA,EAAIM,EAAK,EAAEN,EAAGnB,EAAa0B,EAAUP,CAAC,EAAG,KAAMhB,CAAI,EAErE,MAAO,EACT,EACA,SAASyB,EAAa3B,EAAQiB,EAAML,EAAUgB,EAAS,CACrD,IAAIC,EACAT,EACAU,EAkBJ,GAjBAnB,EAAcC,CAAQ,EACtBQ,EAASpB,EAAO,QACZoB,IAAW,QACbA,EAASpB,EAAO,QAAU,OAAO,OAAO,IAAI,EAC5CA,EAAO,aAAe,IAIlBoB,EAAO,cAAgB,SACzBpB,EAAO,KAAK,cAAeiB,EAAML,EAAS,SAAWA,EAAS,SAAWA,CAAQ,EAIjFQ,EAASpB,EAAO,SAElB8B,EAAWV,EAAOH,CAAI,GAEpBa,IAAa,OAEfA,EAAWV,EAAOH,CAAI,EAAIL,EAC1B,EAAEZ,EAAO,qBAEL,OAAO8B,GAAa,WAEtBA,EAAWV,EAAOH,CAAI,EAAIW,EAAU,CAAChB,EAAUkB,CAAQ,EAAI,CAACA,EAAUlB,CAAQ,EAErEgB,EACTE,EAAS,QAAQlB,CAAQ,EAEzBkB,EAAS,KAAKlB,CAAQ,EAIxBiB,EAAId,EAAiBf,CAAM,EACvB6B,EAAI,GAAKC,EAAS,OAASD,GAAK,CAACC,EAAS,OAAQ,CACpDA,EAAS,OAAS,GAGlB,IAAIC,EAAI,IAAI,MAAM,+CAAiDD,EAAS,OAAS,IAAM,OAAOb,CAAI,EAAI,mEAA6E,EACvLc,EAAE,KAAO,8BACTA,EAAE,QAAU/B,EACZ+B,EAAE,KAAOd,EACTc,EAAE,MAAQD,EAAS,OACnB1B,EAAmB2B,CAAC,CACtB,CAEF,OAAO/B,CACT,CACAQ,EAAa,UAAU,YAAc,SAAqBS,EAAML,EAAU,CACxE,OAAOe,EAAa,KAAMV,EAAML,EAAU,EAAK,CACjD,EACAJ,EAAa,UAAU,GAAKA,EAAa,UAAU,YACnDA,EAAa,UAAU,gBAAkB,SAAyBS,EAAML,EAAU,CAChF,OAAOe,EAAa,KAAMV,EAAML,EAAU,EAAI,CAChD,EACA,SAASoB,GAAc,CACrB,GAAI,CAAC,KAAK,MAGR,OAFA,KAAK,OAAO,eAAe,KAAK,KAAM,KAAK,MAAM,EACjD,KAAK,MAAQ,GACT,UAAU,SAAW,EAAU,KAAK,SAAS,KAAK,KAAK,MAAM,EAC1D,KAAK,SAAS,MAAM,KAAK,OAAQ,SAAS,CAErD,CACA,SAASC,EAAUjC,EAAQiB,EAAML,EAAU,CACzC,IAAIsB,EAAQ,CACV,MAAO,GACP,OAAQ,OACR,OAAQlC,EACR,KAAMiB,EACN,SAAUL,CACZ,EACIuB,EAAUH,EAAY,KAAKE,CAAK,EACpC,OAAAC,EAAQ,SAAWvB,EACnBsB,EAAM,OAASC,EACRA,CACT,CACA3B,EAAa,UAAU,KAAO,SAAcS,EAAML,EAAU,CAC1D,OAAAD,EAAcC,CAAQ,EACtB,KAAK,GAAGK,EAAMgB,EAAU,KAAMhB,EAAML,CAAQ,CAAC,EACtC,IACT,EACAJ,EAAa,UAAU,oBAAsB,SAA6BS,EAAML,EAAU,CACxF,OAAAD,EAAcC,CAAQ,EACtB,KAAK,gBAAgBK,EAAMgB,EAAU,KAAMhB,EAAML,CAAQ,CAAC,EACnD,IACT,EAGAJ,EAAa,UAAU,eAAiB,SAAwBS,EAAML,EAAU,CAC9E,IAAIwB,EAAMhB,EAAQiB,EAAUnB,EAAGoB,EAG/B,GAFA3B,EAAcC,CAAQ,EACtBQ,EAAS,KAAK,QACVA,IAAW,OAAW,OAAO,KAEjC,GADAgB,EAAOhB,EAAOH,CAAI,EACdmB,IAAS,OAAW,OAAO,KAC/B,GAAIA,IAASxB,GAAYwB,EAAK,WAAaxB,EACrC,EAAE,KAAK,eAAiB,EAAG,KAAK,QAAU,OAAO,OAAO,IAAI,GAC9D,OAAOQ,EAAOH,CAAI,EACdG,EAAO,gBAAgB,KAAK,KAAK,iBAAkBH,EAAMmB,EAAK,UAAYxB,CAAQ,WAE/E,OAAOwB,GAAS,WAAY,CAErC,IADAC,EAAW,GACNnB,EAAIkB,EAAK,OAAS,EAAGlB,GAAK,EAAGA,IAChC,GAAIkB,EAAKlB,CAAC,IAAMN,GAAYwB,EAAKlB,CAAC,EAAE,WAAaN,EAAU,CACzD0B,EAAmBF,EAAKlB,CAAC,EAAE,SAC3BmB,EAAWnB,EACX,KACF,CAEF,GAAImB,EAAW,EAAG,OAAO,KACrBA,IAAa,EAAGD,EAAK,MAAM,EAC7BG,EAAUH,EAAMC,CAAQ,EAEtBD,EAAK,SAAW,IAAGhB,EAAOH,CAAI,EAAImB,EAAK,CAAC,GACxChB,EAAO,iBAAmB,QAAW,KAAK,KAAK,iBAAkBH,EAAMqB,GAAoB1B,CAAQ,CACzG,CACA,OAAO,IACT,EACAJ,EAAa,UAAU,IAAMA,EAAa,UAAU,eACpDA,EAAa,UAAU,mBAAqB,SAA4BS,EAAM,CAC5E,IAAIQ,EAAWL,EAAQF,EAEvB,GADAE,EAAS,KAAK,QACVA,IAAW,OAAW,OAAO,KAGjC,GAAIA,EAAO,iBAAmB,OAC5B,OAAI,UAAU,SAAW,GACvB,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GACXA,EAAOH,CAAI,IAAM,SACtB,EAAE,KAAK,eAAiB,EAAG,KAAK,QAAU,OAAO,OAAO,IAAI,EAAO,OAAOG,EAAOH,CAAI,GAEpF,KAIT,GAAI,UAAU,SAAW,EAAG,CAC1B,IAAIuB,EAAO,OAAO,KAAKpB,CAAM,EACzBqB,EACJ,IAAKvB,EAAI,EAAGA,EAAIsB,EAAK,OAAQ,EAAEtB,EAC7BuB,EAAMD,EAAKtB,CAAC,EACRuB,IAAQ,kBACZ,KAAK,mBAAmBA,CAAG,EAE7B,YAAK,mBAAmB,gBAAgB,EACxC,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,EACb,IACT,CAEA,GADAhB,EAAYL,EAAOH,CAAI,EACnB,OAAOQ,GAAc,WACvB,KAAK,eAAeR,EAAMQ,CAAS,UAC1BA,IAAc,OAEvB,IAAKP,EAAIO,EAAU,OAAS,EAAGP,GAAK,EAAGA,IACrC,KAAK,eAAeD,EAAMQ,EAAUP,CAAC,CAAC,EAG1C,OAAO,IACT,EACA,SAASwB,EAAW1C,EAAQiB,EAAM0B,EAAQ,CACxC,IAAIvB,EAASpB,EAAO,QACpB,GAAIoB,IAAW,OAAW,MAAO,CAAC,EAClC,IAAIwB,EAAaxB,EAAOH,CAAI,EAC5B,OAAI2B,IAAe,OAAkB,CAAC,EAClC,OAAOA,GAAe,WAAmBD,EAAS,CAACC,EAAW,UAAYA,CAAU,EAAI,CAACA,CAAU,EAChGD,EAASE,EAAgBD,CAAU,EAAIlB,EAAWkB,EAAYA,EAAW,MAAM,CACxF,CACApC,EAAa,UAAU,UAAY,SAAmBS,EAAM,CAC1D,OAAOyB,EAAW,KAAMzB,EAAM,EAAI,CACpC,EACAT,EAAa,UAAU,aAAe,SAAsBS,EAAM,CAChE,OAAOyB,EAAW,KAAMzB,EAAM,EAAK,CACrC,EACAT,EAAa,cAAgB,SAAUsC,EAAS7B,EAAM,CACpD,OAAI,OAAO6B,EAAQ,eAAkB,WAC5BA,EAAQ,cAAc7B,CAAI,EAE1B8B,EAAc,KAAKD,EAAS7B,CAAI,CAE3C,EACAT,EAAa,UAAU,cAAgBuC,EACvC,SAASA,EAAc9B,EAAM,CAC3B,IAAIG,EAAS,KAAK,QAClB,GAAIA,IAAW,OAAW,CACxB,IAAIwB,EAAaxB,EAAOH,CAAI,EAC5B,GAAI,OAAO2B,GAAe,WACxB,MAAO,GACF,GAAIA,IAAe,OACxB,OAAOA,EAAW,MAEtB,CACA,MAAO,EACT,CACApC,EAAa,UAAU,WAAa,UAAsB,CACxD,OAAO,KAAK,aAAe,EAAIL,EAAe,KAAK,OAAO,EAAI,CAAC,CACjE,EACA,SAASuB,EAAWsB,EAAKlC,EAAG,CAE1B,QADImC,EAAO,IAAI,MAAMnC,CAAC,EACbI,EAAI,EAAGA,EAAIJ,EAAG,EAAEI,EAAG+B,EAAK/B,CAAC,EAAI8B,EAAI9B,CAAC,EAC3C,OAAO+B,CACT,CACA,SAASV,EAAUH,EAAMc,EAAO,CAC9B,KAAOA,EAAQ,EAAId,EAAK,OAAQc,IAASd,EAAKc,CAAK,EAAId,EAAKc,EAAQ,CAAC,EACrEd,EAAK,IAAI,CACX,CACA,SAASS,EAAgBG,EAAK,CAE5B,QADIG,EAAM,IAAI,MAAMH,EAAI,MAAM,EACrB9B,EAAI,EAAGA,EAAIiC,EAAI,OAAQ,EAAEjC,EAChCiC,EAAIjC,CAAC,EAAI8B,EAAI9B,CAAC,EAAE,UAAY8B,EAAI9B,CAAC,EAEnC,OAAOiC,CACT,CACA,SAAS1C,EAAKqC,EAASM,EAAM,CAC3B,OAAO,IAAI,QAAQ,SAAUC,EAASC,EAAQ,CAC5C,SAASC,EAAcjC,EAAK,CAC1BwB,EAAQ,eAAeM,EAAMI,CAAQ,EACrCF,EAAOhC,CAAG,CACZ,CACA,SAASkC,GAAW,CACd,OAAOV,EAAQ,gBAAmB,YACpCA,EAAQ,eAAe,QAASS,CAAa,EAE/CF,EAAQ,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,CAClC,CACAI,EAA+BX,EAASM,EAAMI,EAAU,CACtD,KAAM,EACR,CAAC,EACGJ,IAAS,SACXM,EAA8BZ,EAASS,EAAe,CACpD,KAAM,EACR,CAAC,CAEL,CAAC,CACH,CACA,SAASG,EAA8BZ,EAASvB,EAASoC,EAAO,CAC1D,OAAOb,EAAQ,IAAO,YACxBW,EAA+BX,EAAS,QAASvB,EAASoC,CAAK,CAEnE,CACA,SAASF,EAA+BX,EAASM,EAAMxC,EAAU+C,EAAO,CACtE,GAAI,OAAOb,EAAQ,IAAO,WACpBa,EAAM,KACRb,EAAQ,KAAKM,EAAMxC,CAAQ,EAE3BkC,EAAQ,GAAGM,EAAMxC,CAAQ,UAElB,OAAOkC,EAAQ,kBAAqB,WAG7CA,EAAQ,iBAAiBM,EAAM,SAASQ,EAAa/C,EAAK,CAGpD8C,EAAM,MACRb,EAAQ,oBAAoBM,EAAMQ,CAAY,EAEhDhD,EAASC,CAAG,CACd,CAAC,MAED,OAAM,IAAI,UAAU,sEAA0E,OAAOiC,CAAO,CAEhH,CACA,OAAOnD,EACT,CAEA,IAAMkE,GAAUhE,GAAI,EACpBgE,GAAQ,KAGRA,GAAQ,KAAO,SAAUf,EAASgB,EAAO,CACvC,OAAO,IAAI,QAAQ,CAACT,EAASC,IAAW,CACtC,SAASS,KAAiB7D,EAAM,CAC1BqD,IAAkB,QACpBT,EAAQ,eAAe,QAASS,CAAa,EAE/CF,EAAQnD,CAAI,CACd,CACA,IAAIqD,EACAO,IAAU,UAEZP,EAAiBjC,GAAQ,CACvBwB,EAAQ,eAAe,KAAMiB,CAAa,EAC1CT,EAAOhC,CAAG,CACZ,EAEAwB,EAAQ,KAAK,QAASS,CAAa,GAGrCT,EAAQ,KAAKgB,EAAOC,CAAa,CACnC,CAAC,CACH,EACAF,GAAQ,GAAK,SAAUf,EAASgB,EAAO,CACrC,IAAME,EAAwB,CAAC,EACzBC,EAAqB,CAAC,EACxBC,EAAQ,KACRC,EAAW,GAETC,EAAW,CACf,MAAM,MAAO,CACX,IAAM7D,EAAQyD,EAAsB,MAAM,EAC1C,GAAIzD,EACF,OAAO,iBAAiBA,EAAO,EAAK,EAGtC,GAAI2D,EAAO,CACT,IAAMG,EAAI,QAAQ,OAAOH,CAAK,EAC9B,OAAAA,EAAQ,KACDG,CACT,CAEA,OAAIF,EACK,iBAAiB,OAAW,EAAI,EAGlC,IAAI,QAAQ,CAACd,EAASC,IAAWW,EAAmB,KAAK,CAAE,QAAAZ,EAAS,OAAAC,CAAO,CAAC,CAAC,CACtF,EACA,MAAM,QAAS,CACbR,EAAQ,eAAegB,EAAOQ,CAAY,EAC1CxB,EAAQ,eAAe,QAASyB,CAAY,EAC5CJ,EAAW,GAEX,QAAWK,KAAWP,EACpBO,EAAQ,QAAQ,iBAAiB,OAAW,EAAI,CAAC,EAGnD,OAAO,iBAAiB,OAAW,EAAI,CACzC,EACA,MAAMlD,EAAK,CACT4C,EAAQ5C,EACRwB,EAAQ,eAAegB,EAAOQ,CAAY,EAC1CxB,EAAQ,eAAe,QAASyB,CAAY,CAC9C,EACA,CAAC,OAAO,aAAa,GAAI,CACvB,OAAO,IACT,CACF,EAEA,OAAAzB,EAAQ,GAAGgB,EAAOQ,CAAY,EAC9BxB,EAAQ,GAAG,QAASyB,CAAY,EAEzBH,EAEP,SAASE,KAAgBpE,EAAM,CAC7B,IAAMsE,EAAUP,EAAmB,MAAM,EACrCO,EACFA,EAAQ,QAAQ,iBAAiBtE,EAAM,EAAK,CAAC,EAE7C8D,EAAsB,KAAK9D,CAAI,CAEnC,CAEA,SAASqE,EAAajD,EAAK,CACzB6C,EAAW,GACX,IAAMM,EAAUR,EAAmB,MAAM,EACrCQ,EACFA,EAAQ,OAAOnD,CAAG,EAElB4C,EAAQ5C,EAEV8C,EAAS,OAAO,CAClB,CACF,EACA,GAAM,CACJ,aAAA5D,GACA,oBAAAE,GACA,KAAAgE,GACA,cAAA3B,GACA,GAAA4B,GACA,KAAAlE,EACF,EAAIoD,GPneJ,SAASe,GAAeC,EAAQ,CAC9B,OAAQ,OAAO,YAAgB,KAAeA,aAAkB,aAC7D,OAAO,KAAS,KAAeA,aAAkB,IACtD,CAOA,SAASC,GAAkBD,EAAQ,CACjC,OAAOA,aAAkB,YACrBA,EAAO,MAAM,CAAC,EACdA,EAAO,MAAM,EAAGA,EAAO,KAAMA,EAAO,IAAI,CAC9C,CAMA,IAAIE,GAAe,SAAS,UAAU,SAClCC,GAAmBD,GAAa,KAAK,MAAM,EAE/C,SAASE,GAAcC,EAAO,CAC5B,IAAIC,EAAQ,OAAO,eAAeD,CAAK,EAEvC,GAAIC,IAAU,KACZ,MAAO,GAET,IAAIC,EAAOD,EAAM,YACjB,OAAQ,OAAOC,GAAQ,YACrBA,aAAgBA,GAAQL,GAAa,KAAKK,CAAI,GAAKJ,EACvD,CAEA,SAASK,GAAMR,EAAQ,CACrB,IAAIS,EACAC,EACAC,EAEJ,GAAI,CAACX,GAAU,OAAOA,GAAW,SAC/B,OAAOA,EAGT,GAAI,MAAM,QAAQA,CAAM,EAAG,CAEzB,IADAS,EAAY,CAAC,EACRC,EAAI,EAAGC,EAAMX,EAAO,OAAQU,EAAIC,EAAKD,IACxCD,EAAUC,CAAC,EAAIF,GAAMR,EAAOU,CAAC,CAAC,EAEhC,OAAOD,CACT,CAIA,GAAIT,aAAkB,MAAQ,SAASA,CAAM,EAC3C,OAAOA,EAAO,YAAY,EAG5B,GAAID,GAAeC,CAAM,EACvB,OAAOC,GAAkBD,CAAM,EAGjC,GAAI,CAACI,GAAcJ,CAAM,EACvB,OAAOA,EAGTS,EAAY,CAAC,EACb,IAAKC,KAAKV,EAER,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAQU,CAAC,EAAG,CACnD,IAAIL,EAAQG,GAAMR,EAAOU,CAAC,CAAC,EACvB,OAAOL,EAAU,MACnBI,EAAUC,CAAC,EAAIL,EAEnB,CAEF,OAAOI,CACT,CAEA,SAASG,GAAKC,EAAK,CACjB,IAAIC,EAAS,GACb,OAAO,YAAaC,EAAM,CAExB,GAAID,EAEF,MAAM,IAAI,MAAM,4BAA4B,EAE5CA,EAAS,GACTD,EAAI,MAAM,KAAME,CAAI,CAExB,CACF,CAEA,SAASC,GAAUC,EAAM,CAEvB,OAAO,YAAaF,EAAM,CAExBA,EAAOP,GAAMO,CAAI,EACjB,IAAIG,EAAO,KAEPC,EAAU,OAAOJ,EAAKA,EAAK,OAAS,CAAC,GAAM,WAAcA,EAAK,IAAI,EAAI,GACtEK,EAAU,IAAI,QAAQ,SAAUC,EAASC,EAAQ,CACnD,IAAIC,EACJ,GAAI,CACF,IAAIC,EAAWZ,GAAK,SAAUa,EAAKC,EAAM,CACnCD,EACFH,EAAOG,CAAG,EAEVJ,EAAQK,CAAI,CAEhB,CAAC,EAGDX,EAAK,KAAKS,CAAQ,EAClBD,EAAON,EAAK,MAAMC,EAAMH,CAAI,EACxBQ,GAAQ,OAAOA,EAAK,MAAS,YAC/BF,EAAQE,CAAI,CAEhB,OAASI,EAAG,CACVL,EAAOK,CAAC,CACV,CACF,CAAC,EAED,OAAIR,GACFC,EAAQ,KAAK,SAAUQ,EAAQ,CAC7BT,EAAO,KAAMS,CAAM,CACrB,EAAGT,CAAM,EAEJC,CACT,CACF,CAEA,SAASS,GAAWX,EAAMY,EAAMf,EAAM,CAEpC,GAAIG,EAAK,YAAY,UAAU,OAAO,EAAE,OAAQ,CAE9C,QADIa,EAAU,CAAC,MAAOb,EAAK,KAAMY,CAAI,EAC5B,EAAI,EAAG,EAAIf,EAAK,OAAS,EAAG,IACnCgB,EAAQ,KAAKhB,EAAK,CAAC,CAAC,EAEtBG,EAAK,YAAY,KAAK,QAASa,CAAO,EAGtC,IAAIC,EAAejB,EAAKA,EAAK,OAAS,CAAC,EACvCA,EAAKA,EAAK,OAAS,CAAC,EAAI,SAAUU,EAAKQ,EAAK,CAC1C,IAAIC,EAAe,CAAC,MAAOhB,EAAK,KAAMY,CAAI,EAC1CI,EAAeA,EAAa,OAC1BT,EAAM,CAAC,QAASA,CAAG,EAAI,CAAC,UAAWQ,CAAG,CACxC,EACAf,EAAK,YAAY,KAAK,QAASgB,CAAY,EAC3CF,EAAaP,EAAKQ,CAAG,CACvB,CACF,CACF,CAEA,SAASE,GAAWL,EAAMN,EAAU,CAClC,OAAOR,GAAU,YAAaD,EAAM,CAClC,GAAI,KAAK,QACP,OAAO,QAAQ,OAAO,IAAI,MAAM,oBAAoB,CAAC,EAEvD,GAAI,KAAK,WACP,OAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC,EAE1D,IAAIG,EAAO,KAEX,OADAW,GAAWX,EAAMY,EAAMf,CAAI,EACtB,KAAK,UAAU,QAWbS,EAAS,MAAM,KAAMT,CAAI,EAVvB,IAAI,QAAQ,SAAUM,EAASC,EAAQ,CAC5CJ,EAAK,UAAU,QAAQ,SAAUkB,EAAQ,CACnCA,EACFd,EAAOc,CAAM,EAEbf,EAAQH,EAAKY,CAAI,EAAE,MAAMZ,EAAMH,CAAI,CAAC,CAExC,CAAC,CACH,CAAC,CAGL,CAAC,CACH,CAGA,SAASsB,GAAKC,EAAKC,EAAK,CAEtB,QADIN,EAAM,CAAC,EACFvB,EAAI,EAAGC,EAAM4B,EAAI,OAAQ7B,EAAIC,EAAKD,IAAK,CAC9C,IAAI8B,EAAOD,EAAI7B,CAAC,EACZ8B,KAAQF,IACVL,EAAIO,CAAI,EAAIF,EAAIE,CAAI,EAExB,CACA,OAAOP,CACT,CAKA,IAAIQ,GAA8B,EAElC,SAASC,GAAiBC,EAAG,CAC3B,OAAOA,CACT,CAEA,SAASC,GAA2BhB,EAAQ,CAC1C,MAAO,CAAC,CACN,GAAIA,CACN,CAAC,CACH,CAGA,SAASiB,GAAQC,EAAIC,EAAMvB,EAAU,CACnC,IAAIwB,EAAWD,EAAK,KAGhBE,EAAe,IAAI,IACvBD,EAAS,QAAQ,SAAUE,EAAS,CAC9BD,EAAa,IAAIC,EAAQ,EAAE,EAC7BD,EAAa,IAAIC,EAAQ,EAAE,EAAE,KAAKA,CAAO,EAEzCD,EAAa,IAAIC,EAAQ,GAAI,CAACA,CAAO,CAAC,CAE1C,CAAC,EAED,IAAIC,EAAUF,EAAa,KACvBG,EAAU,EACVC,EAAgB,IAAI,MAAMF,CAAO,EAErC,SAASG,GAA2B,CAClC,IAAIC,EAAU,CAAC,EACfF,EAAc,QAAQ,SAAUpB,EAAK,CACnCA,EAAI,KAAK,QAAQ,SAAUuB,EAAM,CAC/BD,EAAQ,KAAK,CACX,GAAItB,EAAI,GACR,KAAM,CAACuB,CAAI,CACb,CAAC,CACH,CAAC,CACH,CAAC,EACDhC,EAAS,KAAM,CAAC,QAAA+B,CAAO,CAAC,CAC1B,CAEA,SAASE,GAAY,CACf,EAAEL,IAAYD,GAChBG,EAAyB,CAE7B,CAEA,SAASI,EAAUC,EAAUC,EAAIC,EAAM,CACrCR,EAAcM,CAAQ,EAAI,CAAC,GAAAC,EAAI,KAAAC,CAAI,EACnCJ,EAAU,CACZ,CAEA,IAAIK,EAAc,CAAC,EACnBb,EAAa,QAAQ,SAAU5C,EAAO0D,EAAK,CACzCD,EAAY,KAAKC,CAAG,CACtB,CAAC,EAED,IAAIrD,EAAI,EAER,SAASsD,GAAY,CAEnB,GAAI,EAAAtD,GAAKoD,EAAY,QAIrB,KAAIG,EAAO,KAAK,IAAIvD,EAAI+B,GAA6BqB,EAAY,MAAM,EACnEI,EAAQJ,EAAY,MAAMpD,EAAGuD,CAAI,EACrCE,EAAaD,EAAOxD,CAAC,EACrBA,GAAKwD,EAAM,OACb,CAEA,SAASC,EAAaD,EAAOE,EAAQ,CACnCF,EAAM,QAAQ,SAAUG,EAAOC,EAAG,CAChC,IAAIC,EAASH,EAASE,EAClBE,EAAcvB,EAAa,IAAIoB,CAAK,EAQpCI,EAAUpC,GAAKmC,EAAY,CAAC,EAAG,CAAC,aAAc,aAAa,CAAC,EAChEC,EAAQ,UAAYD,EAAY,IAAI,SAAUtB,EAAS,CAErD,OAAOA,EAAQ,GACjB,CAAC,EAGDuB,EAAQ,UAAYA,EAAQ,UAAU,OAAO/B,EAAgB,EAE7D,IAAIgC,EAAehC,GAEf+B,EAAQ,UAAU,SAAW,IAC/B,OAAOA,EAAQ,UAKfC,EAAe9B,IAIjB,CAAC,OAAQ,cAAe,SAAU,OAAQ,QAAQ,EAAE,QAAQ,SAAU+B,EAAO,CACvEA,KAAS5B,IACX0B,EAAQE,CAAK,EAAI5B,EAAK4B,CAAK,EAE/B,CAAC,EACD7B,EAAG,IAAIuB,EAAOI,EAAS,SAAUhD,EAAKQ,EAAK,CACzC,IAAIL,EAEAH,EACFG,EAAS,CAAC,CAAC,MAAOH,CAAG,CAAC,EAEtBG,EAAS8C,EAAazC,CAAG,EAE3ByB,EAAUa,EAAQF,EAAOzC,CAAM,EAC/BoC,EAAU,CACZ,CAAC,CACH,CAAC,CACH,CAEAA,EAAU,CAEZ,CAEA,IAAIY,GAEJ,GAAI,CACF,aAAa,QAAQ,4BAA6B,CAAC,EACnDA,GAAW,CAAC,CAAC,aAAa,QAAQ,2BAA2B,CAC/D,MAAY,CACVA,GAAW,EACb,CAEA,SAASC,IAAkB,CACzB,OAAOD,EACT,CAEA,IAAME,GAAW,OAAO,gBAAmB,WACvC,eACA,SAAkBC,EAAI,CACtB,QAAQ,QAAQ,EAAE,KAAKA,CAAE,CAC3B,EAEIC,GAAN,cAAsBC,EAAG,CACvB,aAAc,CACZ,MAAM,EAEN,KAAK,WAAa,CAAC,EAEfJ,GAAgB,GAClB,iBAAiB,UAAY,GAAM,CACjC,KAAK,KAAK,EAAE,GAAG,CACjB,CAAC,CAEL,CAEA,YAAYK,EAAQtB,EAAId,EAAIC,EAAM,CAChC,GAAI,KAAK,WAAWa,CAAE,EACpB,OAEF,IAAIuB,EAAa,GACbjE,EAAO,KACX,SAASkE,GAAgB,CACvB,GAAI,CAAClE,EAAK,WAAW0C,CAAE,EACrB,OAEF,GAAIuB,EAAY,CACdA,EAAa,UACb,MACF,CACAA,EAAa,GACb,IAAIE,EAAchD,GAAKU,EAAM,CAC3B,QAAS,eAAgB,cAAe,YAAa,SACrD,UAAW,OAAQ,QAAS,eAAgB,SAAU,aACxD,CAAC,EAED,SAASuC,GAAU,CACjBH,EAAa,EACf,CAEArC,EAAG,QAAQuC,CAAW,EAAE,GAAG,SAAU,SAAUE,EAAG,CAC5CA,EAAE,IAAMxC,EAAK,OAAS,CAACA,EAAK,YAC9BA,EAAK,MAAQwC,EAAE,IACfxC,EAAK,SAASwC,CAAC,EAEnB,CAAC,EAAE,GAAG,WAAY,UAAY,CACxBJ,IAAe,WACjBL,GAASM,CAAa,EAExBD,EAAa,EACf,CAAC,EAAE,GAAG,QAASG,CAAO,CACxB,CACA,KAAK,WAAW1B,CAAE,EAAIwB,EACtB,KAAK,GAAGF,EAAQE,CAAa,CAC/B,CAEA,eAAeF,EAAQtB,EAAI,CACnBA,KAAM,KAAK,aAGjB,MAAM,eAAesB,EAAQ,KAAK,WAAWtB,CAAE,CAAC,EAChD,OAAO,KAAK,WAAWA,CAAE,EAC3B,CAEA,mBAAmBsB,EAAQ,CAGrBL,GAAgB,IAClB,aAAaK,CAAM,EAAK,aAAaA,CAAM,IAAM,IAAO,IAAM,IAElE,CAEA,OAAOA,EAAQ,CACb,KAAK,KAAKA,CAAM,EAChB,KAAK,mBAAmBA,CAAM,CAChC,CACF,EAEA,SAASM,GAAeC,EAAQ,CAE9B,GAAI,OAAO,QAAY,KAAe,OAAO,QAAQA,CAAM,GAAM,WAAY,CAC3E,IAAI1E,EAAO,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EAClD,QAAQ0E,CAAM,EAAE,MAAM,QAAS1E,CAAI,CACrC,CACF,CAEA,SAAS2E,GAAaC,EAAKC,EAAK,CAC9B,IAAIC,EAAa,IACjBF,EAAM,SAASA,EAAK,EAAE,GAAK,EAC3BC,EAAM,SAASA,EAAK,EAAE,EAClBA,IAAQA,GAAOA,GAAOD,EACxBC,GAAOD,GAAO,IAAM,EAEpBC,EAAMA,EAAM,EAGVA,EAAMC,IACRF,EAAME,GAAc,EACpBD,EAAMC,GAER,IAAIC,EAAQ,KAAK,OAAO,EACpBC,EAAQH,EAAMD,EAElB,MAAO,CAAC,EAAEI,EAAQD,EAAQH,EAC5B,CAEA,SAASK,GAAeL,EAAK,CAC3B,IAAIC,EAAM,EACV,OAAKD,IACHC,EAAM,KAEDF,GAAaC,EAAKC,CAAG,CAC9B,CAIA,SAASK,GAAaC,EAAQC,EAAK,CACjCX,GAAe,OAAQ,aAAeU,EAAS,uBAAyBC,CAAG,CAC7E,CAEA,IAAMC,GAAN,cAAyB,KAAM,CAC7B,YAAYF,EAAQG,EAAOC,EAAQ,CACjC,MAAM,EACN,KAAK,OAASJ,EACd,KAAK,KAAOG,EACZ,KAAK,QAAUC,EACf,KAAK,MAAQ,EACf,CAEA,UAAW,CACT,OAAO,KAAK,UAAU,CACpB,OAAQ,KAAK,OACb,KAAM,KAAK,KACX,QAAS,KAAK,QACd,OAAQ,KAAK,MACf,CAAC,CACH,CACF,EAEIC,GAAe,IAAIH,GAAW,IAAK,eAAgB,gCAAgC,EACnFI,GAAoB,IAAIJ,GAAW,IAAK,cAAe,6BAA6B,EACpFK,GAAc,IAAIL,GAAW,IAAK,YAAa,SAAS,EACxDM,GAAe,IAAIN,GAAW,IAAK,WAAY,0BAA0B,EACzEO,GAAa,IAAIP,GAAW,IAAK,cAAe,iCAAiC,EACjFQ,GAAa,IAAIR,GAAW,IAAK,aAAc,0BAA0B,EACzES,GAAc,IAAIT,GAAW,IAAK,cAAe,uDAAuD,EACxGU,GAAW,IAAIV,GAAW,IAAK,sBAAuB,mBAAmB,EACzEW,GAAgB,IAAIX,GAAW,IAAK,gBAAiB,uCAAuC,EAC5FY,GAAU,IAAIZ,GAAW,IAAK,SAAU,gCAAgC,EACxEa,GAAkB,IAAIb,GAAW,IAAK,kBAAmB,qBAAqB,EAC9Ec,GAAoB,IAAId,GAAW,IAAK,oBAAqB,iCAAiC,EAC9Fe,GAAiB,IAAIf,GAAW,IAAK,iBAAkB,6BAA6B,EACpFgB,GAAc,IAAIhB,GAAW,IAAK,cAAe,kCAAkC,EACnFiB,GAAgB,IAAIjB,GAAW,IAAK,cAAe,gCAAgC,EACnFkB,GAAa,IAAIlB,GAAW,IAAK,YAAa,oBAAoB,EAClEmB,GAAY,IAAInB,GAAW,IAAK,sBAAuB,SAAS,EAChEoB,GAAY,IAAIpB,GAAW,IAAK,mBAAoB,SAAS,EAC7DqB,GAAY,IAAIrB,GAAW,IAAK,wBAAyB,SAAS,EAClEsB,GAAY,IAAItB,GAAW,IAAK,YAAa,sDAAsD,EACnGuB,GAAc,IAAIvB,GAAW,IAAK,cAAe,oBAAoB,EACrEwB,GAAc,IAAIxB,GAAW,IAAK,cAAe,6DAA6D,EAC9GyB,GAAe,IAAIzB,GAAW,IAAK,eAAgB,6CAA8C,EACjG0B,GAAc,IAAI1B,GAAW,IAAK,cAAe,yBAAyB,EAE9E,SAAS2B,GAAY1B,EAAOC,EAAQ,CAClC,SAAS0B,EAAiB1B,EAAQ,CAIhC,QADI2B,EAAQ,OAAO,oBAAoB5B,CAAK,EACnC3F,EAAI,EAAGC,EAAMsH,EAAM,OAAQvH,EAAIC,EAAKD,IACvC,OAAO2F,EAAM4B,EAAMvH,CAAC,CAAC,GAAM,aAC7B,KAAKuH,EAAMvH,CAAC,CAAC,EAAI2F,EAAM4B,EAAMvH,CAAC,CAAC,GAI/B,KAAK,QAAU,SACjB,KAAK,MAAS,IAAI,MAAM,EAAG,OAGzB4F,IAAW,SACb,KAAK,OAASA,EAElB,CACA,OAAA0B,EAAiB,UAAY5B,GAAW,UACjC,IAAI4B,EAAiB1B,CAAM,CACpC,CAEA,SAAS4B,GAA0BzG,EAAK,CAEtC,GAAI,OAAOA,GAAQ,SAAU,CAC3B,IAAI0G,EAAO1G,EACXA,EAAMsF,GACNtF,EAAI,KAAO0G,CACb,CAEA,MAAI,UAAW1G,GAAOA,EAAI,QAAU,aAClCA,EAAI,KAAO,WACXA,EAAI,OAAS,KAGT,SAAUA,IACdA,EAAI,KAAOA,EAAI,OAAS,WAGpB,WAAYA,IAChBA,EAAI,OAAS,KAGT,YAAaA,IACjBA,EAAI,QAAUA,EAAI,SAAWA,EAAI,QAG7B,UAAWA,IACfA,EAAI,MAAS,IAAI,MAAM,EAAG,OAGrBA,CACT,CAEA,SAAS2G,GAAUC,EAAQC,EAAKC,EAAK,CACnC,GAAI,CACF,MAAO,CAACF,EAAOC,EAAKC,CAAG,CACzB,OAAS9G,EAAK,CACZ,IAAI+G,EAAM,0BAA4B/G,EAAI,SAAS,EACnD,OAAOsG,GAAYX,GAAaoB,CAAG,CACrC,CACF,CAEA,SAASC,GAAa1F,EAAM,CAC1B,IAAIwF,EAAM,CAAC,EACPG,EAAY3F,EAAK,QAAU,OAAOA,EAAK,QAAW,WACtD,OAAAwF,EAAI,MAAQxF,EAAK,aAEV,SAAgB4F,EAAQ,CACxBA,EAAO,MAGVA,EAAO,IAAM,CAAC,GAGhB,IAAIC,EAAeF,GAAaN,GAAUrF,EAAK,OAAQ4F,EAAO,IAAKJ,CAAG,EAEtE,GAAI,OAAOK,GAAiB,SAC1B,OAAOA,EAGT,GAAIA,EACF,MAAO,GAGT,GAAI,CAAC7F,EAAK,aACR,OAAO4F,EAAO,YACL,CAAC5F,EAAK,YACf,QAAS8F,KAAOF,EAAO,IAAI,aAErB,OAAO,UAAU,eAAe,KAAKA,EAAO,IAAI,aAAcE,CAAG,IACnEF,EAAO,IAAI,aAAaE,CAAG,EAAE,KAAO,IAI1C,MAAO,EACT,CACF,CASA,SAASC,GAAelF,EAAI,CAC1B,IAAInC,EAQJ,GAPKmC,EAEM,OAAOA,GAAO,SACvBnC,EAAMsG,GAAYpB,EAAU,EACnB,KAAK,KAAK/C,CAAE,GAAK,CAAE,mBAAoB,KAAKA,CAAE,IACvDnC,EAAMsG,GAAYlB,EAAW,GAJ7BpF,EAAMsG,GAAYnB,EAAU,EAM1BnF,EACF,MAAMA,CAEV,CAIA,SAASsH,GAASjG,EAAI,CACpB,OAAI,OAAOA,EAAG,SAAY,UACjBA,EAAG,QAGR,OAAOA,EAAG,MAAS,YACrB0C,GAAe,OACb,4EAC6B,EACxB1C,EAAG,KAAK,IAAM,QAGhB,EACT,CAEA,SAASkG,GAAcC,EAAIC,EAAM,CAC/B,MAAO,kBAAmBD,EAAKA,EAAG,cAAcC,CAAI,EACrBjE,GAAG,cAAcgE,EAAIC,CAAI,CAC1D,CAEA,SAASC,GAA2BC,EAAG,CACrC,GAAI,CAACA,EACH,OAAO,KAET,IAAIC,EAAQD,EAAE,MAAM,GAAG,EACvB,OAAIC,EAAM,SAAW,EACZA,EAELA,EAAM,SAAW,EACZ,CAACD,EAAGA,CAAC,EAEP,IACT,CAEA,SAASE,GAA+BF,EAAG,CACzC,IAAIG,EAAaJ,GAA2BC,CAAC,EAC7C,OAAOG,EAAaA,EAAW,KAAK,GAAG,EAAI,IAC7C,CAKA,IAAIC,GAAO,CAAC,SAAU,WAAY,YAAa,WAAY,OAAQ,WAC/D,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,QAAQ,EAC1EC,GAAO,WACPC,GAAU,4BAIVC,GAAS,mMAEb,SAASC,GAASzD,EAAK,CAKrB,QAJI0D,EAAIF,GAAO,KAAKxD,CAAG,EACnB2D,EAAM,CAAC,EACPpJ,EAAI,GAEDA,KAAK,CACV,IAAIqD,EAAMyF,GAAK9I,CAAC,EACZL,EAAQwJ,EAAEnJ,CAAC,GAAK,GAChBqJ,EAAU,CAAC,OAAQ,UAAU,EAAE,QAAQhG,CAAG,IAAM,GACpD+F,EAAI/F,CAAG,EAAIgG,EAAU,mBAAmB1J,CAAK,EAAIA,CACnD,CAEA,OAAAyJ,EAAIL,EAAK,EAAI,CAAC,EACdK,EAAIN,GAAK,EAAE,CAAC,EAAE,QAAQE,GAAS,SAAUM,EAAIC,EAAIC,EAAI,CAC/CD,IACFH,EAAIL,EAAK,EAAEQ,CAAE,EAAIC,EAErB,CAAC,EAEMJ,CACT,CAMA,SAASK,GAAUC,EAAQC,EAAO,CAChC,IAAIb,EAAO,CAAC,EACRc,EAAS,CAAC,EACd,QAASvG,KAAOsG,EACV,OAAO,UAAU,eAAe,KAAKA,EAAOtG,CAAG,IACjDyF,EAAK,KAAKzF,CAAG,EACbuG,EAAO,KAAKD,EAAMtG,CAAG,CAAC,GAG1B,OAAAyF,EAAK,KAAKY,CAAM,EACT,SAAS,MAAM,KAAMZ,CAAI,EAAE,MAAM,KAAMc,CAAM,CACtD,CAKA,SAASC,GAAOzH,EAAIuB,EAAOmG,EAAS,CAClC,OAAO1H,EAAG,IAAIuB,CAAK,EAChB,MAAM,SAAU5C,EAAK,CAEpB,GAAIA,EAAI,SAAW,IACjB,MAAMA,EAER,MAAO,CAAC,CACV,CAAC,EACA,KAAK,SAAU6G,EAAK,CAEnB,IAAImC,EAASnC,EAAI,KACboC,EAASF,EAAQlC,CAAG,EAExB,OAAKoC,GAQLA,EAAO,IAAMrG,EACbqG,EAAO,KAAOD,EACPE,GAAU7H,EAAI4H,EAAQF,CAAO,GAP3B,CAAC,QAAS,GAAO,IAAKC,CAAM,CAQvC,CAAC,CACL,CAEA,SAASE,GAAU7H,EAAIwF,EAAKkC,EAAS,CACnC,OAAO1H,EAAG,IAAIwF,CAAG,EAAE,KAAK,SAAUrG,EAAK,CACrC,MAAO,CACL,QAAS,GACT,IAAKA,EAAI,GACX,CACF,EAAG,SAAUR,EAAK,CAEhB,GAAIA,EAAI,SAAW,IACjB,MAAMA,EAER,OAAO8I,GAAOzH,EAAIwF,EAAI,IAAKkC,CAAO,CACpC,CAAC,CACH,CAEA,IAAII,GAAW,SAAUzE,EAAK,CAC5B,OAAO,KAAKA,CAAG,CACjB,EAEI0E,GAAW,SAAU1E,EAAK,CAC5B,OAAO,KAAKA,CAAG,CACjB,EAKA,SAAS2E,GAAWzB,EAAO0B,EAAY,CAErC1B,EAAQA,GAAS,CAAC,EAClB0B,EAAaA,GAAc,CAAC,EAC5B,GAAI,CACF,OAAO,IAAI,KAAK1B,EAAO0B,CAAU,CACnC,OAASpJ,EAAG,CACV,GAAIA,EAAE,OAAS,YACb,MAAMA,EAOR,QALIqJ,EAAU,OAAO,YAAgB,IAAc,YACrC,OAAO,cAAkB,IAAc,cACvC,OAAO,eAAmB,IAAc,eACxC,kBACVC,EAAU,IAAID,EACT,EAAI,EAAG,EAAI3B,EAAM,OAAQ,GAAK,EACrC4B,EAAQ,OAAO5B,EAAM,CAAC,CAAC,EAEzB,OAAO4B,EAAQ,QAAQF,EAAW,IAAI,CACxC,CACF,CAIA,SAASG,GAA0BC,EAAK,CAItC,QAHIC,EAASD,EAAI,OACbE,EAAM,IAAI,YAAYD,CAAM,EAC5B7I,EAAM,IAAI,WAAW8I,CAAG,EACnB,EAAI,EAAG,EAAID,EAAQ,IAC1B7I,EAAI,CAAC,EAAI4I,EAAI,WAAW,CAAC,EAE3B,OAAOE,CACT,CAEA,SAASC,GAAmBC,EAAWrC,EAAM,CAC3C,OAAO4B,GAAW,CAACI,GAA0BK,CAAS,CAAC,EAAG,CAAC,KAAArC,CAAI,CAAC,CAClE,CAEA,SAASsC,GAAaC,EAAKvC,EAAM,CAC/B,OAAOoC,GAAmBV,GAASa,CAAG,EAAGvC,CAAI,CAC/C,CAKA,SAASwC,GAA0BC,EAAQ,CAIzC,QAHIC,EAAS,GACTC,EAAQ,IAAI,WAAWF,CAAM,EAC7BP,EAASS,EAAM,WACV,EAAI,EAAG,EAAIT,EAAQ,IAC1BQ,GAAU,OAAO,aAAaC,EAAM,CAAC,CAAC,EAExC,OAAOD,CACT,CAGA,SAASE,GAAmBC,EAAMvK,EAAU,CAC1C,IAAIwK,EAAS,IAAI,WACbC,EAAkB,OAAOD,EAAO,oBAAuB,WAC3DA,EAAO,UAAY,SAAUrK,EAAG,CAC9B,IAAIC,EAASD,EAAE,OAAO,QAAU,GAChC,GAAIsK,EACF,OAAOzK,EAASI,CAAM,EAExBJ,EAASkK,GAA0B9J,CAAM,CAAC,CAC5C,EACIqK,EACFD,EAAO,mBAAmBD,CAAI,EAE9BC,EAAO,kBAAkBD,CAAI,CAEjC,CAEA,SAASG,GAAmBC,EAAc3K,EAAU,CAClDsK,GAAmBK,EAAc,SAAUhB,EAAK,CAC9C3J,EAAS2J,CAAG,CACd,CAAC,CACH,CAEA,SAASiB,GAAaD,EAAc3K,EAAU,CAC5C0K,GAAmBC,EAAc,SAAUE,EAAQ,CACjD7K,EAASqJ,GAASwB,CAAM,CAAC,CAC3B,CAAC,CACH,CAGA,SAASC,GAAkBP,EAAMvK,EAAU,CACzC,IAAIwK,EAAS,IAAI,WACjBA,EAAO,UAAY,SAAUrK,EAAG,CAC9B,IAAIC,EAASD,EAAE,OAAO,QAAU,IAAI,YAAY,CAAC,EACjDH,EAASI,CAAM,CACjB,EACAoK,EAAO,kBAAkBD,CAAI,CAC/B,CAIA,IAAIQ,GAAmB,KAAK,cAAgB,KAAK,WAC7CC,GAAiB,MAErB,SAASC,GAAYC,EAAK,CACxB,OAAO7B,GAAS6B,CAAG,CACrB,CAEA,SAASC,GAAWhB,EAAQI,EAAMa,EAAOC,EAAKrL,EAAU,EAClDoL,EAAQ,GAAKC,EAAMd,EAAK,QAE1BA,EAAOA,EAAK,MAAMa,EAAOC,CAAG,GAE9BP,GAAkBP,EAAM,SAAUe,EAAa,CAC7CnB,EAAO,OAAOmB,CAAW,EACzBtL,EAAS,CACX,CAAC,CACH,CAEA,SAASuL,GAAapB,EAAQqB,EAAQJ,EAAOC,EAAKrL,EAAU,EACtDoL,EAAQ,GAAKC,EAAMG,EAAO,UAE5BA,EAASA,EAAO,UAAUJ,EAAOC,CAAG,GAEtClB,EAAO,aAAaqB,CAAM,EAC1BxL,EAAS,CACX,CAEA,SAASyL,GAAU9E,EAAM3G,EAAU,CACjC,IAAI0L,EAAgB,OAAO/E,GAAS,SAChCxH,EAAMuM,EAAgB/E,EAAK,OAASA,EAAK,KACzCgF,EAAY,KAAK,IAAIX,GAAgB7L,CAAG,EACxCyM,EAAS,KAAK,KAAKzM,EAAMwM,CAAS,EAClCE,EAAe,EACf1B,EAASuB,EAAgB,IAAI,GAAAI,QAAQ,IAAI,GAAAA,QAAI,YAE7CC,EAASL,EAAgBH,GAAeJ,GAE5C,SAASa,GAAO,CACdjB,GAAiBkB,CAAa,CAChC,CAEA,SAASC,GAAO,CACd,IAAIhB,EAAMf,EAAO,IAAI,EAAI,EACrBU,EAASI,GAAYC,CAAG,EAC5BlL,EAAS6K,CAAM,EACfV,EAAO,QAAQ,CACjB,CAEA,SAAS8B,GAAgB,CACvB,IAAIb,EAAQS,EAAeF,EACvBN,EAAMD,EAAQO,EAClBE,IACIA,EAAeD,EACjBG,EAAO5B,EAAQxD,EAAMyE,EAAOC,EAAKW,CAAI,EAErCD,EAAO5B,EAAQxD,EAAMyE,EAAOC,EAAKa,CAAI,CAEzC,CACAD,EAAc,CAChB,CAEA,SAASE,GAAUX,EAAQ,CACzB,OAAO,GAAAM,QAAI,KAAKN,CAAM,CACxB,CAMA,SAASY,GAAItF,EAAKuF,EAAoB,CACpC,GAAI,CAACA,EACH,OAAOC,GAAG,EAAE,QAAQ,KAAM,EAAE,EAAE,YAAY,EAG5C,IAAIC,EAAgB,OAAO,OAAO,CAAC,EAAGzF,CAAG,EACzC,cAAOyF,EAAc,UACdJ,GAAU,KAAK,UAAUI,CAAa,CAAC,CAChD,CAEA,IAAIC,GAAOF,GAOX,SAASG,GAAWC,EAAU,CAM5B,QALIC,EACAC,EACAC,EACAC,EAAUJ,EAAS,SAAS,MAAM,EAClCK,EACIA,EAAOD,EAAQ,IAAI,GAAI,CAC7B,IAAIE,EAAOD,EAAK,IACZE,EAAWD,EAAK,CAAC,EACjBE,EAAMH,EAAK,IACf,GAAIE,EAAS,OAAQ,CACnB,QAAS/N,EAAI,EAAGC,EAAM8N,EAAS,OAAQ/N,EAAIC,EAAKD,IAC9C4N,EAAQ,KAAK,CAAC,IAAKI,EAAM,EAAG,IAAKD,EAAS/N,CAAC,CAAC,CAAC,EAE/C,QACF,CACA,IAAIiO,EAAU,CAAC,CAACH,EAAK,CAAC,EAAE,QACpB5K,EAAK4K,EAAK,CAAC,GAEX,CAACL,IAAcE,IAAmBM,EAAUN,EAC5CD,IAAeM,EAAMN,EAAaM,EAAMP,EAAYvK,MACtDuK,EAAYvK,EACZwK,EAAaM,EACbL,EAAiBM,EAErB,CAEA,OAAOP,EAAa,IAAMD,CAC5B,CAMA,SAASS,GAAgBC,EAAMrN,EAAU,CAIvC,QAHI8M,EAAUO,EAAK,MAAM,EAErBN,EACIA,EAAOD,EAAQ,IAAI,GAMzB,QALII,EAAMH,EAAK,IACXC,EAAOD,EAAK,IACZE,EAAWD,EAAK,CAAC,EACjBM,EACFtN,EAASiN,EAAS,SAAW,EAAGC,EAAKF,EAAK,CAAC,EAAGD,EAAK,IAAKC,EAAK,CAAC,CAAC,EACxD9N,EAAI,EAAGC,EAAM8N,EAAS,OAAQ/N,EAAIC,EAAKD,IAC9C4N,EAAQ,KAAK,CAAC,IAAKI,EAAM,EAAG,IAAKD,EAAS/N,CAAC,EAAG,IAAKoO,CAAM,CAAC,CAGhE,CAEA,SAASC,GAAUC,EAAGC,EAAG,CACvB,OAAOD,EAAE,IAAMC,EAAE,GACnB,CAEA,SAASC,GAAcL,EAAM,CAC3B,IAAIM,EAAS,CAAC,EACdP,GAAgBC,EAAM,SAAUO,EAAQV,EAAK9K,EAAIyL,EAAKtM,EAAM,CACtDqM,GACFD,EAAO,KAAK,CAAC,IAAKT,EAAM,IAAM9K,EAAI,IAAA8K,EAAK,KAAA3L,CAAI,CAAC,CAEhD,CAAC,EACDoM,EAAO,KAAKJ,EAAS,EAAE,QAAQ,EAC/B,QAASrO,EAAI,EAAGC,EAAMwO,EAAO,OAAQzO,EAAIC,EAAKD,IAC5C,OAAOyO,EAAOzO,CAAC,EAAE,IAEnB,OAAOyO,CACT,CAKA,SAASG,GAAiBpB,EAAU,CAIlC,QAHIqB,EAAMtB,GAAWC,CAAQ,EACzBiB,EAASD,GAAchB,EAAS,QAAQ,EACxCsB,EAAY,CAAC,EACR,EAAI,EAAG7O,EAAMwO,EAAO,OAAQ,EAAIxO,EAAK,IAAK,CACjD,IAAI8O,EAAON,EAAO,CAAC,EACfM,EAAK,MAAQF,GAAO,CAACE,EAAK,KAAK,SACjCD,EAAU,KAAKC,EAAK,GAAG,CAE3B,CACA,OAAOD,CACT,CAIA,SAASE,GAAYxB,EAAU,CAC7B,IAAIW,EAAO,CAAC,EACZ,OAAAD,GAAgBV,EAAS,SAAU,SAAUkB,EAAQV,EACRiB,EAASC,EAAK7M,EAAM,CAC3DA,EAAK,SAAW,aAAe,CAACqM,IAClCP,EAAK,KAAKH,EAAM,IAAMiB,CAAO,EAC7B5M,EAAK,OAAS,UAElB,CAAC,EACM8L,CACT,CAkBA,SAASgB,GAAehB,EAAMiB,EAAW,CACvC,IAAIC,EAAO,CAAC,EACNzB,EAAUO,EAAK,MAAM,EAEvBN,EACJ,KAAQA,EAAOD,EAAQ,IAAI,GAAI,CAC7B,GAAM,CAAE,IAAAI,EAAK,IAAKF,CAAK,EAAID,EACrBX,EAAM,GAAGc,CAAG,IAAIF,EAAK,CAAC,CAAC,GACvBC,EAAWD,EAAK,CAAC,EAMvB,GAHAuB,EAAK,KAAKnC,CAAG,EAGTA,IAAQkC,EAAW,CAErB,GAAIrB,EAAS,SAAW,EACtB,MAAM,IAAI,MAAM,sCAAsC,EAExD,OAAOsB,EAAK,QAAQ,CACtB,EAKItB,EAAS,SAAW,GAAKA,EAAS,OAAS,KAC7CsB,EAAO,CAAC,GAIV,QAASrP,EAAI,EAAGC,EAAM8N,EAAS,OAAQ/N,EAAIC,EAAKD,IAC9C4N,EAAQ,KAAK,CAAE,IAAKI,EAAM,EAAG,IAAKD,EAAS/N,CAAC,CAAE,CAAC,CAEnD,CACA,GAAIqP,EAAK,SAAW,EAClB,MAAM,IAAI,MAAM,uCAAuC,EAEzD,OAAOA,EAAK,QAAQ,CACtB,CAGA,SAASC,GAAWnB,EAAM,CAIxB,QAHIoB,EAAQ,CAAC,EACT3B,EAAUO,EAAK,MAAM,EACrBN,EACIA,EAAOD,EAAQ,IAAI,GAAI,CAC7B,IAAII,EAAMH,EAAK,IACXC,EAAOD,EAAK,IACZ3K,EAAK4K,EAAK,CAAC,EACXzL,EAAOyL,EAAK,CAAC,EACbC,EAAWD,EAAK,CAAC,EACjBY,EAASX,EAAS,SAAW,EAE7ByB,EAAU3B,EAAK,QAAUA,EAAK,QAAQ,MAAM,EAAI,CAAC,EACrD2B,EAAQ,KAAK,CAAC,GAAAtM,EAAI,KAAAb,CAAI,CAAC,EACnBqM,GACFa,EAAM,KAAK,CAAC,IAAMvB,EAAM,EAAIwB,EAAQ,OAAS,IAAKA,CAAO,CAAC,EAE5D,QAASxP,EAAI,EAAGC,EAAM8N,EAAS,OAAQ/N,EAAIC,EAAKD,IAC9C4N,EAAQ,KAAK,CAAC,IAAKI,EAAM,EAAG,IAAKD,EAAS/N,CAAC,EAAG,QAAAwP,CAAO,CAAC,CAE1D,CACA,OAAOD,EAAM,QAAQ,CACvB,CAIA,SAASE,GAAYnB,EAAGC,EAAG,CACzB,OAAOD,EAAE,IAAMC,EAAE,GACnB,CAGA,SAASmB,GAAa7N,EAAK8N,EAAMC,EAAY,CAI3C,QAHIC,EAAM,EACNC,EAAOjO,EAAI,OACXkO,EACGF,EAAMC,GACXC,EAAOF,EAAMC,IAAU,EACnBF,EAAW/N,EAAIkO,CAAG,EAAGJ,CAAI,EAAI,EAC/BE,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOF,CACT,CAGA,SAASG,GAAanO,EAAK8N,EAAMC,EAAY,CAC3C,IAAIK,EAAMP,GAAa7N,EAAK8N,EAAMC,CAAU,EAC5C/N,EAAI,OAAOoO,EAAK,EAAGN,CAAI,CACzB,CAKA,SAASO,GAAWb,EAAMc,EAAY,CAGpC,QAFIC,EACArB,EACK,EAAIoB,EAAYlQ,EAAMoP,EAAK,OAAQ,EAAIpP,EAAK,IAAK,CACxD,IAAI4N,EAAOwB,EAAK,CAAC,EACbgB,EAAc,CAACxC,EAAK,GAAIA,EAAK,KAAM,CAAC,CAAC,EACrCkB,GACFA,EAAK,CAAC,EAAE,KAAKsB,CAAW,EACxBtB,EAAOsB,GAEPD,EAAOrB,EAAOsB,CAElB,CACA,OAAOD,CACT,CAGA,SAASE,GAAYhC,EAAGC,EAAG,CACzB,OAAOD,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAI,GAAK,CAC5B,CAIA,SAASgC,GAAUC,EAAUC,EAAU,CAGrC,QAFIC,EAAQ,CAAC,CAAC,MAAOF,EAAU,MAAOC,CAAQ,CAAC,EAC3C3B,EAAY,GACT4B,EAAM,OAAS,GAAG,CACvB,IAAIf,EAAOe,EAAM,IAAI,EACjBC,EAAQhB,EAAK,MACbiB,EAAQjB,EAAK,OAEbgB,EAAM,CAAC,EAAE,QAAUC,EAAM,CAAC,EAAE,UAC9BD,EAAM,CAAC,EAAE,OACNA,EAAM,CAAC,EAAE,SAAY,aACtBC,EAAM,CAAC,EAAE,SAAW,YAAe,YAAc,WAGrD,QAAS5Q,EAAI,EAAGA,EAAI4Q,EAAM,CAAC,EAAE,OAAQ5Q,IAAK,CACxC,GAAI,CAAC2Q,EAAM,CAAC,EAAE,CAAC,EAAG,CAChB7B,EAAY,WACZ6B,EAAM,CAAC,EAAE,CAAC,EAAIC,EAAM,CAAC,EAAE5Q,CAAC,EACxB,QACF,CAGA,QADI6Q,EAAS,GACJjN,EAAI,EAAGA,EAAI+M,EAAM,CAAC,EAAE,OAAQ/M,IAC/B+M,EAAM,CAAC,EAAE/M,CAAC,EAAE,CAAC,IAAMgN,EAAM,CAAC,EAAE5Q,CAAC,EAAE,CAAC,IAClC0Q,EAAM,KAAK,CAAC,MAAOC,EAAM,CAAC,EAAE/M,CAAC,EAAG,MAAOgN,EAAM,CAAC,EAAE5Q,CAAC,CAAC,CAAC,EACnD6Q,EAAS,IAGRA,IACH/B,EAAY,aACZkB,GAAaW,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAE5Q,CAAC,EAAGsQ,EAAW,EAEnD,CACF,CACA,MAAO,CAAC,UAAAxB,EAAW,KAAM0B,CAAQ,CACnC,CAEA,SAASM,GAAQhD,EAAMuB,EAAM0B,EAAY,CACvC,IAAIC,EAAU,CAAC,EACXlC,EAAY,GACZ+B,EAAS,GACTtP,EAEJ,GAAI,CAACuM,EAAK,OACR,MAAO,CAAC,KAAM,CAACuB,CAAI,EAAG,UAAW,UAAU,EAG7C,QAASrP,EAAI,EAAGC,EAAM6N,EAAK,OAAQ9N,EAAIC,EAAKD,IAAK,CAC/C,IAAIiR,EAASnD,EAAK9N,CAAC,EACnB,GAAIiR,EAAO,MAAQ5B,EAAK,KAAO4B,EAAO,IAAI,CAAC,IAAM5B,EAAK,IAAI,CAAC,EAGzD9N,EAAMgP,GAAUU,EAAO,IAAK5B,EAAK,GAAG,EACpC2B,EAAQ,KAAK,CAAC,IAAKC,EAAO,IAAK,IAAK1P,EAAI,IAAI,CAAC,EAC7CuN,EAAYA,GAAavN,EAAI,UAC7BsP,EAAS,WACAE,IAAe,GAAM,CAM9B,IAAIG,EAAKD,EAAO,IAAM5B,EAAK,IAAM4B,EAAS5B,EACtC8B,EAAKF,EAAO,IAAM5B,EAAK,IAAMA,EAAO4B,EACpCG,EAAOD,EAAG,IAAMD,EAAG,IAEnBG,EAAmB,CAAC,EAEpBC,EAAQ,CAAC,EAEb,IADAA,EAAM,KAAK,CAAC,IAAKJ,EAAG,IAAK,KAAAE,EAAM,OAAQ,KAAM,UAAW,IAAI,CAAC,EACtDE,EAAM,OAAS,GAAG,CACvB,IAAI3B,EAAO2B,EAAM,IAAI,EACrB,GAAI3B,EAAK,OAAS,EAAG,CACfA,EAAK,IAAI,CAAC,IAAMwB,EAAG,IAAI,CAAC,GAC1BE,EAAiB,KAAK1B,CAAI,EAE5B,QACF,CAEA,QADI4B,EAAW5B,EAAK,IAAI,CAAC,EAChB/L,EAAI,EAAG4N,EAAcD,EAAS,OAAQ3N,EAAI4N,EAAa5N,IAC9D0N,EAAM,KAAK,CACT,IAAKC,EAAS3N,CAAC,EACf,KAAM+L,EAAK,KAAO,EAClB,OAAQA,EAAK,IACb,UAAW/L,CACb,CAAC,CAEL,CAEA,IAAI6N,EAAKJ,EAAiB,CAAC,EAEtBI,GAGHlQ,EAAMgP,GAAUkB,EAAG,IAAKN,EAAG,GAAG,EAC9BM,EAAG,OAAO,CAAC,EAAEA,EAAG,SAAS,EAAIlQ,EAAI,KACjCyP,EAAQ,KAAK,CAAC,IAAKE,EAAG,IAAK,IAAKA,EAAG,GAAG,CAAC,EACvCpC,EAAYA,GAAavN,EAAI,UAC7BsP,EAAS,IANTG,EAAQ,KAAKC,CAAM,CAQvB,MACED,EAAQ,KAAKC,CAAM,CAEvB,CAGA,OAAKJ,GACHG,EAAQ,KAAK3B,CAAI,EAGnB2B,EAAQ,KAAKvB,EAAW,EAEjB,CACL,KAAMuB,EACN,UAAWlC,GAAa,eAC1B,CACF,CAGA,SAAS4C,GAAK5D,EAAM6D,EAAO,CAMzB,QAJIpC,EAAQD,GAAWxB,CAAI,EACvB8D,EAEA1Q,EACKlB,EAAI,EAAGC,EAAMsP,EAAM,OAAQvP,EAAIC,EAAKD,IAAK,CAGhD,IAAIqP,EAAOE,EAAMvP,CAAC,EACd6R,EAAUxC,EAAK,IACfxB,EACJ,GAAIgE,EAAQ,OAASF,EAAO,CAErBC,IACHA,EAAc,CAAC,GAEjB,IAAIzB,EAAa0B,EAAQ,OAASF,EAClC9D,EAAO,CACL,IAAKwB,EAAK,IAAMc,EAChB,IAAKD,GAAW2B,EAAS1B,CAAU,CACrC,EAEA,QAASzH,EAAI,EAAGA,EAAIyH,EAAYzH,IAAK,CACnC,IAAIwE,EAAOmC,EAAK,IAAM3G,EAAK,IAAMmJ,EAAQnJ,CAAC,EAAE,GAC5CkJ,EAAY1E,CAAG,EAAI,EACrB,CACF,MACEW,EAAO,CACL,IAAKwB,EAAK,IACV,IAAKa,GAAW2B,EAAS,CAAC,CAC5B,EAKE3Q,EACFA,EAAS4P,GAAQ5P,EAAQ2M,EAAM,EAAI,EAAE,KAErC3M,EAAS,CAAC2M,CAAI,CAElB,CAGA,OAAI+D,GACF1D,GAAgBhN,EAAQ,SAAUwN,EAAQV,EAAKiB,EAAS,CAEtD,OAAO2C,EAAY5D,EAAM,IAAMiB,CAAO,CACxC,CAAC,EAGI,CACL,KAAM/N,EACN,KAAM0Q,EAAc,OAAO,KAAKA,CAAW,EAAI,CAAC,CAClD,CACF,CAEA,SAASE,GAAMhE,EAAMuB,EAAMsC,EAAO,CAChC,IAAII,EAAUjB,GAAQhD,EAAMuB,CAAI,EAC5BwC,EAAUH,GAAKK,EAAQ,KAAMJ,CAAK,EACtC,MAAO,CACL,KAAME,EAAQ,KACd,YAAaA,EAAQ,KACrB,UAAWE,EAAQ,SACrB,CACF,CAGA,SAASC,GAAU7D,EAAMjB,EAAK,CAO5B,QANIU,EAAUO,EAAK,MAAM,EACrB8D,EAAW/E,EAAI,MAAM,GAAG,EACxBgF,EAAY,SAASD,EAAS,CAAC,EAAG,EAAE,EACpCE,EAAWF,EAAS,CAAC,EAErBpE,EACIA,EAAOD,EAAQ,IAAI,GAAI,CAC7B,GAAIC,EAAK,MAAQqE,GAAarE,EAAK,IAAI,CAAC,IAAMsE,EAC5C,MAAO,GAGT,QADIpE,EAAWF,EAAK,IAAI,CAAC,EAChB7N,EAAI,EAAGC,EAAM8N,EAAS,OAAQ/N,EAAIC,EAAKD,IAC9C4N,EAAQ,KAAK,CAAC,IAAKC,EAAK,IAAM,EAAG,IAAKE,EAAS/N,CAAC,CAAC,CAAC,CAEtD,CACA,MAAO,EACT,CAEA,SAASoS,GAASvE,EAAM,CACtB,OAAOA,EAAK,GACd,CAKA,SAASwE,GAAU7E,EAAUN,EAAK,CAC3BA,IACHA,EAAMK,GAAWC,CAAQ,GAM3B,QAJItK,EAAKgK,EAAI,UAAUA,EAAI,QAAQ,GAAG,EAAI,CAAC,EACvCU,EAAUJ,EAAS,SAAS,IAAI4E,EAAQ,EAExCtE,EACIA,EAAOF,EAAQ,IAAI,GAAI,CAC7B,GAAIE,EAAK,CAAC,IAAM5K,EACd,MAAO,CAAC,CAAC4K,EAAK,CAAC,EAAE,QAEnBF,EAAUA,EAAQ,OAAOE,EAAK,CAAC,CAAC,CAClC,CACF,CAEA,SAASwE,GAAUpP,EAAI,CACrB,OAAO,OAAOA,GAAO,UAAYA,EAAG,WAAW,SAAS,CAC1D,CAGA,SAASqP,GAAOrF,EAAKM,EAAU,CAG7B,QAFII,EAAUJ,EAAS,SAAS,MAAM,EAClCK,EACIA,EAAOD,EAAQ,IAAI,GAAI,CAC7B,IAAII,EAAMH,EAAK,IACXC,EAAOD,EAAK,IACZ3K,EAAK4K,EAAK,CAAC,EACXzL,EAAOyL,EAAK,CAAC,EACbC,EAAWD,EAAK,CAAC,EACjBY,EAASX,EAAS,SAAW,EAE7ByB,EAAU3B,EAAK,QAAUA,EAAK,QAAQ,MAAM,EAAI,CAAC,EAGrD,GAFA2B,EAAQ,KAAK,CAAC,GAAAtM,EAAI,IAAA8K,EAAK,KAAA3L,CAAI,CAAC,EAExBqM,EACF,QAAS1O,EAAI,EAAGC,EAAMuP,EAAQ,OAAQxP,EAAIC,EAAKD,IAAK,CAClD,IAAIwS,EAAchD,EAAQxP,CAAC,EACvByS,EAAaD,EAAY,IAAM,IAAMA,EAAY,GAErD,GAAIC,IAAevF,EAEjB,OAAOc,EAAM,IAAM9K,CAEvB,CAGF,QAASU,EAAI,EAAG8O,EAAI3E,EAAS,OAAQnK,EAAI8O,EAAG9O,IAC1CgK,EAAQ,KAAK,CAAC,IAAKI,EAAM,EAAG,IAAKD,EAASnK,CAAC,EAAG,QAAA4L,CAAO,CAAC,CAE1D,CAGA,MAAM,IAAI,MAAM,4CAA8ChC,EAAS,GAAK,SAAWN,CAAG,CAC5F,CAEA,SAASyF,GAAyBnS,EAAMyH,EAAQ2K,EAASC,EAAS,CAEhE,GAAI,CACFrS,EAAK,KAAK,SAAUyH,EAAQ2K,EAASC,CAAO,CAC9C,OAAS5R,EAAG,CACV6D,GAAe,QAAS,oCAAqC7D,CAAC,CAChE,CACF,CAEA,SAAS6R,GAAclL,EAAK4F,EAAUnL,EAAM,CAC1C,IAAI0Q,EAAa,CAAC,CAAC,IAAKnL,EAAI,IAAI,CAAC,EAC7BvF,EAAK,QAAU,aACjB0Q,EAAavE,GAAchB,EAAS,QAAQ,EAC3C,IAAI,SAAUvL,EAAG,CAAE,MAAO,CAAC,IAAKA,EAAE,GAAG,CAAG,CAAC,GAE5C,IAAIgG,EAAS,CACX,GAAIuF,EAAS,GACb,QAASuF,EACT,IAAAnL,CACF,EAEA,OAAIyK,GAAU7E,EAAU5F,EAAI,IAAI,IAC9BK,EAAO,QAAU,IAEf5F,EAAK,YACP4F,EAAO,IAAI,WAAa2G,GAAiBpB,CAAQ,EAC5CvF,EAAO,IAAI,WAAW,QACzB,OAAOA,EAAO,IAAI,YAGfA,CACT,CAEA,IAAM+K,GAAN,cAAwBzO,EAAG,CACzB,YAAYnC,EAAIC,EAAMvB,EAAU,CAC9B,MAAM,EACN,KAAK,GAAKsB,EACVC,EAAOA,EAAOvC,GAAMuC,CAAI,EAAI,CAAC,EAC7B,IAAI4Q,EAAW5Q,EAAK,SAAWnC,GAAK,CAACa,EAAKF,IAAS,CAC7CE,EACEuH,GAAc,KAAM,OAAO,EAAI,GACjC,KAAK,KAAK,QAASvH,CAAG,EAGxB,KAAK,KAAK,WAAYF,CAAI,EAE5B,KAAK,mBAAmB,EACxBuB,EAAG,eAAe,YAAa8Q,CAAS,CAC1C,CAAC,EACGpS,IACF,KAAK,GAAG,WAAY,SAAUD,EAAM,CAClCC,EAAS,KAAMD,CAAI,CACrB,CAAC,EACD,KAAK,GAAG,QAASC,CAAQ,GAE3B,IAAMoS,EAAY,IAAM,CACtB,KAAK,OAAO,CACd,EACA9Q,EAAG,KAAK,YAAa8Q,CAAS,EAE9B7Q,EAAK,SAAW,CAAC4F,EAAQ2K,EAASC,IAAY,CAExC,KAAK,aAGTF,GAAyB,KAAM1K,EAAQ2K,EAASC,CAAO,CACzD,EAEA,IAAInS,EAAU,IAAI,QAAQ,SAAUC,EAASC,EAAQ,CACnDyB,EAAK,SAAW,SAAUtB,EAAKQ,EAAK,CAC9BR,EACFH,EAAOG,CAAG,EAEVJ,EAAQY,CAAG,CAEf,CACF,CAAC,EACD,KAAK,KAAK,SAAU,UAAY,CAC9Ba,EAAG,eAAe,YAAa8Q,CAAS,EACxC7Q,EAAK,SAAS,KAAM,CAAC,OAAQ,WAAW,CAAC,CAC3C,CAAC,EACD,KAAK,KAAO3B,EAAQ,KAAK,KAAKA,CAAO,EACrC,KAAK,MAAWA,EAAQ,MAAS,KAAKA,CAAO,EAC7C,KAAK,KAAK,SAAUQ,EAAQ,CAC1B+R,EAAS,KAAM/R,CAAM,CACvB,EAAG+R,CAAQ,EAIN7Q,EAAG,UAAU,QAWhB,KAAK,gBAAgBC,CAAI,EAVzBD,EAAG,UAAU,QAASV,GAAW,CAC3BA,EACFW,EAAK,SAASX,CAAM,EACX,KAAK,YACd,KAAK,KAAK,QAAQ,EAElB,KAAK,gBAAgBW,CAAI,CAE7B,CAAC,CAIL,CAEA,QAAS,CACP,KAAK,YAAc,GACf,KAAK,GAAG,UAAU,SACpB,KAAK,KAAK,QAAQ,CAEtB,CAEA,gBAAgBA,EAAM,CACpB,IAAIvB,EAAWuB,EAAK,SAGhB8Q,GAAQ,qBACVA,GAAQ,qBAAqB,SAAS9Q,EAAOtB,GAAQ,CACnD,GAAIA,EACF,OAAOD,EAASC,CAAG,EAErB,KAAK,UAAUsB,CAAI,CACrB,CAAC,EAED,KAAK,UAAUA,CAAI,CAEvB,CAEA,UAAUA,EAAM,CACd,IAAIvB,EAAWuB,EAAK,SAcpB,GAZAA,EAAOvC,GAAMuC,CAAI,EACb,SAAUA,GAAQ,EAAE,eAAgBA,KACtCA,EAAK,WAAaA,EAAK,MAEzBA,EAAK,cAAgByQ,GAEjBzQ,EAAK,QAAU,WACjBA,EAAK,MAAQ,OAEVA,EAAK,QACRA,EAAK,MAAQ,GAEXA,EAAK,QAAU,MAAO,CACxB,KAAK,GAAG,KAAK,EAAE,KAAMS,GAAS,CAE5B,GAAI,KAAK,YAAa,CACpBhC,EAAS,KAAM,CAAC,OAAQ,WAAW,CAAC,EACpC,MACF,CACAuB,EAAK,MAAQS,EAAK,WAClB,KAAK,UAAUT,CAAI,CACrB,EAAGvB,CAAQ,EACX,MACF,CAGA,GAAIqS,GAAQ,sBAEV,GADAA,GAAQ,qBAAqB,UAAU9Q,CAAI,EACvC8Q,GAAQ,qBAAqB,aAAa,KAAM9Q,CAAI,EACtD,OAAO8Q,GAAQ,qBAAqB,OAAO,KAAM9Q,CAAI,MAGvD,CAAC,UAAW,SAAU,WAAY,MAAM,EAAE,QAAQ,SAAUgB,EAAK,CAC3DA,KAAOhB,GACTyC,GAAe,OACb,QAAUzB,EAAM,oKAGlB,CAEJ,CAAC,EAGG,eAAgBhB,IACpBA,EAAK,WAAa,IAIpBA,EAAK,MAAQA,EAAK,QAAU,EAAI,EAAIA,EAAK,MACzCA,EAAK,SAAWvB,EAChB,IAAIsS,EAAa,KAAK,GAAG,SAAS/Q,CAAI,EAEtC,GAAI+Q,GAAc,OAAOA,EAAW,QAAW,WAAY,CACzD,IAAMC,EAAS,KAAK,OACpB,KAAK,OAAS,IAAIhT,IAAS,CACzB+S,EAAW,OAAO,EAClBC,EAAO,MAAM,KAAMhT,CAAI,CACzB,CACF,CACF,CACF,EAQA,SAASiT,GAAUxS,EAAU6C,EAAO,CAClC,OAAO,SAAU5C,EAAK8B,EAAS,CACzB9B,GAAQ8B,EAAQ,CAAC,GAAKA,EAAQ,CAAC,EAAE,OACnC9B,EAAMA,GAAO8B,EAAQ,CAAC,EACtB9B,EAAI,MAAQ4C,EACZ7C,EAASC,CAAG,GAEZD,EAAS,KAAM+B,EAAQ,OAASA,EAAQ,CAAC,EAAKA,CAAO,CAEzD,CACF,CAGA,SAAS0Q,GAAUpQ,EAAM,CACvB,QAASnD,EAAI,EAAGA,EAAImD,EAAK,OAAQnD,IAAK,CACpC,IAAI4H,EAAMzE,EAAKnD,CAAC,EAChB,GAAI4H,EAAI,SACN,OAAOA,EAAI,qBACFA,EAAI,aAGb,QADI4L,EAAO,OAAO,KAAK5L,EAAI,YAAY,EAC9BhE,EAAI,EAAGA,EAAI4P,EAAK,OAAQ5P,IAAK,CACpC,IAAIuE,EAAMqL,EAAK5P,CAAC,EAChBgE,EAAI,aAAaO,CAAG,EAAIxG,GAAKiG,EAAI,aAAaO,CAAG,EAC/C,CAAC,OAAQ,SAAU,eAAgB,SAAU,SAAU,MAAM,CAAC,CAClE,CAEJ,CACF,CAGA,SAASsL,GAAmBnF,EAAGC,EAAG,CAChC,GAAID,EAAE,MAAQC,EAAE,IAAK,CACnB,IAAMmF,EAASpF,EAAE,WAAaA,EAAE,WAAW,MAAQ,EAC7CqF,EAASpF,EAAE,WAAaA,EAAE,WAAW,MAAQ,EACnD,OAAOmF,EAASC,CAClB,CACA,OAAOrF,EAAE,IAAMC,EAAE,IAAM,GAAK,CAC9B,CAIA,SAASqF,GAAczF,EAAM,CAC3B,IAAI0F,EAAS,CAAC,EACVC,EAAQ,CAAC,EACb,OAAA5F,GAAgBC,EAAM,SAAUO,EAAQV,EAAK9K,EAAI6Q,EAAM,CACrD,IAAIC,EAAShG,EAAM,IAAM9K,EACzB,OAAIwL,IACFmF,EAAOG,CAAM,EAAI,GAEfD,IAAS,QACXD,EAAM,KAAK,CAAC,KAAMC,EAAM,GAAIC,CAAM,CAAC,EAE9BA,CACT,CAAC,EAEDF,EAAM,QAAQ,EACdA,EAAM,QAAQ,SAAUG,EAAM,CACxBJ,EAAOI,EAAK,IAAI,IAAM,OACxBJ,EAAOI,EAAK,IAAI,EAAI,EAAIJ,EAAOI,EAAK,EAAE,EAEtCJ,EAAOI,EAAK,IAAI,EAAI,KAAK,IAAIJ,EAAOI,EAAK,IAAI,EAAG,EAAIJ,EAAOI,EAAK,EAAE,CAAC,CAEvE,CAAC,EACMJ,CACT,CAEA,SAASK,GAAiB7R,EAAM,CAC9B,IAAIyG,EAAS,UAAWzG,EACtBA,EAAK,KAAK,MAAMA,EAAK,KAAMA,EAAK,MAAQA,EAAK,IAAI,EAChDA,EAAK,KAAO,EAAKA,EAAK,KAAK,MAAMA,EAAK,IAAI,EAAIA,EAAK,KACtDA,EAAK,KAAOyG,EACZzG,EAAK,KAAO,EACZ,OAAOA,EAAK,MACRA,EAAK,aACPyG,EAAK,QAAQ,EACbzG,EAAK,WAAa,GAEtB,CAIA,SAAS8R,GAAiB3T,EAAM,CAC9B,IAAI4T,EAAO5T,EAAK,iBAAiB,CAAC,EAC9B6B,EAAO+R,EAAK,KACZtT,EAAWsT,EAAK,SACpB5T,EAAK,IAAI,mBAAmB,EAAE,MAAM,UAAY,CAC9C,MAAO,EACT,CAAC,EAAE,KAAK,SAAUoH,EAAK,CACjBA,GAAOA,EAAI,WACbvF,EAAK,SAAWuF,EAAI,UAEtBpH,EAAK,SAAS6B,EAAM,SAAUtB,EAAKQ,EAAK,CAElCR,EACFD,EAASC,CAAG,EAEZD,EAAS,KAAMS,CAAG,EAEpB6C,GAAS,UAAY,CACnB5D,EAAK,iBAAiB,MAAM,EACxBA,EAAK,iBAAiB,QACxB2T,GAAiB3T,CAAI,CAEzB,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAEA,SAAS6T,GAAejS,EAAIuB,EAAOqQ,EAAQ,CACzC,OAAO5R,EAAG,IAAI,eAAe,EAAE,KAAK,SAAUwF,EAAK,CACjD,IAAM0M,EAAW1M,EAAI,SAAW,EAChC,OAAAA,EAAI,OAAO,KAAK,CACd,MAAAjE,EACA,IAAKqQ,EACL,SAAAM,CACF,CAAC,EACG1M,EAAI,OAAO,OAAS,KAAK,oBAC3BA,EAAI,OAAO,OAAO,EAAGA,EAAI,OAAO,OAAS,KAAK,kBAAkB,EAElEA,EAAI,SAAW0M,EACR1M,CACT,CAAC,EAAE,MAAM,SAAU7G,EAAK,CACtB,GAAIA,EAAI,SAAW,IACjB,MAAMA,EAER,MAAO,CACL,IAAK,gBACL,OAAQ,CAAC,CACP,MAAA4C,EACA,IAAKqQ,EACL,SAAU,CACZ,CAAC,EACD,SAAU,CACZ,CACF,CAAC,EAAE,KAAK,SAAUpM,EAAK,CACrB,OAAOxF,EAAG,IAAIwF,CAAG,CACnB,CAAC,CACH,CAEA,SAAS2M,GAAoBnT,EAAM,CACjC,OAAIA,EAAK,OAAO,CAAC,IAAM,IACdA,EAAO,0EAGT,EACT,CAEA,SAASoT,GAAe5M,EAAK,CAC3B,OAAOA,IAAQ,MAAQ,OAAOA,GAAQ,UAAY,MAAM,QAAQA,CAAG,CACrE,CAEA,IAAM6M,GAAgB,cACtB,SAASC,GAAWV,EAAQ,CAC1B,OAAO,OAAOA,GAAW,UAAYS,GAAc,KAAKT,CAAM,CAChE,CAEA,IAAMW,GAAN,cAA8BpQ,EAAG,CAC/B,QAAS,CACP,KAAK,KAAO9C,GAAW,OAAQ,SAAUmG,EAAKvF,EAAMvB,EAAU,CAK5D,GAJI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAENmS,GAAe5M,CAAG,EACpB,OAAO9G,EAASuG,GAAYV,EAAa,CAAC,EAE5C,KAAK,SAAS,CAAC,KAAM,CAACiB,CAAG,CAAC,EAAGvF,EAAMiR,GAAUxS,EAAU8G,EAAI,GAAG,CAAC,CACjE,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,IAAMnG,GAAW,MAAO,SAAUmG,EAAKvF,EAAMuS,EAAI,CAKpD,GAJI,OAAOvS,GAAS,aAClBuS,EAAKvS,EACLA,EAAO,CAAC,GAENmS,GAAe5M,CAAG,EACpB,OAAOgN,EAAGvN,GAAYV,EAAa,CAAC,EAGtC,GADAyB,GAAeR,EAAI,GAAG,EAClB,SAAUA,GAAO,CAAC8M,GAAW9M,EAAI,IAAI,EACvC,OAAOgN,EAAGvN,GAAYJ,EAAW,CAAC,EAEpC,GAAIqL,GAAU1K,EAAI,GAAG,GAAK,OAAO,KAAK,WAAc,WAClD,OAAIA,EAAI,SACC,KAAK,aAAaA,EAAKgN,CAAE,EAEzB,KAAK,UAAUhN,EAAKgN,CAAE,EAIjC,IAAMC,EAAU/H,GAAS,CACnB,OAAO,KAAK,MAAS,YAAczK,EAAK,YAAc,GACxD,KAAK,KAAKuF,EAAKvF,EAAMyK,CAAI,EAEzB,KAAK,SAAS,CAAC,KAAM,CAAClF,CAAG,CAAC,EAAGvF,EAAMiR,GAAUxG,EAAMlF,EAAI,GAAG,CAAC,CAE/D,EAEIvF,EAAK,OAASuF,EAAI,MACpBkN,EAAqC,EACrCD,EAAO,SAAU9T,EAAK,CACpB,IAAIG,EAASH,EAAM,KAAO,CAAC,GAAI,GAAM,GAAI6G,EAAI,IAAK,IAAKA,EAAI,IAAI,EAC/DgN,EAAG7T,EAAKG,CAAM,CAChB,CAAC,GAED2T,EAAOD,CAAE,EAGX,SAASE,GAAuC,CAC9C,IAAInM,EAAQf,EAAI,KAAK,MAAM,GAAG,EAC1BmN,EAAWpM,EAAM,CAAC,EAClBqM,EAAY,SAASrM,EAAM,CAAC,EAAG,EAAE,EAEjCsM,EAAYD,EAAY,EACxBE,EAAWhI,GAAI,EAEnBtF,EAAI,WAAa,CACf,MAAOqN,EACP,IAAK,CAACC,EAAUH,CAAQ,CAC1B,EACAnN,EAAI,KAAOqN,EAAY,IAAMC,EAC7B7S,EAAK,UAAY,EACnB,CACF,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,cAAgBZ,GAAW,gBAAiB,SAAUkC,EAAOwR,EAAcnB,EAAQ3I,EAAM7C,EAAM,CAClG,IAAI4M,EAAM,KACN,OAAO5M,GAAS,aAClBA,EAAO6C,EACPA,EAAO2I,EACPA,EAAS,MAIP,OAAOxL,EAAS,MAClBA,EAAO6C,EACPA,EAAO2I,EACPA,EAAS,MAENxL,GACH1D,GAAe,OAAQ,aAAcqQ,EAAc,cAAexR,EAAO,yBAAyB,EAGpG,SAAS0R,EAAiBzN,EAAK,CAC7B,IAAI0N,EAAa,SAAU1N,EAAM,SAASA,EAAI,KAAM,EAAE,EAAI,EAC1D,OAAAA,EAAI,aAAeA,EAAI,cAAgB,CAAC,EACxCA,EAAI,aAAauN,CAAY,EAAI,CAC/B,aAAc3M,EACd,KAAM6C,EACN,OAAQ,EAAEiK,CACZ,EACOF,EAAI,IAAIxN,CAAG,CACpB,CAEA,OAAOwN,EAAI,IAAIzR,CAAK,EAAE,KAAK,SAAUiE,EAAK,CACxC,GAAIA,EAAI,OAASoM,EACf,MAAM3M,GAAYrB,EAAY,EAGhC,OAAOqP,EAAiBzN,CAAG,CAC7B,EAAG,SAAU7G,EAAK,CAGhB,GAAIA,EAAI,SAAWgF,GAAY,QAC7B,OAAOsP,EAAiB,CAAC,IAAK1R,CAAK,CAAC,EAEpC,MAAM5C,CAEV,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,iBAAmBU,GAAW,mBAAoB,SAAUkC,EAAOwR,EAAcnB,EAAQlT,EAAU,CACtG,KAAK,IAAI6C,EAAO,CAAC5C,EAAKa,IAAQ,CAE5B,GAAIb,EAAK,CACPD,EAASC,CAAG,EACZ,MACF,CACA,GAAIa,EAAI,OAASoS,EAAQ,CACvBlT,EAASuG,GAAYrB,EAAY,CAAC,EAClC,MACF,CAEA,GAAI,CAACpE,EAAI,aACP,OAAOd,EAAS,EAElB,OAAOc,EAAI,aAAauT,CAAY,EAChC,OAAO,KAAKvT,EAAI,YAAY,EAAE,SAAW,GAC3C,OAAOA,EAAI,aAEb,KAAK,IAAIA,EAAKd,CAAQ,CACxB,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,OAASW,GAAW,SAAU,SAAU8T,EAASC,EAAWnT,EAAMvB,EAAU,CAC/E,IAAI8G,EACA,OAAO4N,GAAc,UAEvB5N,EAAM,CACJ,IAAK2N,EACL,KAAMC,CACR,EACI,OAAOnT,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,KAIVuF,EAAM2N,EACF,OAAOC,GAAc,YACvB1U,EAAW0U,EACXnT,EAAO,CAAC,IAERvB,EAAWuB,EACXA,EAAOmT,IAGXnT,EAAOA,GAAQ,CAAC,EAChBA,EAAK,WAAa,GAClB,IAAI2H,EAAS,CAAC,IAAKpC,EAAI,IAAK,KAAOA,EAAI,MAAQvF,EAAK,GAAI,EAExD,GADA2H,EAAO,SAAW,GACdsI,GAAUtI,EAAO,GAAG,GAAK,OAAO,KAAK,cAAiB,WACxD,OAAO,KAAK,aAAapC,EAAK9G,CAAQ,EAExC,KAAK,SAAS,CAAC,KAAM,CAACkJ,CAAM,CAAC,EAAG3H,EAAMiR,GAAUxS,EAAUkJ,EAAO,GAAG,CAAC,CACvE,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,SAAWvI,GAAW,WAAY,SAAUoG,EAAKxF,EAAMvB,EAAU,CAChE,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEV,IAAIoT,EAAM,OAAO,KAAK5N,CAAG,EAEzB,GAAI,CAAC4N,EAAI,OACP,OAAO3U,EAAS,KAAM,CAAC,CAAC,EAG1B,IAAI4U,EAAQ,EACRC,EAAU,IAAI,IAElB,SAASC,EAAa1S,EAAI2S,EAAO,CAC1BF,EAAQ,IAAIzS,CAAE,GACjByS,EAAQ,IAAIzS,EAAI,CAAC,QAAS,CAAC,CAAC,CAAC,EAE/ByS,EAAQ,IAAIzS,CAAE,EAAE,QAAQ,KAAK2S,CAAK,CACpC,CAEA,SAASC,EAAW5S,EAAI6S,EAAU,CAEhC,IAAIC,EAAenO,EAAI3E,CAAE,EAAE,MAAM,CAAC,EAClCgL,GAAgB6H,EAAU,SAAUrH,EAAQV,EAAKiB,EAASC,EACxD7M,EAAM,CACJ,IAAI2R,EAAShG,EAAM,IAAMiB,EACrBgB,EAAM+F,EAAa,QAAQhC,CAAM,EACjC/D,IAAQ,KAIZ+F,EAAa,OAAO/F,EAAK,CAAC,EAEtB5N,EAAK,SAAW,aAClBuT,EAAa1S,EAAI8Q,CAAM,EAE3B,CAAC,EAIHgC,EAAa,QAAQ,SAAUhC,EAAQ,CACrC4B,EAAa1S,EAAI8Q,CAAM,CACzB,CAAC,CACH,CAEAyB,EAAI,QAAQ,SAAUvS,EAAI,CACxB,KAAK,iBAAiBA,EAAI,SAAUnC,EAAKgV,EAAU,CACjD,GAAIhV,GAAOA,EAAI,SAAW,KAAOA,EAAI,UAAY,UAC/C4U,EAAQ,IAAIzS,EAAI,CAAC,QAAS2E,EAAI3E,CAAE,CAAC,CAAC,MAC7B,IAAInC,EAET,OAAOD,EAASC,CAAG,EAEnB+U,EAAW5S,EAAI6S,CAAQ,EAGzB,GAAI,EAAEL,IAAUD,EAAI,OAAQ,CAE1B,IAAIQ,EAAa,CAAC,EAClB,OAAAN,EAAQ,QAAQ,SAAUhW,EAAO0D,EAAK,CACpC4S,EAAW5S,CAAG,EAAI1D,CACpB,CAAC,EACMmB,EAAS,KAAMmV,CAAU,CAClC,CACF,CAAC,CACH,EAAG,IAAI,CACT,CAAC,EAAE,KAAK,IAAI,EASZ,KAAK,QAAUxU,GAAW,UAAW,SAAUY,EAAMvB,EAAU,CAC7DqB,GAAQ,KAAME,EAAMvB,CAAQ,CAC9B,CAAC,EAAE,KAAK,IAAI,EAKZ,KAAK,gBAAkBW,GAAW,kBAAmB,SAAUkC,EAAOuS,EAAWpV,EAAU,CACzF,KAAK,iBAAiB6C,EAAO,CAAC5C,EAAKoV,IAAY,CAE7C,GAAIpV,EACF,OAAOD,EAASC,CAAG,EAErB,IAAI8S,EAASD,GAAcuC,CAAO,EAC9BC,EAAa,CAAC,EACdjI,EAAO,CAAC,EACZ,OAAO,KAAK0F,CAAM,EAAE,QAAQ,SAAUG,EAAQ,CACxCH,EAAOG,CAAM,EAAIkC,GACnBE,EAAW,KAAKpC,CAAM,CAE1B,CAAC,EAED9F,GAAgBiI,EAAS,SAAUzH,EAAQV,EAAKiB,EAASC,EAAK7M,EAAM,CAClE,IAAI2R,EAAShG,EAAM,IAAMiB,EACrB5M,EAAK,SAAW,aAAe+T,EAAW,QAAQpC,CAAM,IAAM,IAChE7F,EAAK,KAAK6F,CAAM,CAEpB,CAAC,EACD,KAAK,cAAcrQ,EAAOwK,EAAMrN,CAAQ,CAC1C,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAIZ,KAAK,QAAUW,GAAW,UAAW,SAAUY,EAAMvB,EAAU,CACzD,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAGVA,EAAOA,GAAQ,CAAC,EAEhB,KAAK,iBAAmB,KAAK,kBAAoB,CAAC,EAClD,KAAK,iBAAiB,KAAK,CAAC,KAAAA,EAAM,SAAAvB,CAAQ,CAAC,EACvC,KAAK,iBAAiB,SAAW,GACnCqT,GAAiB,IAAI,CAEzB,CAAC,EAAE,KAAK,IAAI,EAGZ,KAAK,IAAM1S,GAAW,MAAO,SAAUyB,EAAIb,EAAMuS,EAAI,CAMnD,GALI,OAAOvS,GAAS,aAClBuS,EAAKvS,EACLA,EAAO,CAAC,GAEVA,EAAOA,GAAQ,CAAC,EACZ,OAAOa,GAAO,SAChB,OAAO0R,EAAGvN,GAAYpB,EAAU,CAAC,EAEnC,GAAIqM,GAAUpP,CAAE,GAAK,OAAO,KAAK,WAAc,WAC7C,OAAO,KAAK,UAAUA,EAAI0R,CAAE,EAE9B,IAAInG,EAAS,CAAC,EAEd,IAAM4H,EAAiB,IAAM,CAC3B,IAAInV,EAAS,CAAC,EACVwU,EAAQjH,EAAO,OAEnB,GAAI,CAACiH,EACH,OAAOd,EAAG,KAAM1T,CAAM,EAIxBuN,EAAO,QAASM,GAAS,CACvB,KAAK,IAAI7L,EAAI,CACX,IAAK6L,EACL,KAAM1M,EAAK,KACX,OAAQA,EAAK,OACb,YAAaA,EAAK,YAClB,OAAQA,EAAK,MACf,EAAG,SAAUtB,EAAK6G,EAAK,CACrB,GAAK7G,EAaHG,EAAO,KAAK,CAAC,QAAS6N,CAAI,CAAC,MAbnB,CAGR,QADIuH,EACKtW,EAAI,EAAG0S,EAAIxR,EAAO,OAAQlB,EAAI0S,EAAG1S,IACxC,GAAIkB,EAAOlB,CAAC,EAAE,IAAMkB,EAAOlB,CAAC,EAAE,GAAG,OAAS4H,EAAI,KAAM,CAClD0O,EAAW,GACX,KACF,CAEGA,GACHpV,EAAO,KAAK,CAAC,GAAI0G,CAAG,CAAC,CAEzB,CAGA8N,IACKA,GACHd,EAAG,KAAM1T,CAAM,CAEnB,CAAC,CACH,CAAC,CACH,EAEA,GAAImB,EAAK,UAAW,CAClB,GAAIA,EAAK,YAAc,MACrB,KAAK,iBAAiBa,EAAI,SAAUnC,EAAKgV,EAAU,CAEjD,GAAIhV,EACF,OAAO6T,EAAG7T,CAAG,EAEf0N,EAASD,GAAcuH,CAAQ,EAAE,IAAI,SAAUhH,EAAM,CACnD,OAAOA,EAAK,GACd,CAAC,EACDsH,EAAe,CACjB,CAAC,UAEG,MAAM,QAAQhU,EAAK,SAAS,EAAG,CACjCoM,EAASpM,EAAK,UACd,QAASrC,EAAI,EAAGA,EAAIyO,EAAO,OAAQzO,IAAK,CACtC,IAAI0S,EAAIjE,EAAOzO,CAAC,EAEhB,GAAI,CAAC0U,GAAWhC,CAAC,EACf,OAAOkC,EAAGvN,GAAYJ,EAAW,CAAC,CAEtC,CACAoP,EAAe,CACjB,KACE,QAAOzB,EAAGvN,GAAYhB,GAAe,iBAAiB,CAAC,EAG3D,MACF,CAEA,OAAO,KAAK,KAAKnD,EAAIb,EAAM,CAACtB,EAAKG,IAAW,CAC1C,GAAIH,EACF,OAAAA,EAAI,MAAQmC,EACL0R,EAAG7T,CAAG,EAGf,IAAI6G,EAAM1G,EAAO,IACbsM,EAAWtM,EAAO,SAClBgO,EAAMhO,EAAO,IAEjB,GAAImB,EAAK,UAAW,CAClB,IAAIyM,EAAYF,GAAiBpB,CAAQ,EACrCsB,EAAU,SACZlH,EAAI,WAAakH,EAErB,CAMA,GAJIuD,GAAU7E,EAAU5F,EAAI,IAAI,IAC9BA,EAAI,SAAW,IAGbvF,EAAK,MAAQA,EAAK,UAAW,CAQ/B,QAPIkU,EAAc3O,EAAI,KAAK,MAAM,GAAG,EAChC4O,EAAc,SAASD,EAAY,CAAC,EAAG,EAAE,EACzCtH,EAAcsH,EAAY,CAAC,EAE3BhH,EAAQD,GAAW9B,EAAS,QAAQ,EACpC6B,EAAO,KAEFrP,EAAI,EAAGA,EAAIuP,EAAM,OAAQvP,IAAK,CACrC,IAAIyW,EAAclH,EAAMvP,CAAC,EACzB,IAAM0W,EAAYD,EAAY,IAAI,UAAUxU,GAAKA,EAAE,KAAOgN,CAAO,EACjE,IAAI0H,EAAoBD,IAAeF,EAAQ,GAE3CG,GAAsB,CAACtH,GAAQqH,IAAc,MAC/CrH,EAAOoH,EAEX,CAGA,GAAI,CAACpH,EACH,OAAAtO,EAAM,IAAI,MAAM,kBAAkB,EAClCA,EAAI,MAAQmC,EACL0R,EAAG7T,CAAG,EAGf,IAAM6V,EAAShP,EAAI,KAAK,MAAM,GAAG,EAAE,CAAC,EAC9BiP,GAAaxH,EAAK,IAAI,UAAUpN,GAAKA,EAAE,KAAO2U,CAAM,EAAI,EAC9D,IAAIE,EAAUzH,EAAK,IAAI,OAASwH,GAYhC,GAXAxH,EAAK,IAAI,OAAOwH,GAAYC,CAAO,EACnCzH,EAAK,IAAI,QAAQ,EAEbhN,EAAK,OACPuF,EAAI,WAAa,CACf,MAAQyH,EAAK,IAAMA,EAAK,IAAI,OAAU,EACtC,IAAKA,EAAK,IAAI,IAAI,SAAU2E,EAAQ,CAClC,OAAOA,EAAO,EAChB,CAAC,CACH,GAEE3R,EAAK,UAAW,CAClB,IAAI2L,EAAOqB,EAAK,IAAMA,EAAK,IAAI,OAC/BzH,EAAI,WAAayH,EAAK,IAAI,IAAI,SAAU2E,EAAQ,CAC9C,OAAAhG,IACO,CACL,IAAKA,EAAM,IAAMgG,EAAO,GACxB,OAAQA,EAAO,KAAK,MACtB,CACF,CAAC,CACH,CACF,CAEA,GAAI3R,EAAK,aAAeuF,EAAI,aAAc,CACxC,IAAImP,EAAcnP,EAAI,aAClB8N,EAAQ,OAAO,KAAKqB,CAAW,EAAE,OACrC,GAAIrB,IAAU,EACZ,OAAOd,EAAG,KAAMhN,CAAG,EAErB,OAAO,KAAKmP,CAAW,EAAE,QAAS1T,GAAQ,CACxC,KAAK,eAAeuE,EAAI,IAAKvE,EAAK0T,EAAY1T,CAAG,EAAG,CAClD,OAAQhB,EAAK,OACb,SAAAmL,EACA,IAAA0B,CACF,EAAG,SAAUnO,GAAK0G,EAAM,CACtB,IAAIU,EAAMP,EAAI,aAAavE,CAAG,EAC9B8E,EAAI,KAAOV,EACX,OAAOU,EAAI,KACX,OAAOA,EAAI,OACN,EAAEuN,GACLd,EAAG,KAAMhN,CAAG,CAEhB,CAAC,CACH,CAAC,CACH,KAAO,CACL,GAAIA,EAAI,aACN,QAASvE,KAAOuE,EAAI,aAEd,OAAO,UAAU,eAAe,KAAKA,EAAI,aAAcvE,CAAG,IAC5DuE,EAAI,aAAavE,CAAG,EAAE,KAAO,IAInCuR,EAAG,KAAMhN,CAAG,CACd,CACF,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAKZ,KAAK,cAAgBnG,GAAW,gBAAiB,SAAUkC,EAAOwR,EAAc9S,EAAMvB,EAAU,CAC1FuB,aAAgB,WAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEV,KAAK,KAAKsB,EAAOtB,EAAM,CAACtB,EAAKQ,IAAQ,CACnC,GAAIR,EACF,OAAOD,EAASC,CAAG,EAErB,GAAIQ,EAAI,IAAI,cAAgBA,EAAI,IAAI,aAAa4T,CAAY,EAC3D9S,EAAK,IAAMd,EAAI,IACfc,EAAK,OAAS,GACdA,EAAK,SAAWd,EAAI,SACpB,KAAK,eAAeoC,EAAOwR,EACP5T,EAAI,IAAI,aAAa4T,CAAY,EAAG9S,EAAMvB,CAAQ,MAEtE,QAAOA,EAASuG,GAAYtB,EAAW,CAAC,CAE5C,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,QAAUtE,GAAW,UAAW,SAAUY,EAAMvB,EAAU,CAY7D,GAXI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEVA,EAAK,KAAO,OAAOA,EAAK,KAAS,IAAcA,EAAK,KAAO,EACvDA,EAAK,YACPA,EAAK,SAAWA,EAAK,WAEnBA,EAAK,UACPA,EAAK,OAASA,EAAK,SAEjB,SAAUA,EAAM,CAClB,GAAI,CAAC,MAAM,QAAQA,EAAK,IAAI,EAC1B,OAAOvB,EAAS,IAAI,UAAU,+BAA+B,CAAC,EAEhE,IAAIkW,EACF,CAAC,WAAY,SAAU,KAAK,EAAE,OAAO,SAAUA,EAAiB,CAChE,OAAOA,KAAmB3U,CAC5B,CAAC,EAAE,CAAC,EACJ,GAAI2U,EAAiB,CACnBlW,EAASuG,GAAYb,GACnB,oBAAsBwQ,EACtB,oCACF,CAAC,EACD,MACF,CACA,GAAI,CAAC3O,GAAS,IAAI,IAChB6L,GAAiB7R,CAAI,EACjBA,EAAK,KAAK,SAAW,GACvB,OAAO,KAAK,SAAS,CAAC,MAAO,CAAC,EAAGvB,CAAQ,CAG/C,CAEA,OAAO,KAAK,SAASuB,EAAMvB,CAAQ,CACrC,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,MAAQW,GAAW,QAAS,SAAUX,EAAU,CACnD,YAAK,QAAU,GACf,KAAK,KAAK,QAAQ,EACX,KAAK,OAAOA,CAAQ,CAC7B,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,KAAOW,GAAW,OAAQ,SAAUX,EAAU,CACjD,KAAK,MAAM,CAACC,EAAK+B,IAAS,CACxB,GAAI/B,EACF,OAAOD,EAASC,CAAG,EAGrB+B,EAAK,QAAUA,EAAK,SAAW,KAAK,KACpCA,EAAK,gBAAkB,CAAC,EAAE,KAAK,iBAAmB,CAACuF,GAAS,IAAI,GAChEvF,EAAK,QAAU,KAAK,QACpBhC,EAAS,KAAMgC,CAAI,CACrB,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,GAAKrB,GAAW,KAAM,SAAUX,EAAU,CAC7C,OAAO,KAAK,IAAIA,CAAQ,CAC1B,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,SAAWW,GAAW,WAAY,SAAUoG,EAAKxF,EAAMvB,EAAU,CAcpE,GAbI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAGVA,EAAOA,GAAQ,CAAC,EAEZ,MAAM,QAAQwF,CAAG,IACnBA,EAAM,CACJ,KAAMA,CACR,GAGE,CAACA,GAAO,CAACA,EAAI,MAAQ,CAAC,MAAM,QAAQA,EAAI,IAAI,EAC9C,OAAO/G,EAASuG,GAAYvB,EAAiB,CAAC,EAGhD,QAAS,EAAI,EAAG,EAAI+B,EAAI,KAAK,OAAQ,EAAE,EAAG,CACxC,IAAMD,EAAMC,EAAI,KAAK,CAAC,EACtB,GAAI2M,GAAe5M,CAAG,EACpB,OAAO9G,EAASuG,GAAYV,EAAa,CAAC,EAE5C,GAAI,SAAUiB,GAAO,CAAC8M,GAAW9M,EAAI,IAAI,EACvC,OAAO9G,EAASuG,GAAYJ,EAAW,CAAC,CAE5C,CAEA,IAAIgQ,EAYJ,GAXApP,EAAI,KAAK,QAAQ,SAAUD,EAAK,CAC1BA,EAAI,cACN,OAAO,KAAKA,EAAI,YAAY,EAAE,QAAQ,SAAUxG,EAAM,CACpD6V,EAAkBA,GAAmB1C,GAAoBnT,CAAI,EACxDwG,EAAI,aAAaxG,CAAI,EAAE,cAC1B0D,GAAe,OAAQ,aAAc1D,EAAM,cAAewG,EAAI,IAAK,yBAAyB,CAEhG,CAAC,CAEL,CAAC,EAEGqP,EACF,OAAOnW,EAASuG,GAAYX,GAAauQ,CAAe,CAAC,EAGrD,cAAe5U,IACf,cAAewF,EACjBxF,EAAK,UAAYwF,EAAI,UAErBxF,EAAK,UAAY,IAIrB,IAAI6U,EAAU,KACV,CAAC7U,EAAK,WAAa,CAACgG,GAAS6O,CAAO,GAGtCrP,EAAI,KAAK,KAAK4L,EAAkB,EAGlCF,GAAU1L,EAAI,IAAI,EAKlB,IAAI4N,EAAM5N,EAAI,KAAK,IAAI,SAAUD,EAAK,CACpC,OAAOA,EAAI,GACb,CAAC,EAED,KAAK,UAAUC,EAAKxF,EAAM,SAAUtB,EAAKQ,EAAK,CAC5C,GAAIR,EACF,OAAOD,EAASC,CAAG,EASrB,GAPKsB,EAAK,YAERd,EAAMA,EAAI,OAAO,SAAUU,EAAG,CAC5B,OAAOA,EAAE,KACX,CAAC,GAGC,CAACoG,GAAS6O,CAAO,EACnB,QAASlX,EAAI,EAAG0S,EAAInR,EAAI,OAAQvB,EAAI0S,EAAG1S,IACrCuB,EAAIvB,CAAC,EAAE,GAAKuB,EAAIvB,CAAC,EAAE,IAAMyV,EAAIzV,CAAC,EAIlCc,EAAS,KAAMS,CAAG,CACpB,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,0BAA4BE,GAAW,4BAA6B,SAAU0V,EAAarW,EAAU,CACxG,IAAIsW,EAAYtX,GAAM,KAAK,MAAM,EAC7B,KAAK,OAAO,eACdsX,EAAU,QAAU,KAAK,OAAO,cAGlC,IAAIC,EAAQ,IAAI,KAAK,YAAYF,EAAaC,CAAS,EAEvD,SAAStN,EAAQlC,EAAK,CAEpB,OADAA,EAAI,aAAeA,EAAI,cAAgB,CAAC,EACpCA,EAAI,aAAauP,CAAW,EACvB,IAETvP,EAAI,aAAauP,CAAW,EAAI,GACzBvP,EACT,CACAiC,GAAO,KAAM,6BAA8BC,CAAO,EAAE,KAAK,UAAY,CACnEhJ,EAAS,KAAM,CAAC,GAAIuW,CAAK,CAAC,CAC5B,CAAC,EAAE,MAAMvW,CAAQ,CACnB,CAAC,EAAE,KAAK,IAAI,EAEZ,KAAK,QAAUW,GAAW,UAAW,SAAUY,EAAMvB,EAAU,CAEzD,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAGV,IAAIiV,EAAY,eAAgB,KAAO,KAAK,WAAa,GAEzD,IAAMC,EAAY,IAAM,CAEtB,KAAK,SAASlV,EAAM,CAACtB,EAAKF,IAAS,CACjC,GAAIE,EACF,OAAOD,EAASC,CAAG,EAErB,KAAK,WAAa,GAClB,KAAK,KAAK,WAAW,EACrBD,EAAS,KAAMD,GAAQ,CAAE,GAAM,EAAK,CAAC,CACvC,CAAC,CACH,EAEA,GAAIwH,GAAS,IAAI,EAEf,OAAOkP,EAAU,EAGnB,KAAK,IAAI,6BAA8B,CAACxW,EAAKyW,IAAa,CACxD,GAAIzW,EAEF,OAAIA,EAAI,SAAW,IACVD,EAASC,CAAG,EAEZwW,EAAU,EAGrB,IAAIE,EAAeD,EAAS,aACxBrE,EAAU,KAAK,YACfuE,EAAa,OAAO,KAAKD,CAAY,EAAE,IAAKrW,GAAS,CAGvD,IAAIuW,EAAWL,EACblW,EAAK,QAAQ,IAAI,OAAO,IAAM+R,EAAQ,MAAM,EAAG,EAAE,EAAI/R,EACvD,OAAO,IAAI+R,EAAQwE,EAAU,KAAK,MAAM,EAAE,QAAQ,CACpD,CAAC,EACD,QAAQ,IAAID,CAAU,EAAE,KAAKH,EAAWzW,CAAQ,CAClD,CAAC,CACH,CAAC,EAAE,KAAK,IAAI,CACd,CAEA,SAASuB,EAAMvB,EAAU,CACvB,IAAI6D,EAAc,CAChB,YAAa,GACb,SAAUtC,EAAK,UAAY,EAC3B,MAAOA,EAAK,UAAY,CAC1B,EACIuV,EAAW,CAAC,EAEZC,EACAC,EAAgB,EAEpB,IAAMC,EAAYC,GAAQ,CACxB,KAAK,YAAY,OAAOH,EAAQ,CAC9B,gBAAiB,EAAEC,CACrB,CAAC,EACDF,EAAS,KAAK,KAAK,gBAAgBI,EAAI,GAAI,CAAC,CAAC,CAC/C,EACMpT,EAAW7D,GAAQ,CACvB,KAAK,YAAY,OAAO8W,EAAQ9W,CAAG,EACnCD,EAASC,CAAG,CACd,EACMkX,EAAcpX,GAAS,CAC3B,IAAIgS,EAAUhS,EAAK,SACnB,QAAQ,IAAI+W,CAAQ,EAAE,KAAK,IAClB/N,GAAO,KAAM,oBAAsBjC,GACpC,CAACA,EAAI,UAAYA,EAAI,SAAWiL,GAClCjL,EAAI,SAAWiL,EACRjL,GAEF,EACR,CACF,EAAE,KAAK,IAAM,CACZ,KAAK,YAAY,OAAOiQ,CAAM,EAC9B/W,EAAS,KAAM,CAAC,GAAI,EAAI,CAAC,CAC3B,CAAC,EAAE,MAAM8D,CAAO,CAClB,EAEA,KAAK,KAAK,EAAE,KAAM9B,GAAS,CACzB+U,EAAS,KAAK,YAAY,IAAI,CAC5B,KAAM,sBACN,YAAa/U,EAAK,WAAa6B,EAAY,QAC7C,CAAC,EAED,KAAK,QAAQA,CAAW,EACrB,GAAG,SAAUoT,CAAQ,EACrB,GAAG,WAAYE,CAAU,EACzB,GAAG,QAASrT,CAAO,CACxB,CAAC,CACH,CAEA,QAAQvC,EAAMvB,EAAU,CACtB,OAAI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAGVA,EAAOA,GAAQ,CAAC,EAKhBA,EAAK,YAAe,gBAAiBA,EAAQA,EAAK,YAAc,CAACA,EAAK,KAE/D,IAAI2Q,GAAU,KAAM3Q,EAAMvB,CAAQ,CAC3C,CAEA,MAAO,CACL,OAAQ,OAAO,KAAK,OAAU,WAAc,KAAK,MAAM,EAAI,KAAK,OAClE,CACF,EAIA6T,GAAgB,UAAU,MAAQlT,GAAW,SAAU,SAAUkC,EAAOqQ,EAAQlT,EAAU,CACxF,GAAI,OAAO,KAAK,OAAW,IACzB,OAAOA,EAASuG,GAAYhB,GAAe,mCAAqC,KAAK,QAAU,WAAW,CAAC,EAE7G,IAAI7F,EAAO,KAEXA,EAAK,iBAAiBmD,EAAO,CAACgC,EAAOwI,IAAS,CAC5C,GAAIxI,EACF,OAAO7E,EAAS6E,CAAK,EAEvB,GAAI,CAACwI,EACH,OAAOrN,EAASuG,GAAYtB,EAAW,CAAC,EAE1C,IAAIsJ,EACJ,GAAI,CACFA,EAAOF,GAAehB,EAAM6F,CAAM,CACpC,OAASrO,EAAO,CACd,OAAO7E,EAAS6E,EAAM,SAAWA,CAAK,CACxC,CACAnF,EAAK,OAAOmD,EAAO0L,EAAM,CAAC1J,EAAOzE,IAAW,CAC1C,GAAIyE,EACF,OAAO7E,EAAS6E,CAAK,EAErB0O,GAAe7T,EAAMmD,EAAOqQ,CAAM,EAAE,KAAK,UAAY,CACnD,OAAOlT,EAAS,KAAMI,CAAM,CAC9B,CAAC,CAEL,CAAC,CACH,CAAC,CACH,CAAC,EAED,IAAMgX,GAAN,KAAgB,CACd,aAAc,CACZ,KAAK,QAAU,GACf,KAAK,OAAS,GACd,KAAK,MAAQ,CAAC,CAChB,CAEA,SAAU,CACR,IAAI/X,EACJ,GAAI,KAAK,OACP,KAAQA,EAAM,KAAK,MAAM,MAAM,GAC7BA,EAAI,KAAK,MAAM,MAGjB,MAAQA,EAAM,KAAK,MAAM,MAAM,GAC7BA,EAAI,CAGV,CAEA,KAAKY,EAAK,CACR,KAAK,OAASA,EACd,KAAK,QAAQ,CACf,CAEA,MAAMqB,EAAI,CACR,KAAK,QAAU,GACf,KAAK,GAAKA,EACV,KAAK,QAAQ,CACf,CAEA,QAAQjC,EAAK,CACX,KAAK,MAAM,KAAKA,CAAG,EACf,KAAK,QACP,KAAK,QAAQ,CAEjB,CACF,EAEA,SAASgY,GAAa/W,EAAMiB,EAAM,CAChC,IAAI+V,EAAQhX,EAAK,MAAM,oBAAoB,EAC3C,GAAIgX,EAEF,MAAO,CACL,KAAM,SAAS,KAAKA,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAAI,MAAQA,EAAM,CAAC,EAAIA,EAAM,CAAC,EACrE,QAASA,EAAM,CAAC,CAClB,EAGF,IAAIC,EAAWlF,GAAQ,SACnBmF,EAAoBnF,GAAQ,kBAC5BoF,EAASpF,GAAQ,OACjBqF,EAAcnW,EAAK,QAEvB,GAAI,CAACmW,EACH,QAASxY,EAAI,EAAGA,EAAIsY,EAAkB,OAAQ,EAAEtY,EAAG,CAIjD,GAHAwY,EAAcF,EAAkBtY,CAAC,EAG7BwY,IAAgB,OAAS,WAAYH,GACrClU,GAAgB,GAAK,aAAa,oBAAsBoU,EAASnX,CAAI,EAAG,CAE1E0D,GAAe,MAAO,2BAA6B1D,EAAO,4EACM,EAChE,QACF,CACA,KACF,CAGF,IAAI8V,EAAUmB,EAASG,CAAW,EAG9BlB,EAAaJ,GAAW,eAAgBA,EAC1CA,EAAQ,WAAa,GAEvB,MAAO,CACL,KAAMI,EAAaiB,EAASnX,EAAQA,EACpC,QAASoX,CACX,CACF,CAEA,SAASC,GAASC,EAAGC,EAAG,CACtBD,EAAE,UAAY,OAAO,OAAOC,EAAE,UAAW,CACvC,YAAa,CAAE,MAAOD,CAAE,CAC1B,CAAC,CACH,CAEA,SAASE,GAAYC,EAAQC,EAAM,CACjC,IAAIC,EAAQ,YAAa1Y,EAAM,CAC7B,GAAI,EAAE,gBAAgB0Y,GACpB,OAAO,IAAIA,EAAM,GAAG1Y,CAAI,EAE1ByY,EAAK,MAAM,KAAMzY,CAAI,CACvB,EACA,OAAAoY,GAASM,EAAOF,CAAM,EACfE,CACT,CAYA,SAASC,GAAsBxY,EAAM,CAEnC,SAASyY,EAAYC,EAAkB,CACrC1Y,EAAK,eAAe,SAAU2Y,CAAQ,EACjCD,GACH1Y,EAAK,YAAY,KAAK,YAAaA,EAAK,IAAI,CAEhD,CAEA,SAAS2Y,GAAW,CAClB3Y,EAAK,eAAe,YAAayY,CAAW,EAC5CzY,EAAK,YAAY,KAAK,QAASA,CAAI,CACrC,CAEAA,EAAK,KAAK,YAAayY,CAAW,EAClCzY,EAAK,KAAK,SAAU2Y,CAAQ,EAC5B3Y,EAAK,YAAY,KAAK,MAAOA,CAAI,CACnC,CAEA,IAAM4Y,GAAN,cAA4BzE,EAAgB,CAC1C,YAAYvT,EAAMiB,EAAM,CACtB,MAAM,EACN,KAAK,OAAOjB,EAAMiB,CAAI,CACxB,CAEA,OAAOjB,EAAMiB,EAAM,CAoBjB,GAnBA,MAAM,OAAO,EACbA,EAAOA,GAAQ,CAAC,EAEZjB,GAAQ,OAAOA,GAAS,WAC1BiB,EAAOjB,EACPA,EAAOiB,EAAK,KACZ,OAAOA,EAAK,MAGVA,EAAK,qBAAuB,SAC9BA,EAAK,mBAAqB,IAG5B,KAAK,OAASA,EAAOvC,GAAMuC,CAAI,EAE/B,KAAK,gBAAkBA,EAAK,gBAC5B,KAAK,mBAAqBA,EAAK,oBAAsB,IACrD,KAAK,OAAS8Q,GAAQ,OAElB,OAAO/R,GAAS,SAClB,MAAM,IAAI,MAAM,yBAAyB,EAG3C,IAAIiY,GAAgBhX,EAAK,QAAU,IAAMjB,EACrCkY,EAAUnB,GAAakB,EAAchX,CAAI,EAS7C,GAPAA,EAAK,KAAOiX,EAAQ,KACpBjX,EAAK,QAAUA,EAAK,SAAWiX,EAAQ,QAEvC,KAAK,KAAOlY,EACZ,KAAK,SAAWiB,EAAK,QACrB8Q,GAAQ,KAAK,QAAS,CAAC,UAAW,mBAAoB9Q,EAAK,OAAO,CAAC,EAE/D,CAAC8Q,GAAQ,SAAS9Q,EAAK,OAAO,GAC9B,CAAC8Q,GAAQ,SAAS9Q,EAAK,OAAO,EAAE,MAAM,EACxC,MAAM,IAAI,MAAM,oBAAsBA,EAAK,OAAO,EAGpD,GAAIA,EAAK,eACH,CAAC8Q,GAAQ,SAAS9Q,EAAK,YAAY,GACnC,CAAC8Q,GAAQ,SAAS9Q,EAAK,YAAY,EAAE,MAAM,GAC7C,MAAM,IAAI,MAAM,yBAA2BA,EAAK,YAAY,EAIhE,KAAK,UAAY,IAAI6V,GAErB,KAAK,QAAU7V,EAAK,QAEpB8Q,GAAQ,SAAS9Q,EAAK,OAAO,EAAE,KAAK,KAAMA,EAAOtB,GAAQ,CACvD,GAAIA,EACF,OAAO,KAAK,UAAU,KAAKA,CAAG,EAEhCiY,GAAsB,IAAI,EAE1B,KAAK,KAAK,UAAW,IAAI,EACzB7F,GAAQ,KAAK,UAAW,KAAK,IAAI,EACjC,KAAK,UAAU,MAAM,IAAI,CAC3B,CAAC,CACH,CACF,EAEMA,GAAUyF,GAAYQ,GAAe,SAAUhY,EAAMiB,EAAM,CAC/D+W,GAAc,UAAU,OAAO,KAAK,KAAMhY,EAAMiB,CAAI,CACtD,CAAC,EAEGkX,GAAM,MACNC,GAAI,QAEFC,GAAN,KAAkB,CAChB,aAAc,CACZ,KAAK,MAAQ,CAAC,CAChB,CAEA,MAAO,CACL,OAAO,OAAO,OAAO,KAAK,KAAK,CACjC,CAEA,IAAIrF,EAAM,CACR,IAAMlR,EAAKkK,GAAG,EACd,YAAK,MAAMlK,CAAE,EAAI,CACf,GAAAA,EACA,KAAMkR,EAAK,KACX,YAAaA,EAAK,YAClB,WAAY,IAAI,KAAK,EAAE,OAAO,CAChC,EACOlR,CACT,CAEA,IAAIA,EAAI,CACN,OAAO,KAAK,MAAMA,CAAE,CACtB,CAGA,OAAOA,EAAI0C,EAAQ,CACjB,cAAO,KAAK,MAAM1C,CAAE,EACb,KAAK,KACd,CAEA,OAAOA,EAAIwW,EAAa,CACtB,IAAMtF,EAAO,KAAK,MAAMlR,CAAE,EAC1B,GAAI,OAAOkR,EAAS,IAAa,CAC/B,IAAMuF,EAAa,CACjB,GAAIvF,EAAK,GACT,KAAMA,EAAK,KACX,WAAYA,EAAK,WACjB,YAAasF,EAAY,aAAetF,EAAK,YAC7C,gBAAiBsF,EAAY,iBAAmBtF,EAAK,gBACrD,WAAY,IAAI,KAAK,EAAE,OAAO,CAChC,EACA,KAAK,MAAMlR,CAAE,EAAIyW,CACnB,CACA,OAAO,KAAK,KACd,CACF,EAEAxG,GAAQ,SAAW,CAAC,EACpBA,GAAQ,kBAAoB,CAAC,EAE7BA,GAAQ,OAAS,UAEjB,IAAIyG,GAAe,IAAIrV,GAEvB,SAASsV,GAAkBC,EAAO,CAChC,OAAO,KAAKvV,GAAG,SAAS,EAAE,QAAQ,SAAUlB,EAAK,CAC3C,OAAOkB,GAAG,UAAUlB,CAAG,GAAM,aAC/ByW,EAAMzW,CAAG,EAAIuW,GAAavW,CAAG,EAAE,KAAKuW,EAAY,EAEpD,CAAC,EAID,IAAIG,EAAoBD,EAAM,sBAAwB,IAAI,IAE1DA,EAAM,GAAG,MAAO,SAA0B1X,EAAI,CACvC2X,EAAkB,IAAI3X,EAAG,IAAI,GAChC2X,EAAkB,IAAI3X,EAAG,KAAM,CAAC,CAAC,EAEnC2X,EAAkB,IAAI3X,EAAG,IAAI,EAAE,KAAKA,CAAE,CACxC,CAAC,EAED0X,EAAM,GAAG,QAAS,SAA4B1X,EAAI,CAChD,GAAK2X,EAAkB,IAAI3X,EAAG,IAAI,EAGlC,KAAI4X,EAASD,EAAkB,IAAI3X,EAAG,IAAI,EACtC4L,EAAMgM,EAAO,QAAQ5X,CAAE,EACvB4L,EAAM,IAIVgM,EAAO,OAAOhM,EAAK,CAAC,EAChBgM,EAAO,OAAS,EAElBD,EAAkB,IAAI3X,EAAG,KAAM4X,CAAM,EAErCD,EAAkB,OAAO3X,EAAG,IAAI,GAEpC,CAAC,EAED0X,EAAM,GAAG,YAAa,SAAgC1Y,EAAM,CAC1D,GAAK2Y,EAAkB,IAAI3Y,CAAI,EAG/B,KAAI4Y,EAASD,EAAkB,IAAI3Y,CAAI,EACvC2Y,EAAkB,OAAO3Y,CAAI,EAC7B4Y,EAAO,QAAQ,SAAU5X,EAAI,CAC3BA,EAAG,KAAK,YAAY,EAAI,CAC1B,CAAC,EACH,CAAC,CACH,CAEAyX,GAAkB1G,EAAO,EAEzBA,GAAQ,QAAU,SAAUjQ,EAAItB,EAAKqY,EAAwB,CAEvDrY,EAAI,MAAM,IACZuR,GAAQ,SAASjQ,CAAE,EAAItB,EACnBqY,GACF9G,GAAQ,kBAAkB,KAAKjQ,CAAE,EAGvC,EAEAiQ,GAAQ,OAAS,SAAUvR,EAAK,CAC9B,GAAI,OAAOA,GAAQ,WACjBA,EAAIuR,EAAO,MACN,IAAI,OAAOvR,GAAQ,UAAY,OAAO,KAAKA,CAAG,EAAE,SAAW,EAChE,MAAM,IAAI,MAAM,wBAA0BA,EAAM,qCAAqC,EAErF,OAAO,KAAKA,CAAG,EAAE,QAAQ,SAAUsB,EAAI,CACrCiQ,GAAQ,UAAUjQ,CAAE,EAAItB,EAAIsB,CAAE,CAChC,CAAC,EAEH,OAAI,KAAK,aACPiQ,GAAQ,WAAa,OAAO,OAAO,CAAC,EAAG,KAAK,UAAU,GAEjDA,EACT,EAEAA,GAAQ,SAAW,SAAU+G,EAAa,CACxC,IAAIC,EAAoBvB,GAAYzF,GAAS,SAAU/R,EAAMiB,EAAM,CACjEA,EAAOA,GAAQ,CAAC,EAEZjB,GAAQ,OAAOA,GAAS,WAC1BiB,EAAOjB,EACPA,EAAOiB,EAAK,KACZ,OAAOA,EAAK,MAGdA,EAAO,OAAO,OAAO,CAAC,EAAG8X,EAAkB,WAAY9X,CAAI,EAC3D8Q,GAAQ,KAAK,KAAM/R,EAAMiB,CAAI,CAC/B,CAAC,EAED,OAAA8X,EAAkB,kBAAoBhH,GAAQ,kBAAkB,MAAM,EACtE,OAAO,KAAKA,EAAO,EAAE,QAAQ,SAAU9P,EAAK,CACpCA,KAAO8W,IACXA,EAAkB9W,CAAG,EAAI8P,GAAQ9P,CAAG,EAExC,CAAC,EAID8W,EAAkB,WAAa,OAAO,OAAO,CAAC,EAAG,KAAK,WAAYD,CAAW,EAEtEC,CACT,EAEAhH,GAAQ,MAAQ,SAAUiH,EAAK/X,EAAM,CACnC,OAAOkX,GAAIa,EAAK/X,CAAI,CACtB,EAEA8Q,GAAQ,UAAU,YAAcA,GAAQ,YAAc,IAAIsG,GAG1D,IAAIY,GAAU,QAId,SAASC,GAAgB1S,EAAK2S,EAAa,CAEzC,QADI5a,EAAQiI,EACH5H,EAAI,EAAGC,EAAMsa,EAAY,OAAQva,EAAIC,EAAKD,IAAK,CACtD,IAAIqD,EAAMkX,EAAYva,CAAC,EAEvB,GADAL,EAAQA,EAAM0D,CAAG,EACb,CAAC1D,EACH,KAEJ,CACA,OAAOA,CACT,CAEA,SAAS6a,GAAQC,EAAMC,EAAO,CAC5B,OAAOD,EAAOC,EAAQ,GAAKD,EAAOC,EAAQ,EAAI,CAChD,CAGA,SAASC,GAAWC,EAAW,CAI7B,QAFIC,EAAS,CAAC,EACVC,EAAU,GACL9a,EAAI,EAAGC,EAAM2a,EAAU,OAAQ5a,EAAIC,EAAKD,IAAK,CACpD,IAAI+a,EAAKH,EAAU5a,CAAC,EAChBA,EAAI,GAAK4a,EAAU5a,EAAI,CAAC,IAAM,OAAS+a,IAAO,KAAOA,IAAO,KAE9DD,EAAUA,EAAQ,UAAU,EAAGA,EAAQ,OAAS,CAAC,EAAIC,EAC5CA,IAAO,KAEhBF,EAAO,KAAKC,CAAO,EACnBA,EAAU,IAEVA,GAAWC,CAEf,CACA,OAAAF,EAAO,KAAKC,CAAO,EACZD,CACT,CAEA,IAAIG,GAAoB,CAAC,MAAO,OAAQ,MAAM,EAC9C,SAASC,GAAqBC,EAAO,CACnC,OAAOF,GAAkB,QAAQE,CAAK,EAAI,EAC5C,CAEA,SAASC,GAAOvZ,EAAK,CACnB,OAAO,OAAO,KAAKA,CAAG,EAAE,CAAC,CAC3B,CAEA,SAASwZ,GAASxZ,EAAK,CACrB,OAAOA,EAAIuZ,GAAOvZ,CAAG,CAAC,CACxB,CAIA,SAASyZ,GAAoBC,EAAW,CAKtC,IAAI/Z,EAAM,CAAC,EACPga,EAAQ,CAAC,IAAK,GAAM,KAAM,EAAI,EAElC,OAAAD,EAAU,QAAQ,SAAUE,EAAU,CACpC,OAAO,KAAKA,CAAQ,EAAE,QAAQ,SAAUN,EAAO,CAC7C,IAAIO,EAAUD,EAASN,CAAK,EAK5B,GAJI,OAAOO,GAAY,WACrBA,EAAU,CAAC,IAAKA,CAAO,GAGrBR,GAAqBC,CAAK,EAE5B,GAAIO,aAAmB,MAAO,CAC5B,GAAIF,EAAML,CAAK,EAAG,CAChBK,EAAML,CAAK,EAAI,GACf3Z,EAAI2Z,CAAK,EAAIO,EACb,MACF,CAEA,IAAIC,EAAU,CAAC,EACfna,EAAI2Z,CAAK,EAAE,QAAQ,SAAU5E,EAAU,CACrC,OAAO,KAAKmF,CAAO,EAAE,QAAQ,SAAUpY,EAAK,CAC1C,IAAI,EAAIoY,EAAQpY,CAAG,EACfsY,EAAU,KAAK,IAAI,OAAO,KAAKrF,CAAQ,EAAE,OAAQ,OAAO,KAAK,CAAC,EAAE,MAAM,EACtEzF,EAASwK,GAAoB,CAAC/E,EAAU,CAAC,CAAC,EAC1C,OAAO,KAAKzF,CAAM,EAAE,QAAU8K,GAMlCD,EAAQ,KAAK7K,CAAM,CACrB,CAAC,CACH,CAAC,EACDtP,EAAI2Z,CAAK,EAAIQ,CACf,MAEEna,EAAI2Z,CAAK,EAAIG,GAAoB,CAACI,CAAO,CAAC,MAEvC,CACL,IAAIG,EAAgBra,EAAI2Z,CAAK,EAAI3Z,EAAI2Z,CAAK,GAAK,CAAC,EAChD,OAAO,KAAKO,CAAO,EAAE,QAAQ,SAAUI,EAAU,CAC/C,IAAIlc,EAAQ8b,EAAQI,CAAQ,EAE5B,GAAIA,IAAa,OAASA,IAAa,OACrC,OAAOC,GAAWD,EAAUlc,EAAOic,CAAa,EAC3C,GAAIC,IAAa,OAASA,IAAa,OAC5C,OAAOE,GAAWF,EAAUlc,EAAOic,CAAa,EAC3C,GAAIC,IAAa,MACtB,OAAOG,GAAQrc,EAAOic,CAAa,EAC9B,GAAIC,IAAa,MACtB,OAAOI,GAAQtc,EAAOic,CAAa,EAC9B,GAAIC,IAAa,SACtB,OAAOK,GAAWvc,EAAOic,CAAa,EAExCA,EAAcC,CAAQ,EAAIlc,CAC5B,CAAC,CACH,CACF,CAAC,CACH,CAAC,EAEM4B,CACT,CAKA,SAASua,GAAWD,EAAUlc,EAAOic,EAAe,CAC9C,OAAOA,EAAc,IAAQ,MAG7B,OAAOA,EAAc,KAAS,IAC5BC,IAAa,OACXlc,EAAQic,EAAc,OACxBA,EAAc,KAAOjc,GAGnBA,GAASic,EAAc,OACzB,OAAOA,EAAc,KACrBA,EAAc,IAAMjc,GAGf,OAAOic,EAAc,IAAQ,IAClCC,IAAa,OACXlc,EAAQic,EAAc,MACxB,OAAOA,EAAc,IACrBA,EAAc,KAAOjc,GAGnBA,EAAQic,EAAc,MACxBA,EAAc,IAAMjc,GAIxBic,EAAcC,CAAQ,EAAIlc,EAE9B,CAGA,SAASoc,GAAWF,EAAUlc,EAAOic,EAAe,CAC9C,OAAOA,EAAc,IAAQ,MAG7B,OAAOA,EAAc,KAAS,IAC5BC,IAAa,OACXlc,EAAQic,EAAc,OACxBA,EAAc,KAAOjc,GAGnBA,GAASic,EAAc,OACzB,OAAOA,EAAc,KACrBA,EAAc,IAAMjc,GAGf,OAAOic,EAAc,IAAQ,IAClCC,IAAa,OACXlc,EAAQic,EAAc,MACxB,OAAOA,EAAc,IACrBA,EAAc,KAAOjc,GAGnBA,EAAQic,EAAc,MACxBA,EAAc,IAAMjc,GAIxBic,EAAcC,CAAQ,EAAIlc,EAE9B,CAGA,SAASqc,GAAQrc,EAAOic,EAAe,CACjC,QAASA,EAEXA,EAAc,IAAI,KAAKjc,CAAK,EAE5Bic,EAAc,IAAM,CAACjc,CAAK,CAE9B,CAGA,SAASsc,GAAQtc,EAAOic,EAAe,CAGrC,OAAOA,EAAc,IACrB,OAAOA,EAAc,KACrB,OAAOA,EAAc,IACrB,OAAOA,EAAc,KACrB,OAAOA,EAAc,IACrBA,EAAc,IAAMjc,CACtB,CAGA,SAASuc,GAAWvc,EAAOic,EAAe,CACpC,WAAYA,EAEdA,EAAc,OAAO,KAAKjc,CAAK,EAE/Bic,EAAc,OAAS,CAACjc,CAAK,CAEjC,CAGA,SAASwc,GAA0Bva,EAAK,CACpC,QAASE,KAAQF,EAAK,CAClB,GAAI,MAAM,QAAQA,CAAG,EACjB,QAAS5B,KAAK4B,EACNA,EAAI5B,CAAC,EAAE,OACP4B,EAAI5B,CAAC,EAAIqb,GAAoBzZ,EAAI5B,CAAC,EAAE,IAAO,GAIvD,IAAIL,EAAQiC,EAAIE,CAAI,EAChB,OAAOnC,GAAU,UACjBwc,GAA0Bxc,CAAK,CAEvC,CACA,OAAOiC,CACX,CAGA,SAASwa,GAAgBxa,EAAKya,EAAO,CACjC,QAASva,KAAQF,EAAK,CACdE,IAAS,SACTua,EAAQ,IAEZ,IAAI1c,EAAQiC,EAAIE,CAAI,EAChB,OAAOnC,GAAU,WACjB0c,EAAQD,GAAgBzc,EAAO0c,CAAK,EAE5C,CACA,OAAOA,CACX,CAKA,SAASC,GAAgBC,EAAO,CAC9B,IAAIrb,EAASpB,GAAMyc,CAAK,EAGpBH,GAAgBlb,EAAQ,EAAK,IAC/BA,EAASib,GAA0Bjb,CAAM,EACrC,SAAUA,IACZA,EAASma,GAAoBna,EAAO,IAAO,IAI/C,CAAC,MAAO,MAAM,EAAE,QAAQ,SAAUsb,EAAS,CACrCA,KAAWtb,GAGbA,EAAOsb,CAAO,EAAE,QAAQ,SAAUC,EAAa,CAE7C,QADI5B,EAAS,OAAO,KAAK4B,CAAW,EAC3Bzc,EAAI,EAAGA,EAAI6a,EAAO,OAAQ7a,IAAK,CACtC,IAAIkb,EAAQL,EAAO7a,CAAC,EAChByb,EAAUgB,EAAYvB,CAAK,GAC3B,OAAOO,GAAY,UAAYA,IAAY,QAC7CgB,EAAYvB,CAAK,EAAI,CAAC,IAAKO,CAAO,EAEtC,CACF,CAAC,CAEL,CAAC,EAEG,SAAUva,IAGZA,EAAO,KAAUma,GAAoB,CAACna,EAAO,IAAO,CAAC,GAKvD,QAFI2Z,EAAS,OAAO,KAAK3Z,CAAM,EAEtBlB,EAAI,EAAGA,EAAI6a,EAAO,OAAQ7a,IAAK,CACtC,IAAIkb,EAAQL,EAAO7a,CAAC,EAChByb,EAAUva,EAAOga,CAAK,GAEtB,OAAOO,GAAY,UAAYA,IAAY,QAC7CA,EAAU,CAAC,IAAKA,CAAO,GAEzBva,EAAOga,CAAK,EAAIO,CAClB,CAEA,OAAAiB,GAAwBxb,CAAM,EAEvBA,CACT,CAMA,SAASwb,GAAwBlB,EAAU,CACzC,OAAO,KAAKA,CAAQ,EAAE,QAAQ,SAAUN,EAAO,CAC7C,IAAIO,EAAUD,EAASN,CAAK,EAExB,MAAM,QAAQO,CAAO,EACvBA,EAAQ,QAAQ,SAAUkB,EAAa,CACjCA,GAAe,OAAOA,GAAgB,UACxCD,GAAwBC,CAAW,CAEvC,CAAC,EACQzB,IAAU,MACnBM,EAAS,IAAM,CAACC,CAAO,EACdP,IAAU,SACnBM,EAAS,OAAS,CAACC,CAAO,EACjBA,GAAW,OAAOA,GAAY,UACvCiB,GAAwBjB,CAAO,CAEnC,CAAC,CACH,CAEA,SAASmB,GAAInX,EAAKoX,EAASC,EAAY,CAIrC,QAHIC,EAAU,GACVC,EAAeF,EAAarX,EAAI,OAE7BsX,EAAQ,OAASC,GACtBD,GAAWF,EAEb,OAAOE,CACT,CAEA,SAASE,GAAQxX,EAAKoX,EAASC,EAAY,CACzC,IAAIC,EAAUH,GAAInX,EAAKoX,EAASC,CAAU,EAC1C,OAAOC,EAAUtX,CACnB,CAEA,IAAIyX,GAAgB,KAChBC,GAAmB,EACnBC,GAAM,GAEV,SAASC,GAAQ/O,EAAGC,EAAG,CAErB,GAAID,IAAMC,EACR,MAAO,GAGTD,EAAIgP,GAAahP,CAAC,EAClBC,EAAI+O,GAAa/O,CAAC,EAElB,IAAIgP,EAAKC,GAAelP,CAAC,EACrBmP,EAAKD,GAAejP,CAAC,EACzB,GAAKgP,EAAKE,IAAQ,EAChB,OAAOF,EAAKE,EAEd,OAAQ,OAAOnP,EAAG,CAChB,IAAK,SACH,OAAOA,EAAIC,EACb,IAAK,UACH,OAAOD,EAAIC,EAAI,GAAK,EACtB,IAAK,SACH,OAAOmP,GAAcpP,EAAGC,CAAC,CAC7B,CACA,OAAO,MAAM,QAAQD,CAAC,EAAIqP,GAAarP,EAAGC,CAAC,EAAIqP,GAActP,EAAGC,CAAC,CACnE,CAIA,SAAS+O,GAAaja,EAAK,CACzB,OAAQ,OAAOA,EAAK,CAClB,IAAK,YACH,OAAO,KACT,IAAK,SACH,OAAIA,IAAQ,KAAYA,IAAQ,MAAa,MAAMA,CAAG,EAC7C,KAEFA,EACT,IAAK,SACH,IAAIwa,EAAUxa,EACd,GAAI,MAAM,QAAQA,CAAG,EAAG,CACtB,IAAIpD,EAAMoD,EAAI,OACdA,EAAM,IAAI,MAAMpD,CAAG,EACnB,QAASD,EAAI,EAAGA,EAAIC,EAAKD,IACvBqD,EAAIrD,CAAC,EAAIsd,GAAaO,EAAQ7d,CAAC,CAAC,CAGpC,KAAO,IAAIqD,aAAe,KACxB,OAAOA,EAAI,OAAO,EACb,GAAIA,IAAQ,KAAM,CACvBA,EAAM,CAAC,EACP,QAASya,KAAKD,EACZ,GAAI,OAAO,UAAU,eAAe,KAAKA,EAASC,CAAC,EAAG,CACpD,IAAIC,EAAMF,EAAQC,CAAC,EACf,OAAOC,EAAQ,MACjB1a,EAAIya,CAAC,EAAIR,GAAaS,CAAG,EAE7B,CAEJ,EACJ,CACA,OAAO1a,CACT,CAEA,SAAS2a,GAAS3a,EAAK,CACrB,GAAIA,IAAQ,KACV,OAAQ,OAAOA,EAAK,CAClB,IAAK,UACH,OAAOA,EAAM,EAAI,EACnB,IAAK,SACH,OAAO4a,GAAqB5a,CAAG,EACjC,IAAK,SAOH,OAAOA,EACJ,QAAQ,UAAW,IAAc,EACjC,QAAQ,UAAW,IAAc,EACjC,QAAQ,UAAW,IAAc,EAEtC,IAAK,SACH,IAAI6a,EAAU,MAAM,QAAQ7a,CAAG,EAC3BxB,EAAMqc,EAAU7a,EAAM,OAAO,KAAKA,CAAG,EACrCrD,EAAI,GACJC,EAAM4B,EAAI,OACVX,EAAS,GACb,GAAIgd,EACF,KAAO,EAAEle,EAAIC,GACXiB,GAAUid,GAAkBtc,EAAI7B,CAAC,CAAC,MAGpC,MAAO,EAAEA,EAAIC,GAAK,CAChB,IAAIme,EAASvc,EAAI7B,CAAC,EAClBkB,GAAUid,GAAkBC,CAAM,EAC9BD,GAAkB9a,EAAI+a,CAAM,CAAC,CACnC,CAEF,OAAOld,CACX,CAEF,MAAO,EACT,CAKA,SAASid,GAAkB9a,EAAK,CAC9B,IAAIgb,EAAO,KACX,OAAAhb,EAAMia,GAAaja,CAAG,EACfma,GAAena,CAAG,EAAI+Z,GAAMY,GAAS3a,CAAG,EAAIgb,CACrD,CAEA,SAASC,GAAY7Y,EAAKzF,EAAG,CAC3B,IAAIue,EAAcve,EACdwe,EACAH,EAAO5Y,EAAIzF,CAAC,IAAM,IACtB,GAAIqe,EACFG,EAAM,EACNxe,QACK,CACL,IAAIye,EAAMhZ,EAAIzF,CAAC,IAAM,IACrBA,IACA,IAAI0e,EAAc,GACdC,EAAclZ,EAAI,UAAUzF,EAAGA,EAAImd,EAAgB,EACnDyB,EAAY,SAASD,EAAa,EAAE,EAAIzB,GAM5C,IAJIuB,IACFG,EAAY,CAACA,GAEf5e,GAAKmd,KACQ,CACX,IAAIpC,EAAKtV,EAAIzF,CAAC,EACd,GAAI+a,IAAO,KACT,MAEA2D,GAAe3D,EAEjB/a,GACF,CACA0e,EAAcA,EAAY,MAAM,GAAG,EAC/BA,EAAY,SAAW,EACzBF,EAAM,SAASE,EAAa,EAAE,EAG9BF,EAAM,WAAWE,EAAY,CAAC,EAAI,IAAMA,EAAY,CAAC,CAAC,EAGpDD,IACFD,EAAMA,EAAM,IAGVI,IAAc,IAIhBJ,EAAM,WAAWA,EAAM,IAAMI,CAAS,EAE1C,CACA,MAAO,CAAC,IAAAJ,EAAK,OAASxe,EAAIue,CAAW,CACvC,CAIA,SAASM,GAAIC,EAAOC,EAAW,CAC7B,IAAInd,EAAMkd,EAAM,IAAI,EAEpB,GAAIC,EAAU,OAAQ,CACpB,IAAIC,EAAkBD,EAAUA,EAAU,OAAS,CAAC,EAChDnd,IAAQod,EAAgB,UAE1BD,EAAU,IAAI,EACdC,EAAkBD,EAAUA,EAAU,OAAS,CAAC,GAElD,IAAIE,EAAUD,EAAgB,QAC1BE,EAAmBF,EAAgB,MACvC,GAAI,MAAM,QAAQC,CAAO,EACvBA,EAAQ,KAAKrd,CAAG,UACPsd,IAAqBJ,EAAM,OAAS,EAAG,CAChD,IAAIzb,EAAMyb,EAAM,IAAI,EACpBG,EAAQ5b,CAAG,EAAIzB,CACjB,MACEkd,EAAM,KAAKld,CAAG,CAElB,CACF,CAEA,SAASud,GAAqB1Z,EAAK,CAMjC,QALIqZ,EAAQ,CAAC,EACTC,EAAY,CAAC,EACb/e,EAAI,IAGK,CACX,IAAIwd,EAAiB/X,EAAIzF,GAAG,EAC5B,GAAIwd,IAAmB,KAAU,CAC/B,GAAIsB,EAAM,SAAW,EACnB,OAAOA,EAAM,IAAI,EAEjBD,GAAIC,EAAOC,CAAS,EACpB,QAEJ,CACA,OAAQvB,EAAgB,CACtB,IAAK,IACHsB,EAAM,KAAK,IAAI,EACf,MACF,IAAK,IACHA,EAAM,KAAKrZ,EAAIzF,CAAC,IAAM,GAAG,EACzBA,IACA,MACF,IAAK,IACH,IAAIof,EAAYd,GAAY7Y,EAAKzF,CAAC,EAClC8e,EAAM,KAAKM,EAAU,GAAG,EACxBpf,GAAKof,EAAU,OACf,MACF,IAAK,IAGH,QAFIC,EAAY,KAEH,CACX,IAAItE,EAAKtV,EAAIzF,CAAC,EACd,GAAI+a,IAAO,KACT,MAEFsE,GAAatE,EACb/a,GACF,CAIAqf,EAAYA,EAAU,QAAQ,gBAAiB,IAAQ,EACpD,QAAQ,gBAAiB,GAAQ,EACjC,QAAQ,gBAAiB,GAAQ,EAEpCP,EAAM,KAAKO,CAAS,EACpB,MACF,IAAK,IACH,IAAIC,EAAe,CAAE,QAAS,CAAC,EAAG,MAAOR,EAAM,MAAO,EACtDA,EAAM,KAAKQ,EAAa,OAAO,EAC/BP,EAAU,KAAKO,CAAY,EAC3B,MACF,IAAK,IACH,IAAIC,EAAa,CAAE,QAAS,CAAC,EAAG,MAAOT,EAAM,MAAO,EACpDA,EAAM,KAAKS,EAAW,OAAO,EAC7BR,EAAU,KAAKQ,CAAU,EACzB,MAEF,QACE,MAAM,IAAI,MACR,4DACE/B,CAAc,CACtB,CACF,CACF,CAEA,SAASG,GAAarP,EAAGC,EAAG,CAE1B,QADItO,EAAM,KAAK,IAAIqO,EAAE,OAAQC,EAAE,MAAM,EAC5BvO,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CAC5B,IAAIwf,EAAOnC,GAAQ/O,EAAEtO,CAAC,EAAGuO,EAAEvO,CAAC,CAAC,EAC7B,GAAIwf,IAAS,EACX,OAAOA,CAEX,CACA,OAAQlR,EAAE,SAAWC,EAAE,OAAU,EAC9BD,EAAE,OAASC,EAAE,OAAU,EAAI,EAChC,CACA,SAASmP,GAAcpP,EAAGC,EAAG,CAI3B,OAAQD,IAAMC,EAAK,EAAMD,EAAIC,EAAK,EAAI,EACxC,CACA,SAASqP,GAActP,EAAGC,EAAG,CAG3B,QAFIkR,EAAK,OAAO,KAAKnR,CAAC,EAAGoR,EAAK,OAAO,KAAKnR,CAAC,EACvCtO,EAAM,KAAK,IAAIwf,EAAG,OAAQC,EAAG,MAAM,EAC9B1f,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CAE5B,IAAIwf,EAAOnC,GAAQoC,EAAGzf,CAAC,EAAG0f,EAAG1f,CAAC,CAAC,EAM/B,GALIwf,IAAS,IAIbA,EAAOnC,GAAQ/O,EAAEmR,EAAGzf,CAAC,CAAC,EAAGuO,EAAEmR,EAAG1f,CAAC,CAAC,CAAC,EAC7Bwf,IAAS,GACX,OAAOA,CAGX,CACA,OAAQC,EAAG,SAAWC,EAAG,OAAU,EAChCD,EAAG,OAASC,EAAG,OAAU,EAAI,EAClC,CAKA,SAASlC,GAAevb,EAAG,CACzB,IAAIiB,EAAK,CAAC,UAAW,SAAU,SAAU,QAAQ,EAC7C+M,EAAM/M,EAAG,QAAQ,OAAOjB,CAAC,EAE7B,GAAI,CAACgO,EACH,OAAIhO,IAAM,KACD,EAEL,MAAM,QAAQA,CAAC,EACV,EAEFgO,EAAM,EAAKA,EAAM,EAAMA,EAAM,EAGtC,GAAI,MAAM,QAAQhO,CAAC,EACjB,MAAO,EAEX,CAOA,SAASgc,GAAqBO,EAAK,CAEjC,GAAIA,IAAQ,EACV,MAAO,IAKT,IAAImB,EAAYnB,EAAI,cAAc,EAAE,MAAM,MAAM,EAC5CI,EAAY,SAASe,EAAU,CAAC,EAAG,EAAE,EAErClB,EAAMD,EAAM,EAEZtd,EAASud,EAAM,IAAM,IAIrBmB,GAAqBnB,EAAM,CAACG,EAAYA,GAAa1B,GACrD2C,EAAY5C,GAAS2C,EAAkB,SAAS,EAAG,IAAKzC,EAAgB,EAE5Ejc,GAAUkc,GAAMyC,EAGhB,IAAIC,EAAS,KAAK,IAAI,WAAWH,EAAU,CAAC,CAAC,CAAC,EAE1ClB,IACFqB,EAAS,GAAKA,GAGhB,IAAIC,EAAYD,EAAO,QAAQ,EAAE,EAGjC,OAAAC,EAAYA,EAAU,QAAQ,SAAU,EAAE,EAE1C7e,GAAUkc,GAAM2C,EAET7e,CACT,CAGA,SAAS8e,GAAkBR,EAAM,CAE/B,SAASS,EAAsBrY,EAAK,CAClC,OAAO4X,EAAK,IAAI,SAAUU,EAAS,CACjC,IAAItF,EAAYO,GAAO+E,CAAO,EAC1B3F,EAAcI,GAAWC,CAAS,EAClCuF,EAAgB7F,GAAgB1S,EAAK2S,CAAW,EACpD,OAAO4F,CACT,CAAC,CACH,CAEA,OAAO,SAAUC,EAAMC,EAAM,CAC3B,IAAIC,EAAeL,EAAsBG,EAAK,GAAG,EAC7CG,EAAeN,EAAsBI,EAAK,GAAG,EAC7CG,EAAYnD,GAAQiD,EAAcC,CAAY,EAClD,OAAIC,IAAc,EACTA,EAGFhG,GAAQ4F,EAAK,IAAI,IAAKC,EAAK,IAAI,GAAG,CAC3C,CACF,CAEA,SAASI,GAAqBC,EAAMC,EAAYC,EAAgB,CAK9D,GAJAF,EAAOA,EAAK,OAAO,SAAU1I,EAAK,CAChC,OAAO6I,GAAU7I,EAAI,IAAK2I,EAAW,SAAUC,CAAc,CAC/D,CAAC,EAEGD,EAAW,KAAM,CAEnB,IAAIG,EAAcd,GAAkBW,EAAW,IAAI,EACnDD,EAAOA,EAAK,KAAKI,CAAW,EACxB,OAAOH,EAAW,KAAK,CAAC,GAAM,UAC9BvF,GAASuF,EAAW,KAAK,CAAC,CAAC,IAAM,SACnCD,EAAOA,EAAK,QAAQ,EAExB,CAEA,GAAI,UAAWC,GAAc,SAAUA,EAAY,CAEjD,IAAII,EAAOJ,EAAW,MAAQ,EAC1BK,GAAS,UAAWL,EAAaA,EAAW,MAAQD,EAAK,QAAUK,EACvEL,EAAOA,EAAK,MAAMK,EAAMC,CAAK,CAC/B,CACA,OAAON,CACT,CAEA,SAASG,GAAUjZ,EAAK4T,EAAUoF,EAAgB,CAChD,OAAOA,EAAe,MAAM,SAAU1F,EAAO,CAC3C,IAAIO,EAAUD,EAASN,CAAK,EACxBX,EAAcI,GAAWO,CAAK,EAC9BiF,EAAgB7F,GAAgB1S,EAAK2S,CAAW,EACpD,OAAIU,GAAqBC,CAAK,EACrB+F,GAA0B/F,EAAOO,EAAS7T,CAAG,EAG/CsZ,GAAczF,EAAS7T,EAAK2S,EAAa4F,CAAa,CAC/D,CAAC,CACH,CAEA,SAASe,GAAczF,EAAS7T,EAAK2S,EAAa4F,EAAe,CAC/D,OAAK1E,EAMD,OAAOA,GAAY,SACd,OAAO,KAAKA,CAAO,EAAE,MAAM,SAAU0F,EAAmB,CAC7D,IAAIC,EAAY3F,EAAS0F,CAAkB,EAE3C,GAAIA,EAAkB,QAAQ,GAAG,IAAM,EACrC,OAAO/I,GAAM+I,EAAmBvZ,EAAKwZ,EAAW7G,EAAa4F,CAAa,EAE1E,IAAIkB,EAAiB1G,GAAWwG,CAAiB,EAEjD,GACEhB,IAAkB,QAClB,OAAOiB,GAAc,UACrBC,EAAe,OAAS,EAGxB,MAAO,GAGT,IAAIC,EAAmBhH,GAAgB6F,EAAekB,CAAc,EAEpE,OAAI,OAAOD,GAAc,SAEhBF,GAAcE,EAAWxZ,EAAK2S,EAAa+G,CAAgB,EAI7DlJ,GAAM,MAAOxQ,EAAKwZ,EAAWC,EAAgBC,CAAgB,CAExE,CAAC,EAII7F,IAAY0E,EApCV,EAqCX,CAEA,SAASc,GAA0B/F,EAAOO,EAAS7T,EAAK,CAEtD,OAAIsT,IAAU,MACLO,EAAQ,KAAK,SAAU8F,EAAY,CACxC,OAAOV,GAAUjZ,EAAK2Z,EAAY,OAAO,KAAKA,CAAU,CAAC,CAC3D,CAAC,EAGCrG,IAAU,OACL,CAAC2F,GAAUjZ,EAAK6T,EAAS,OAAO,KAAKA,CAAO,CAAC,EAI/C,CAACA,EAAQ,KAAK,SAAU8F,EAAY,CACzC,OAAOV,GAAUjZ,EAAK2Z,EAAY,OAAO,KAAKA,CAAU,CAAC,CAC3D,CAAC,CAEH,CAEA,SAASnJ,GAAMoJ,EAAc5Z,EAAKwZ,EAAW7G,EAAa4F,EAAe,CACvE,GAAI,CAACsB,GAASD,CAAY,EAExB,MAAM,IAAI,MAAM,qBAAuBA,EACrC,oIACiE,EAErE,OAAOC,GAASD,CAAY,EAAE5Z,EAAKwZ,EAAW7G,EAAa4F,CAAa,CAC1E,CAEA,SAASuB,GAAYvB,EAAe,CAClC,OAAO,OAAOA,EAAkB,KAAeA,IAAkB,IACnE,CAEA,SAASwB,GAAoBxB,EAAe,CAC1C,OAAO,OAAOA,EAAkB,GAClC,CAEA,SAASyB,GAASzB,EAAeiB,EAAW,CAC1C,GAAI,OAAOjB,GAAkB,UAC3B,SAASA,EAAe,EAAE,IAAMA,EAChC,MAAO,GAGT,IAAI0B,EAAUT,EAAU,CAAC,EACrBU,EAAMV,EAAU,CAAC,EAErB,OAAOjB,EAAgB0B,IAAYC,CACrC,CAEA,SAASC,GAAmB5B,EAAeiB,EAAW,CACpD,OAAOA,EAAU,KAAK,SAAUrD,EAAK,CACnC,OAAIoC,aAAyB,MACpBA,EAAc,KAAK,SAAU6B,EAAmB,CACrD,OAAO3E,GAAQU,EAAKiE,CAAiB,IAAM,CAC7C,CAAC,EAGI3E,GAAQU,EAAKoC,CAAa,IAAM,CACzC,CAAC,CACH,CAEA,SAAS8B,GAAuB9B,EAAeiB,EAAW,CACxD,OAAOA,EAAU,MAAM,SAAUrD,EAAK,CACpC,OAAOoC,EAAc,KAAK,SAAU6B,EAAmB,CACrD,OAAO3E,GAAQU,EAAKiE,CAAiB,IAAM,CAC7C,CAAC,CACH,CAAC,CACH,CAEA,SAASE,GAAU/B,EAAeiB,EAAW,CAC3C,OAAOjB,EAAc,SAAWiB,CAClC,CAEA,SAASe,GAAWhC,EAAeiB,EAAW,CAC5C,IAAIgB,EAAK,IAAI,OAAOhB,CAAS,EAE7B,OAAOgB,EAAG,KAAKjC,CAAa,CAC9B,CAEA,SAASkC,GAAUlC,EAAeiB,EAAW,CAE3C,OAAQA,EAAW,CACjB,IAAK,OACH,OAAOjB,IAAkB,KAC3B,IAAK,UACH,OAAO,OAAQA,GAAmB,UACpC,IAAK,SACH,OAAO,OAAQA,GAAmB,SACpC,IAAK,SACH,OAAO,OAAQA,GAAmB,SACpC,IAAK,QACH,OAAOA,aAAyB,MAClC,IAAK,SACH,MAAQ,CAAC,EAAG,SAAS,KAAKA,CAAa,IAAM,iBACjD,CACF,CAEA,IAAIsB,GAAW,CAEb,WAAc,SAAU7Z,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAKlE,MAJI,CAAC,MAAM,QAAQA,CAAa,GAI5BA,EAAc,SAAW,EACpB,GAGL,OAAOA,EAAc,CAAC,GAAM,UAAaA,EAAc,CAAC,IAAM,KACzDA,EAAc,KAAK,SAAUpC,EAAK,CACvC,OAAO8C,GAAU9C,EAAKqD,EAAW,OAAO,KAAKA,CAAS,CAAC,CACzD,CAAC,EAGIjB,EAAc,KAAK,SAAUpC,EAAK,CACvC,OAAOmD,GAAcE,EAAWxZ,EAAK2S,EAAawD,CAAG,CACvD,CAAC,CACH,EAEA,UAAa,SAAUnW,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAMjE,MALI,CAAC,MAAM,QAAQA,CAAa,GAK5BA,EAAc,SAAW,EACpB,GAGL,OAAOA,EAAc,CAAC,GAAM,UAAaA,EAAc,CAAC,IAAM,KACzDA,EAAc,MAAM,SAAUpC,EAAK,CACxC,OAAO8C,GAAU9C,EAAKqD,EAAW,OAAO,KAAKA,CAAS,CAAC,CACzD,CAAC,EAGIjB,EAAc,MAAM,SAAUpC,EAAK,CACxC,OAAOmD,GAAcE,EAAWxZ,EAAK2S,EAAawD,CAAG,CACvD,CAAC,CACH,EAEA,IAAO,SAAUnW,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC3D,OAAOwB,GAAoBxB,CAAa,GAAK9C,GAAQ8C,EAAeiB,CAAS,IAAM,CACrF,EAEA,KAAQ,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC5D,OAAOwB,GAAoBxB,CAAa,GAAK9C,GAAQ8C,EAAeiB,CAAS,GAAK,CACpF,EAEA,IAAO,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC3D,OAAOwB,GAAoBxB,CAAa,GAAK9C,GAAQ8C,EAAeiB,CAAS,EAAI,CACnF,EAEA,KAAQ,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC5D,OAAOwB,GAAoBxB,CAAa,GAAK9C,GAAQ8C,EAAeiB,CAAS,GAAK,CACpF,EAEA,IAAO,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC3D,OAAOwB,GAAoBxB,CAAa,GAAK9C,GAAQ8C,EAAeiB,CAAS,EAAI,CACnF,EAEA,QAAW,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAE/D,OAAIiB,EACKO,GAAoBxB,CAAa,EAGnC,CAACwB,GAAoBxB,CAAa,CAC3C,EAEA,KAAQ,SAAUvY,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC5D,OAAOuB,GAAYvB,CAAa,GAAKyB,GAASzB,EAAeiB,CAAS,CACxE,EAEA,IAAO,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC3D,OAAOiB,EAAU,MAAM,SAAUkB,EAAS,CACxC,OAAOjF,GAAQ8C,EAAemC,CAAO,IAAM,CAC7C,CAAC,CACH,EACA,IAAO,SAAU1a,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC3D,OAAOuB,GAAYvB,CAAa,GAAK4B,GAAmB5B,EAAeiB,CAAS,CAClF,EAEA,KAAQ,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC5D,OAAOuB,GAAYvB,CAAa,GAAK,CAAC4B,GAAmB5B,EAAeiB,CAAS,CACnF,EAEA,MAAS,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC7D,OAAOuB,GAAYvB,CAAa,GAC9B,MAAM,QAAQA,CAAa,GAC3B+B,GAAU/B,EAAeiB,CAAS,CACtC,EAEA,KAAQ,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC5D,OAAO,MAAM,QAAQA,CAAa,GAAK8B,GAAuB9B,EAAeiB,CAAS,CACxF,EAEA,OAAU,SAAUxZ,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC9D,OAAOuB,GAAYvB,CAAa,GAC9B,OAAOA,GAAiB,UACxBiB,EAAU,MAAM,SAAUmB,EAAY,CACpC,OAAOJ,GAAWhC,EAAeoC,CAAU,CAC7C,CAAC,CACL,EAEA,MAAS,SAAU3a,EAAKwZ,EAAW7G,EAAa4F,EAAe,CAC7D,OAAOkC,GAAUlC,EAAeiB,CAAS,CAC3C,CACF,EAGA,SAASoB,GAAgB5a,EAAK4T,EAAU,CAEtC,GAAI,OAAOA,GAAa,SAEtB,MAAM,IAAI,MAAM,wCAAwC,EAG1DA,EAAWc,GAAgBd,CAAQ,EACnC,IAAIxD,EAAM,CACR,IAAApQ,CACF,EAEI6a,EAAchC,GAAqB,CAACzI,CAAG,EAAG,CAAE,SAAAwD,CAAS,EAAG,OAAO,KAAKA,CAAQ,CAAC,EACjF,OAAOiH,GAAeA,EAAY,SAAW,CAC/C,CAEA,SAASC,GAAWnG,EAAO,CACzB,OAAO9S,GAAU;AAAA,SAA2B8S,EAAQ,IAAK,CAAC,CAAC,CAC7D,CAEA,SAASoG,GAASpG,EAAO,CACvB,IAAIqG,EAAO,CACT,yBACA,kBACA,yBACA,iCACA,sBACA,OACA,gBAAkBrG,EAAQ,IAC1B,eACA,mBACA,mBACA,MACA,IACF,EAAE,KAAK;AAAA,CAAI,EAEX,OAAO9S,GAAUmZ,EAAM,CAAC,CAAC,CAC3B,CAEA,SAASC,GAASxgB,EAAMvB,EAAU,CAChC,GAAIuB,EAAK,UACHA,EAAK,QAAUA,EAAK,SAAW,YAAa,CAC9C,IAAIygB,EAAa,OAAOzgB,EAAK,QAAW,SACtCA,EAAK,OAAS,WAChB,OAAOvB,EAAS,IAAI,MAAM,gCAAkCgiB,EAAa,GAAG,CAAC,CAC/E,CAEFhiB,EAAS,CACX,CAEA,SAASiiB,GAAU1gB,EAAM,CACnBA,EAAK,MAAQ,CAACA,EAAK,SACrBA,EAAK,OAAS,SAGZA,EAAK,UAAY,CAACA,EAAK,SACzBA,EAAK,OAAS,aAGZA,EAAK,QAAU,OAAOA,EAAK,QAAW,WACpCA,EAAK,SAAW,QAClBA,EAAK,KAAOuG,GAA+BvG,EAAK,IAAI,EAEpDA,EAAK,OAASuG,GAA+BvG,EAAK,MAAM,EAG9D,CAEA,SAAS2gB,GAAaC,EAAgB5gB,EAAM,CAC1C,OAAOA,EAAK,QAAU,OAAOA,EAAK,QAAW,UAC3C,CAACA,EAAK,SAAW,CAACgG,GAAS4a,EAAe,EAAE,CAChD,CAEA,SAAStb,GAAOsb,EAAgB5gB,EAAM,CACpC,IAAIvB,EAAWuB,EAAK,SACpB,GAAIA,EAAK,SAAW,QAAS,CAC3B,GAAI,CAACA,EAAK,MAAQ,OAAOA,EAAK,MAAS,SAAU,CAC/C,IAAItB,EAAMsG,GAAYX,GACpB,+CAA+C,EACjD,OAAO5F,EAASC,CAAG,CACrB,CAEA,IAAImiB,EAAWza,GAA2BpG,EAAK,IAAI,EACnD4gB,EAAe,GAAG,IAAI,WAAaC,EAAS,CAAC,EAAG,SAAUniB,EAAKoiB,EAAM,CAEnE,GAAIF,EAAe,YACjB,OAAOniB,EAAS,KAAM,CAAC,OAAQ,WAAW,CAAC,EAG7C,GAAIC,EACF,OAAOD,EAAS0G,GAA0BzG,CAAG,CAAC,EAEhD,IAAIqiB,EAASD,GAAQA,EAAK,OAASA,EAAK,MAAMD,EAAS,CAAC,CAAC,GACvDC,EAAK,MAAMD,EAAS,CAAC,CAAC,EAAE,IAC1B,GAAI,CAACE,EACH,OAAOtiB,EAASuG,GAAYtB,GACzBod,EAAK,MAAQ,qBAAuBD,EAAS,CAAC,EAC7C,yBAA0B,CAAC,EAEjC7gB,EAAK,OAASsgB,GAASS,CAAM,EAC7BH,EAAe,UAAU5gB,CAAI,CAC/B,CAAC,CACH,SAAWA,EAAK,SACdA,EAAK,OAAS,SAAUuF,EAAK,CAC3B,OAAO4a,GAAgB5a,EAAKvF,EAAK,QAAQ,CAC3C,EACA4gB,EAAe,UAAU5gB,CAAI,MACxB,CAEL,IAAIygB,EAAara,GAA2BpG,EAAK,MAAM,EACvD4gB,EAAe,GAAG,IAAI,WAAaH,EAAW,CAAC,EAAG,SAAU/hB,EAAKoiB,EAAM,CAErE,GAAIF,EAAe,YACjB,OAAOniB,EAAS,KAAM,CAAC,OAAQ,WAAW,CAAC,EAG7C,GAAIC,EACF,OAAOD,EAAS0G,GAA0BzG,CAAG,CAAC,EAEhD,IAAIsiB,EAAYF,GAAQA,EAAK,SAAWA,EAAK,QAAQL,EAAW,CAAC,CAAC,EAClE,GAAI,CAACO,EACH,OAAOviB,EAASuG,GAAYtB,GACxBod,GAAQA,EAAK,QAAW,qBAAuBL,EAAW,CAAC,EACzD,2BAA4B,CAAC,EAErCzgB,EAAK,OAASqgB,GAAWW,CAAS,EAClCJ,EAAe,UAAU5gB,CAAI,CAC/B,CAAC,CACH,CACF,CAEA,SAASihB,GAAyBnQ,EAAS,CACzCA,EAAQ,qBAAuB,CAC7B,SAAA0P,GACA,UAAAE,GACA,aAAAC,GACA,OAAArb,EACF,CACF,CAGAwL,GAAQ,OAAOmQ,EAAwB,EAEvCnQ,GAAQ,QAAUkH,GAkBlB,SAASkJ,GAAiBC,EAAKC,EAAOC,EAAkB,CACtD,OAAO,IAAI,QAAQ,SAAUC,EAAS,CACpC,IAAIC,EAAUxZ,GAAW,CAAC,EAAE,CAAC,EAE7B,IAAIvC,EACJ,GAAI,OAAO6b,GAAqB,WAAY,CAI1C,IAAM9b,EADY8b,EACIE,CAAO,EAC7B/b,EAAM2b,EAAI,YAAYC,CAAK,EAAE,IAAI7b,CAAG,CACtC,KAAO,CACL,IAAMjE,EAAQ+f,EACd7b,EAAM2b,EAAI,YAAYC,CAAK,EAAE,IAAIG,EAASjgB,CAAK,CACjD,CAEAkE,EAAI,UAAY,UAAY,CAC1B,IAAIgc,EAAgB,UAAU,UAAU,MAAM,eAAe,EACzDC,EAAc,UAAU,UAAU,MAAM,QAAQ,EAGpDH,EAAQG,GAAe,CAACD,GACtB,SAASA,EAAc,CAAC,EAAG,EAAE,GAAK,EAAE,CACxC,EAEAhc,EAAI,QAAU2b,EAAI,QAAU,SAAUviB,EAAG,CAGvCA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAClB0iB,EAAQ,EAAK,CACf,CACF,CAAC,EAAE,MAAM,UAAY,CACnB,MAAO,EACT,CAAC,CACH,CAEA,SAASI,GAASC,EAAO,CACvB,OAAOA,EAAM,OAAO,SAAUpiB,EAAK+N,EAAM,CACvC,OAAA/N,EAAI+N,CAAI,EAAI,GACL/N,CACT,EAAG,CAAC,CAAC,CACP,CAEA,IAAIqiB,GAAgBF,GAAS,CAC3B,MACA,OACA,UACA,eACA,WACA,aACA,aACA,aACA,qBACA,aACA,YAEA,kBACA,qBACA,0BACA,4BACA,qBAEA,UACF,CAAC,EAGGG,GAAYH,GAAS,CACvB,UACA,eAEA,kBACA,qBACA,0BACA,4BACA,oBACF,CAAC,EAED,SAASI,GAAkBnQ,EAAQ,CACjC,GAAI,CAAC,QAAQ,KAAKA,CAAM,EACtB,OAAO3M,GAAYJ,EAAW,EAEhC,IAAIgJ,EAAM+D,EAAO,QAAQ,GAAG,EACxByG,EAAOzG,EAAO,UAAU,EAAG/D,CAAG,EAC9ByK,EAAQ1G,EAAO,UAAU/D,EAAM,CAAC,EACpC,MAAO,CACL,OAAQ,SAASwK,EAAM,EAAE,EACzB,GAAIC,CACN,CACF,CAEA,SAAS0J,GAAyBC,EAAWhiB,EAAM,CAMjD,QALI2L,EAAMqW,EAAU,MAAQA,EAAU,IAAI,OAAS,EAE/CC,EAAcD,EAAU,IACxB5O,EAAM,CAAC6O,EAAY,CAAC,EAAGjiB,EAAM,CAAC,CAAC,EAE1BrC,EAAI,EAAGC,EAAMqkB,EAAY,OAAQtkB,EAAIC,EAAKD,IACjDyV,EAAM,CAAC6O,EAAYtkB,CAAC,EAAG,CAAC,OAAQ,SAAS,EAAG,CAACyV,CAAG,CAAC,EAGnD,MAAO,CAAC,CACN,IAAAzH,EACA,IAAAyH,CACF,CAAC,CACH,CAIA,SAAS8O,GAAS3c,EAAK4c,EAAUC,EAAQ,CAClCA,IACHA,EAAS,CACP,mBAAoB,EACtB,GAGF,IAAIC,EACAxP,EACAyP,EACAtiB,EAAO,CAAC,OAAQ,WAAW,EAK/B,GAJIuF,EAAI,WACNvF,EAAK,QAAU,IAGbmiB,EAKF,GAJK5c,EAAI,MACPA,EAAI,IAAM0F,GAAK,GAEjB4H,EAAWhI,GAAItF,EAAK6c,EAAO,kBAAkB,EACzC7c,EAAI,KAAM,CAEZ,GADA+c,EAAUR,GAAkBvc,EAAI,IAAI,EAChC+c,EAAQ,MACV,OAAOA,EAET/c,EAAI,UAAY,CAAC,CACf,IAAK+c,EAAQ,OACb,IAAK,CAACA,EAAQ,GAAI,CAAC,OAAQ,SAAS,EAAG,CAAC,CAACzP,EAAU7S,EAAM,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC,EACDqiB,EAAUC,EAAQ,OAAS,CAC7B,MACE/c,EAAI,UAAY,CAAC,CACf,IAAK,EACL,IAAM,CAACsN,EAAU7S,EAAM,CAAC,CAAC,CAC3B,CAAC,EACDqiB,EAAU,UAGR9c,EAAI,aACNA,EAAI,UAAYwc,GAAyBxc,EAAI,WAAYvF,CAAI,EAC7DqiB,EAAU9c,EAAI,WAAW,MACzBsN,EAAWtN,EAAI,WAAW,IAAI,CAAC,GAE7B,CAACA,EAAI,UAAW,CAElB,GADA+c,EAAUR,GAAkBvc,EAAI,IAAI,EAChC+c,EAAQ,MACV,OAAOA,EAETD,EAAUC,EAAQ,OAClBzP,EAAWyP,EAAQ,GACnB/c,EAAI,UAAY,CAAC,CACf,IAAK8c,EACL,IAAK,CAACxP,EAAU7S,EAAM,CAAC,CAAC,CAC1B,CAAC,CACH,CAGF+F,GAAeR,EAAI,GAAG,EAEtBA,EAAI,KAAO8c,EAAU,IAAMxP,EAE3B,IAAIhU,EAAS,CAAC,SAAW,CAAC,EAAG,KAAO,CAAC,CAAC,EACtC,QAASmC,KAAOuE,EAEd,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAKvE,CAAG,EAAG,CAClD,IAAIuhB,EAAavhB,EAAI,CAAC,IAAM,IAC5B,GAAIuhB,GAAc,CAACX,GAAc5gB,CAAG,EAAG,CACrC,IAAIsC,EAAQ0B,GAAYZ,GAAgBpD,CAAG,EAC3C,MAAAsC,EAAM,QAAUc,GAAe,QAAU,KAAOpD,EAC1CsC,CACR,MAAWif,GAAc,CAACV,GAAU7gB,CAAG,EACrCnC,EAAO,SAASmC,EAAI,MAAM,CAAC,CAAC,EAAIuE,EAAIvE,CAAG,EAEvCnC,EAAO,KAAKmC,CAAG,EAAIuE,EAAIvE,CAAG,CAE9B,CAEF,OAAOnC,CACT,CAEA,SAAS2jB,GAAYpd,EAAM,CACzB,GAAI,CACF,OAAOyC,GAASzC,CAAI,CACtB,MAAY,CACV,IAAI1G,EAAMsG,GAAYf,GACpB,yCAAyC,EAC3C,MAAO,CAAC,MAAOvF,CAAG,CACpB,CACF,CAEA,SAAS+jB,GAAiB3c,EAAK4c,EAAUjkB,EAAU,CACjD,IAAIkkB,EAAWH,GAAY1c,EAAI,IAAI,EACnC,GAAI6c,EAAS,MACX,OAAOlkB,EAASkkB,EAAS,KAAK,EAGhC7c,EAAI,OAAS6c,EAAS,OAClBD,IAAa,OACf5c,EAAI,KAAOyC,GAAmBoa,EAAU7c,EAAI,YAAY,EAC/C4c,IAAa,SACtB5c,EAAI,KAAOgC,GAAS6a,CAAQ,EAE5B7c,EAAI,KAAO6c,EAEbzY,GAAUyY,EAAU,SAAU9jB,EAAQ,CACpCiH,EAAI,OAAS,OAASjH,EACtBJ,EAAS,CACX,CAAC,CACH,CAEA,SAASmkB,GAAe9c,EAAK4c,EAAUjkB,EAAU,CAC/CyL,GAAUpE,EAAI,KAAM,SAAU+c,EAAK,CACjC/c,EAAI,OAAS,OAAS+c,EAEtB/c,EAAI,OAASA,EAAI,KAAK,MAAQA,EAAI,KAAK,QAAU,EAC7C4c,IAAa,SACfvZ,GAAmBrD,EAAI,KAAM,SAAU0C,EAAW,CAChD1C,EAAI,KAAO0C,EACX/J,EAAS,CACX,CAAC,EACQikB,IAAa,SACtBrZ,GAAavD,EAAI,KAAM,SAAU4C,EAAK,CACpC5C,EAAI,KAAO4C,EACXjK,EAAS,CACX,CAAC,EAEDA,EAAS,CAEb,CAAC,CACH,CAEA,SAASqkB,GAAqBhd,EAAK4c,EAAUjkB,EAAU,CACrD,GAAIqH,EAAI,KACN,OAAOrH,EAAS,EAEd,OAAOqH,EAAI,MAAS,SACtB2c,GAAiB3c,EAAK4c,EAAUjkB,CAAQ,EAExCmkB,GAAe9c,EAAK4c,EAAUjkB,CAAQ,CAE1C,CAEA,SAASskB,GAAsBC,EAAUN,EAAUjkB,EAAU,CAE3D,GAAI,CAACukB,EAAS,OACZ,OAAOvkB,EAAS,EAGlB,IAAIwkB,EAAO,EACPC,EAEJF,EAAS,QAAQ,SAAUG,EAAS,CAClC,IAAIzO,EAAcyO,EAAQ,MAAQA,EAAQ,KAAK,aAC7C,OAAO,KAAKA,EAAQ,KAAK,YAAY,EAAI,CAAC,EACxCC,EAAO,EAEX,GAAI,CAAC1O,EAAY,OACf,OAAO/J,EAAK,EAGd,SAAS0Y,EAAoB3kB,EAAK,CAChCwkB,EAAaxkB,EACb0kB,IACIA,IAAS1O,EAAY,QACvB/J,EAAK,CAET,CAEA,QAAS3J,KAAOmiB,EAAQ,KAAK,aACvB,OAAO,UAAU,eAAe,KAAKA,EAAQ,KAAK,aAAcniB,CAAG,GACrE8hB,GAAqBK,EAAQ,KAAK,aAAaniB,CAAG,EAChD0hB,EAAUW,CAAmB,CAGrC,CAAC,EAED,SAAS1Y,GAAO,CACdsY,IACID,EAAS,SAAWC,IAClBC,EACFzkB,EAASykB,CAAU,EAEnBzkB,EAAS,EAGf,CACF,CAEA,SAAS6kB,GAAUC,EAAUC,EAAML,EAAS3iB,EACzB,EAAG+R,EAAIkR,EAAUtB,EAAU,CAE5C,GAAIxS,GAAU6T,EAAK,SAAUL,EAAQ,SAAS,GAAG,GAAK,CAAChB,EACrD,OAAA3hB,EAAQ,CAAC,EAAI2iB,EACN5Q,EAAG,EAIZ,IAAImR,EAAqBF,EAAK,YAActY,GAAWsY,CAAI,EACvDG,EAAoB,YAAaH,EAAOA,EAAK,QAC/CxT,GAAUwT,EAAME,CAAkB,EAChC9X,EAAU,YAAauX,EAAQ,SAAWA,EAAQ,SAAS,QAC7DnT,GAAUmT,EAAQ,QAAQ,EACxBS,EAAS,MAAM,KAAKT,EAAQ,SAAS,GAAG,EAE5C,GAAIQ,GAAqB,CAAC/X,GAAWuW,GAAYyB,EAAQ,CACvD,IAAIjc,EAASwb,EAAQ,KACrBxb,EAAO,KAAO+b,EACd/b,EAAO,IAAMwb,EAAQ,SAAS,GAC9BA,EAAUjB,GAASva,EAAQwa,CAAQ,CACrC,CAEA,IAAI3T,EAASiB,GAAM+T,EAAK,SAAUL,EAAQ,SAAS,SAAS,CAAC,EAAGI,CAAQ,EAEpEM,EAAa1B,IACdwB,GAAqB/X,GAAW4C,EAAO,YAAc,YACrD,CAACmV,GAAqBnV,EAAO,YAAc,YAC3CmV,GAAqB,CAAC/X,GAAW4C,EAAO,YAAc,cAEzD,GAAIqV,EAAY,CACd,IAAInlB,EAAMsG,GAAYrB,EAAY,EAClC,OAAAnD,EAAQ,CAAC,EAAI9B,EACN6T,EAAG,CACZ,CAEA,IAAIuR,EAASX,EAAQ,SAAS,IAC9BA,EAAQ,SAAS,SAAW3U,EAAO,KACnC2U,EAAQ,YAAc3U,EAAO,aAAe,CAAC,EAEzCgV,EAAK,UACPL,EAAQ,SAAS,QAAUK,EAAK,SAIlC,IAAIO,EAAgB7Y,GAAWiY,EAAQ,QAAQ,EAC3Ca,EAAsBhU,GAAUmT,EAAQ,SAAUY,CAAa,EAI/DE,EAASN,IAAsBK,EAAuB,EACxDL,EAAoBK,EAAsB,GAAK,EAE7CE,EACAJ,IAAWC,EAEbG,EAAkBF,EAGlBE,EAAkBlU,GAAUmT,EAAQ,SAAUW,CAAM,EAGtDL,EAASN,EAASY,EAAeC,EAAqBE,EACpD,GAAMD,EAAO,EAAG1R,CAAE,CACtB,CAEA,SAAS4R,GAAchB,EAAS,CAC9B,OAAOA,EAAQ,SAAS,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,SAAW,SACxD,CAEA,SAASiB,GAAYb,EAAUP,EAAUjQ,EAAKsR,EAAaC,EAAI9jB,EAC1CijB,EAAUzjB,EAAMukB,EAAiB,CAGpDhB,EAAWA,GAAY,IAEvB,SAASiB,EAAUrB,EAASsB,EAAYhmB,EAAU,CAEhD,IAAIslB,EAAgB7Y,GAAWiY,EAAQ,QAAQ,EAC3CvX,EAAUoE,GAAUmT,EAAQ,SAAUY,CAAa,EACvD,GAAI,eAAgB/jB,GAAQ4L,EAC1B,OAAApL,EAAQikB,CAAU,EAAIzf,GAAYtB,GAAa,SAAS,EACjDjF,EAAS,EAIlB,IAAIolB,EAAa1B,GAAYgC,GAAchB,CAAO,EAElD,GAAIU,EAAY,CACd,IAAInlB,EAAMsG,GAAYrB,EAAY,EAClC,OAAAnD,EAAQikB,CAAU,EAAI/lB,EACfD,EAAS,CAClB,CAEA,IAAIwlB,EAAQrY,EAAU,EAAI,EAE1B6X,EAASN,EAASY,EAAenY,EAASA,EAAS,GACjDqY,EAAOQ,EAAYhmB,CAAQ,CAC/B,CAEA,IAAI0jB,EAAWniB,EAAK,UAChB0kB,EAAY,IAAI,IAEhBC,EAAW,EACXC,EAAW5B,EAAS,OAExB,SAAS6B,GAAmB,CACtB,EAAEF,IAAaC,GAAYL,GAC7BA,EAAgB,CAEpB,CAEAvB,EAAS,QAAQ,SAAU8B,EAAYL,EAAY,CAEjD,GAAIK,EAAW,KAAO7U,GAAU6U,EAAW,GAAG,EAAG,CAC/C,IAAIhnB,EAAMgnB,EAAW,SAAW,eAAiB,YACjD/R,EAAIjV,CAAG,EAAEgnB,EAAY,CAAC,IAAKR,CAAE,EAAG,SAAU5lB,EAAKQ,EAAK,CAClDsB,EAAQikB,CAAU,EAAI/lB,GAAOQ,EAC7B2lB,EAAiB,CACnB,CAAC,EACD,MACF,CAEA,IAAIhkB,EAAKikB,EAAW,SAAS,GACzBJ,EAAU,IAAI7jB,CAAE,GAClB+jB,IACAF,EAAU,IAAI7jB,CAAE,EAAE,KAAK,CAACikB,EAAYL,CAAU,CAAC,GAE/CC,EAAU,IAAI7jB,EAAI,CAAC,CAACikB,EAAYL,CAAU,CAAC,CAAC,CAEhD,CAAC,EAIDC,EAAU,QAAQ,SAAU5jB,EAAMD,EAAI,CACpC,IAAIR,EAAU,EAEd,SAAS0kB,GAAa,CAChB,EAAE1kB,EAAUS,EAAK,OACnBkkB,EAAQ,EAERH,EAAiB,CAErB,CACA,SAASG,GAAU,CACjB,IAAI1nB,EAAQwD,EAAKT,CAAO,EACpBykB,EAAaxnB,EAAM,CAAC,EACpBmnB,EAAannB,EAAM,CAAC,EAExB,GAAI+mB,EAAY,IAAIxjB,CAAE,EACpByiB,GAAUC,EAAUc,EAAY,IAAIxjB,CAAE,EAAGikB,EAAYtkB,EACnDikB,EAAYM,EAAYtB,EAAUtB,CAAQ,MACvC,CAEL,IAAI3T,EAASiB,GAAM,CAAC,EAAGqV,EAAW,SAAS,SAAS,CAAC,EAAGvB,CAAQ,EAChEuB,EAAW,SAAS,SAAWtW,EAAO,KACtCsW,EAAW,YAActW,EAAO,aAAe,CAAC,EAChDgW,EAAUM,EAAYL,EAAYM,CAAU,CAC9C,CACF,CACAC,EAAQ,CACV,CAAC,CACH,CAIA,IAAIC,GAAkB,EAKlBC,GAAY,iBAGZC,GAAe,cAEfC,GAAe,eAGfC,GAAuB,mBAIvBC,GAAa,aAEbC,GAAc,cAEdC,GAA4B,sBAEhC,SAASC,GAAcriB,EAAK,CAI1B,GAAI,CACF,OAAO,KAAK,MAAMA,CAAG,CACvB,MAAY,CAEV,OAAO,GAAAsiB,QAAS,MAAMtiB,CAAG,CAC3B,CACF,CAEA,SAASuiB,GAAkBC,EAAM,CAC/B,GAAI,CACF,OAAO,KAAK,UAAUA,CAAI,CAC5B,MAAY,CAEV,OAAO,GAAAF,QAAS,UAAUE,CAAI,CAChC,CACF,CAEA,SAASC,GAASpnB,EAAU,CAC1B,OAAO,SAAUqnB,EAAK,CACpB,IAAIC,EAAU,gBACVD,EAAI,QAAUA,EAAI,OAAO,QAC3BC,EAAUD,EAAI,OAAO,MAAM,MAAQA,EAAI,OAAO,MAAM,SAEtDrnB,EAASuG,GAAYR,GAAWuhB,EAASD,EAAI,IAAI,CAAC,CACpD,CACF,CASA,SAASE,GAAe7a,EAAUD,EAAYU,EAAS,CACrD,MAAO,CACL,KAAM+Z,GAAkBxa,CAAQ,EAChC,WAAAD,EACA,eAAgBU,EAAU,IAAM,IAChC,IAAKT,EAAS,IACd,GAAIA,EAAS,EACf,CACF,CAEA,SAAS8a,GAAeC,EAAc,CACpC,GAAI,CAACA,EACH,OAAO,KAET,IAAI/a,EAAWsa,GAAcS,EAAa,IAAI,EAC9C,OAAA/a,EAAS,WAAa+a,EAAa,WACnC/a,EAAS,QAAU+a,EAAa,iBAAmB,IACnD/a,EAAS,IAAM+a,EAAa,IACrB/a,CACT,CAIA,SAASgb,GAAU5gB,EAAK,CACtB,GAAI,CAACA,EACH,OAAOA,EAET,IAAIqI,EAAMrI,EAAI,YAAY,YAAY,GAAG,EACzC,OAAAA,EAAI,IAAMA,EAAI,YAAY,UAAU,EAAGqI,EAAM,CAAC,EAC9CrI,EAAI,KAAOA,EAAI,YAAY,UAAUqI,EAAM,CAAC,EAC5C,OAAOrI,EAAI,YACJA,CACT,CAKA,SAAS6gB,GAAaC,EAAMlgB,EAAMmgB,EAAQ7nB,EAAU,CAC9C6nB,EAIA7nB,EAHG4nB,EAEM,OAAOA,GAAS,SAChBA,EAEA5d,GAAa4d,EAAMlgB,CAAI,EAJvB4B,GAAW,CAAC,EAAE,EAAG,CAAC,KAAA5B,CAAI,CAAC,CAEnB,EAKVkgB,EAEM,OAAOA,GAAS,SACzBtd,GAAmBsd,EAAM,SAAUxd,EAAQ,CACzCpK,EAASqJ,GAASe,CAAM,CAAC,CAC3B,CAAC,EAEDpK,EAAS4nB,CAAI,EANb5nB,EAAS,EAAE,CASjB,CAEA,SAAS8nB,GAA4BhhB,EAAKvF,EAAMmhB,EAAK5O,EAAI,CACvD,IAAImC,EAAc,OAAO,KAAKnP,EAAI,cAAgB,CAAC,CAAC,EACpD,GAAI,CAACmP,EAAY,OACf,OAAOnC,GAAMA,EAAG,EAElB,IAAIlS,EAAU,EAEd,SAASK,GAAY,CACf,EAAEL,IAAYqU,EAAY,QAAUnC,GACtCA,EAAG,CAEP,CAEA,SAASiU,EAAgBjhB,EAAKO,EAAK,CACjC,IAAI2gB,EAASlhB,EAAI,aAAaO,CAAG,EAC7B4gB,EAASD,EAAO,OAChBjhB,EAAM2b,EAAI,YAAYiE,EAAY,EAAE,IAAIsB,CAAM,EAClDlhB,EAAI,UAAY,SAAU5G,EAAG,CAC3B6nB,EAAO,KAAO7nB,EAAE,OAAO,OAAO,KAC9B8B,EAAU,CACZ,CACF,CAEAgU,EAAY,QAAQ,SAAU5O,EAAK,CAC7B9F,EAAK,aAAeA,EAAK,aAC3BwmB,EAAgBjhB,EAAKO,CAAG,GAExBP,EAAI,aAAaO,CAAG,EAAE,KAAO,GAC7BpF,EAAU,EAEd,CAAC,CACH,CAMA,SAASimB,GAAuBnmB,EAAS8lB,EAAQ,CAC/C,OAAO,QAAQ,IAAI9lB,EAAQ,IAAI,SAAUmV,EAAK,CAC5C,GAAIA,EAAI,KAAOA,EAAI,IAAI,aAAc,CACnC,IAAIiR,EAAW,OAAO,KAAKjR,EAAI,IAAI,YAAY,EAC/C,OAAO,QAAQ,IAAIiR,EAAS,IAAI,SAAU9gB,EAAK,CAC7C,IAAI2gB,EAAS9Q,EAAI,IAAI,aAAa7P,CAAG,EACrC,GAAM,SAAU2gB,EAGhB,KAAIJ,EAAOI,EAAO,KACdtgB,EAAOsgB,EAAO,aAClB,OAAO,IAAI,QAAQ,SAAUnF,EAAS,CACpC8E,GAAaC,EAAMlgB,EAAMmgB,EAAQ,SAAUlhB,EAAM,CAC/CuQ,EAAI,IAAI,aAAa7P,CAAG,EAAI,OAAO,OACjCxG,GAAKmnB,EAAQ,CAAC,SAAU,cAAc,CAAC,EACvC,CAAC,KAAArhB,CAAI,CACP,EACAkc,EAAQ,CACV,CAAC,CACH,CAAC,EACH,CAAC,CAAC,CACJ,CACF,CAAC,CAAC,CACJ,CAEA,SAASuF,GAAY/a,EAAMxK,EAAO6f,EAAK,CAErC,IAAI2F,EAA0B,CAAC,EAC3BC,EAAW5F,EAAI,YAAYgE,EAAY,EACvC6B,EAAW7F,EAAI,YAAYiE,EAAY,EACvC6B,EAAiB9F,EAAI,YAAYkE,EAAoB,EACrDhS,EAAQvH,EAAK,OAEjB,SAASpL,GAAY,CACnB2S,IACKA,GACH6T,EAA0B,CAE9B,CAEA,SAASA,GAA4B,CAC9BJ,EAAwB,QAG7BA,EAAwB,QAAQ,SAAUJ,EAAQ,CAChD,IAAIS,EAAWF,EAAe,MAAM,WAAW,EAAE,MAC/C,YAAY,MACVP,EAAS,KAAMA,EAAS,WAAY,GAAO,EAAK,CAAC,EACrDS,EAAS,UAAY,SAAUvoB,EAAG,CAChC,IAAIyU,EAAQzU,EAAE,OAAO,OAChByU,GAEH2T,EAAS,OAAON,CAAM,CAE1B,CACF,CAAC,CACH,CAEA5a,EAAK,QAAQ,SAAU6F,EAAQ,CAC7B,IAAIyV,EAAQL,EAAS,MAAM,aAAa,EACpC/lB,EAAMM,EAAQ,KAAOqQ,EACzByV,EAAM,OAAOpmB,CAAG,EAAE,UAAY,SAAUpC,EAAG,CACzC,IAAIyoB,EAAMzoB,EAAE,OAAO,OACnB,GAAI,OAAOyoB,GAAQ,SACjB,OAAO3mB,EAAU,EAEnBqmB,EAAS,OAAOM,CAAG,EAEnB,IAAIC,EAASL,EAAe,MAAM,KAAK,EACpC,WAAW,YAAY,KAAKI,CAAG,CAAC,EAEnCC,EAAO,UAAY,SAAUC,EAAO,CAClC,IAAID,EAASC,EAAM,OAAO,OAC1B,GAAID,EAAQ,CACV,IAAIZ,EAASY,EAAO,MAAM,UAAU,MAAM,IAAI,EAAE,CAAC,EACjDR,EAAwB,KAAKJ,CAAM,EACnCO,EAAe,OAAOK,EAAO,UAAU,EACvCA,EAAO,SAAS,CAClB,MACE5mB,EAAU,CAEd,CACF,CACF,CAAC,CACH,CAEA,SAAS8mB,GAAsBC,EAAKC,EAAQC,EAAM,CAChD,GAAI,CACF,MAAO,CACL,IAAKF,EAAI,YAAYC,EAAQC,CAAI,CACnC,CACF,OAASjpB,EAAK,CACZ,MAAO,CACL,MAAOA,CACT,CACF,CACF,CAEA,IAAIkiB,GAAiB,IAAI3e,GAEzB,SAAS2lB,GAAYxF,EAAQ5c,EAAKxF,EAAM+S,EAAK0U,EAAKhpB,EAAU,CAW1D,QAVIukB,EAAWxd,EAAI,KACf2b,EACA0G,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEKxqB,EAAI,EAAGC,EAAMolB,EAAS,OAAQrlB,EAAIC,EAAKD,IAAK,CACnD,IAAI4H,EAAMyd,EAASrlB,CAAC,EAChB4H,EAAI,KAAO0K,GAAU1K,EAAI,GAAG,IAGhCA,EAAMyd,EAASrlB,CAAC,EAAIukB,GAAS3c,EAAKvF,EAAK,UAAWoiB,CAAM,EACpD7c,EAAI,OAAS,CAAC2iB,IAChBA,EAAe3iB,GAEnB,CAEA,GAAI2iB,EACF,OAAOzpB,EAASypB,CAAY,EAG9B,IAAIE,EAAmB,GACnBC,EAAgB,EAChB7nB,EAAU,IAAI,MAAMwiB,EAAS,MAAM,EACnCqB,EAAc,IAAI,IAClBiE,EAAsB,GACtB5F,EAAW3P,EAAI,MAAM,YAAc,OAAS,SAEhDgQ,GAAsBC,EAAUN,EAAU,SAAUhkB,EAAK,CACvD,GAAIA,EACF,OAAOD,EAASC,CAAG,EAErB6pB,EAAiB,CACnB,CAAC,EAED,SAASA,GAAmB,CAE1B,IAAIb,EAAS,CACXxC,GAAWC,GACXC,GACAG,GAAaF,GACbC,EACF,EACIkD,EAAYhB,GAAsBC,EAAKC,EAAQ,WAAW,EAC9D,GAAIc,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjCrH,EAAMqH,EAAU,IAChBrH,EAAI,QAAU0E,GAASpnB,CAAQ,EAC/B0iB,EAAI,UAAY0E,GAASpnB,CAAQ,EACjC0iB,EAAI,WAAavQ,EACjBiX,EAAW1G,EAAI,YAAY+D,EAAS,EACpC4C,EAAa3G,EAAI,YAAYgE,EAAY,EACzC4C,EAAc5G,EAAI,YAAYiE,EAAY,EAC1C4C,EAAoB7G,EAAI,YAAYkE,EAAoB,EACxD4C,EAAY9G,EAAI,YAAYmE,EAAU,EAEtC2C,EAAU,IAAI3C,EAAU,EAAE,UAAY,SAAU1mB,EAAG,CACjDupB,EAAUvpB,EAAE,OAAO,OACnB6pB,EAAsB,CACxB,EAEAC,GAAkB,SAAUhqB,EAAK,CAC/B,GAAIA,EACF,OAAA4pB,EAAsB,GACf7pB,EAASC,CAAG,EAErBiqB,GAAkB,CACpB,CAAC,CACH,CAEA,SAASC,GAAqB,CAC5BR,EAAmB,GACnBK,EAAsB,CACxB,CAEA,SAASI,GAAiB,CACxBzE,GAAYhC,EAAO,WAAYY,EAAUjQ,EAAKsR,EAClClD,EAAK3gB,EAASijB,GAAUzjB,EAAM4oB,CAAkB,CAC9D,CAEA,SAASH,GAAwB,CAC3B,CAACN,GAAW,CAACC,IAKjBD,EAAQ,UAAYE,EACpBJ,EAAU,IAAIE,CAAO,EACvB,CAEA,SAASQ,IAAoB,CAE3B,GAAI,CAAC3F,EAAS,OACZ,OAGF,IAAI8F,EAAa,EAEjB,SAASpoB,GAAY,CACf,EAAEooB,IAAe9F,EAAS,QAC5B6F,EAAe,CAEnB,CAEA,SAASE,EAAaxB,EAAO,CAC3B,IAAIpc,GAAW8a,GAAesB,EAAM,OAAO,MAAM,EAE7Cpc,IACFkZ,EAAY,IAAIlZ,GAAS,GAAIA,EAAQ,EAEvCzK,EAAU,CACZ,CAEA,QAAS/C,GAAI,EAAGC,EAAMolB,EAAS,OAAQrlB,GAAIC,EAAKD,KAAK,CACnD,IAAIwlB,EAAUH,EAASrlB,EAAC,EACxB,GAAIwlB,EAAQ,KAAOlT,GAAUkT,EAAQ,GAAG,EAAG,CACzCziB,EAAU,EACV,QACF,CACA,IAAI8E,EAAMqiB,EAAS,IAAI1E,EAAQ,SAAS,EAAE,EAC1C3d,EAAI,UAAYujB,CAClB,CACF,CAEA,SAASnY,GAAW,CACd0X,IAIJ1H,GAAe,OAAO7N,EAAI,MAAM,IAAI,EACpCtU,EAAS,KAAM+B,CAAO,EACxB,CAEA,SAASwoB,EAAiBtC,EAAQjoB,EAAU,CAE1C,IAAI+G,EAAMuiB,EAAY,IAAIrB,CAAM,EAChClhB,EAAI,UAAY,SAAU5G,GAAG,CAC3B,GAAKA,GAAE,OAAO,OAOZH,EAAS,MAPW,CACpB,IAAIC,EAAMsG,GAAYF,GACpB,uCACA4hB,CAAM,EACRhoB,EAAI,OAAS,IACbD,EAASC,CAAG,CACd,CAGF,CACF,CAEA,SAASgqB,GAAkBO,EAAQ,CAGjC,IAAIC,EAAU,CAAC,EAWf,GAVAlG,EAAS,QAAQ,SAAUG,EAAS,CAC9BA,EAAQ,MAAQA,EAAQ,KAAK,cAC/B,OAAO,KAAKA,EAAQ,KAAK,YAAY,EAAE,QAAQ,SAAUgG,EAAU,CACjE,IAAIrjB,EAAMqd,EAAQ,KAAK,aAAagG,CAAQ,EACxCrjB,EAAI,MACNojB,EAAQ,KAAKpjB,EAAI,MAAM,CAE3B,CAAC,CAEL,CAAC,EACG,CAACojB,EAAQ,OACX,OAAOD,EAAO,EAEhB,IAAI5oB,EAAU,EACV3B,GAEJ,SAASgC,GAAY,CACf,EAAEL,IAAY6oB,EAAQ,QACxBD,EAAOvqB,EAAG,CAEd,CACAwqB,EAAQ,QAAQ,SAAUxC,EAAQ,CAChCsC,EAAiBtC,EAAQ,SAAU0C,EAAQ,CACrCA,GAAU,CAAC1qB,KACbA,GAAM0qB,GAER1oB,EAAU,CACZ,CAAC,CACH,CAAC,CACH,CAEA,SAAS+iB,GAASN,EAASY,EAAeC,EAAqBE,GAC7CmF,EAAUpF,EAAOQ,EAAYhmB,EAAU,CAEvD0kB,EAAQ,SAAS,WAAaY,EAC9BZ,EAAQ,SAAS,QAAUa,EAE3B,IAAIze,GAAM4d,EAAQ,KAClB5d,GAAI,IAAM4d,EAAQ,SAAS,GAC3B5d,GAAI,KAAO4d,EAAQ,SAAS,IAExBe,KACF3e,GAAI,SAAW,IAGjB,IAAI+jB,GAAiB/jB,GAAI,cACvB,OAAO,KAAKA,GAAI,YAAY,EAAE,OAChC,GAAI+jB,GACF,OAAOC,EAAiBpG,EAASY,EAAeC,EAC9CqF,EAAU5E,EAAYhmB,CAAQ,EAGlC4pB,GAAiBpE,EACjBwE,EAAsB,EAEtBe,GAAUrG,EAASY,EAAeC,EAChCqF,EAAU5E,EAAYhmB,CAAQ,CAClC,CAEA,SAAS+qB,GAAUrG,EAASY,EAAeC,EACxBqF,GAAU5E,EAAYhmB,EAAU,CAEjD,IAAI8G,EAAM4d,EAAQ,KACdhY,EAAWgY,EAAQ,SAEvB5d,EAAI,YAAc4F,EAAS,GAAK,KAAOA,EAAS,IAChD,OAAO5F,EAAI,IACX,OAAOA,EAAI,KAEX,SAASkkB,GAAY7qB,GAAG,CACtB,IAAI8qB,GAAevG,EAAQ,aAAe,CAAC,EAEvCkG,IAAYtW,EAAI,kBAClB2W,GAAeA,GAAa,OAAO/c,GAAYwW,EAAQ,QAAQ,CAAC,GAG9DuG,IAAgBA,GAAa,QAC/B7C,GAAY6C,GAAcvG,EAAQ,SAAS,GAAIhC,CAAG,EAGpDhW,EAAS,IAAMvM,GAAE,OAAO,OAGxB,IAAI+qB,GAAkB3D,GAAe7a,EAAU4Y,EAC7CC,CAAmB,EACjB4F,GAAc/B,EAAS,IAAI8B,EAAe,EAC9CC,GAAY,UAAYC,EAC1B,CAEA,SAASC,GAAiBlrB,GAAG,CAE3BA,GAAE,eAAe,EACjBA,GAAE,gBAAgB,EAClB,IAAIwoB,GAAQU,EAAW,MAAM,aAAa,EACtCiC,GAAY3C,GAAM,OAAO7hB,EAAI,WAAW,EAC5CwkB,GAAU,UAAY,SAAUnrB,GAAG,CACjC,IAAIorB,GAASlC,EAAW,IAAIviB,EAAK3G,GAAE,OAAO,MAAM,EAChDorB,GAAO,UAAYP,EACrB,CACF,CAEA,SAASI,IAAmB,CAC1BrpB,EAAQikB,CAAU,EAAI,CACpB,GAAI,GACJ,GAAItZ,EAAS,GACb,IAAKA,EAAS,GAChB,EACAkZ,EAAY,IAAIlB,EAAQ,SAAS,GAAIA,EAAQ,QAAQ,EACrD8G,EAAyB9G,EAAShY,EAAS,IAAK1M,CAAQ,CAC1D,CAEA,IAAIurB,GAASlC,EAAW,IAAIviB,CAAG,EAE/BykB,GAAO,UAAYP,GACnBO,GAAO,QAAUF,EACnB,CAEA,SAASP,EAAiBpG,EAASY,EAAeC,EACxBqF,GAAU5E,EAAYhmB,EAAU,CAGxD,IAAI8G,EAAM4d,EAAQ,KAEd9iB,EAAU,EACVqU,GAAc,OAAO,KAAKnP,EAAI,YAAY,EAE9C,SAAS2kB,IAAiB,CACpB7pB,IAAYqU,GAAY,QAC1B8U,GAAUrG,EAASY,EAAeC,EAChCqF,GAAU5E,EAAYhmB,CAAQ,CAEpC,CAEA,SAAS0rB,IAAkB,CACzB9pB,IACA6pB,GAAe,CACjB,CAEAxV,GAAY,QAAQ,SAAU1T,GAAK,CACjC,IAAI8E,GAAMqd,EAAQ,KAAK,aAAaniB,EAAG,EACvC,GAAK8E,GAAI,KAOPzF,IACA6pB,GAAe,MARF,CACb,IAAI9kB,GAAOU,GAAI,KACf,OAAOA,GAAI,KACXA,GAAI,OAAS,SAASie,EAAe,EAAE,EACvC,IAAI2C,GAAS5gB,GAAI,OACjBskB,EAAe1D,GAAQthB,GAAM+kB,EAAe,CAC9C,CAIF,CAAC,CACH,CAIA,SAASF,EAAyB9G,EAASkE,EAAK5oB,EAAU,CAExD,IAAI4rB,GAAY,EACZC,EAAY,OAAO,KAAKnH,EAAQ,KAAK,cAAgB,CAAC,CAAC,EAE3D,GAAI,CAACmH,EAAU,OACb,OAAO7rB,EAAS,EAGlB,SAASiC,GAAY,CACf,EAAE2pB,KAAcC,EAAU,QAC5B7rB,EAAS,CAEb,CAEA,SAAS8rB,EAAIzkB,GAAK,CAChB,IAAI4gB,GAASvD,EAAQ,KAAK,aAAard,EAAG,EAAE,OACxCN,GAAMwiB,EAAkB,IAAI,CAC9B,IAAAX,EACA,UAAWX,GAAS,KAAOW,CAC7B,CAAC,EAED7hB,GAAI,UAAY9E,EAChB8E,GAAI,QAAU,SAAU5G,GAAG,CAIzBA,GAAE,eAAe,EACjBA,GAAE,gBAAgB,EAClB8B,EAAU,CACZ,CACF,CACA,QAAS/C,EAAI,EAAGA,EAAI2sB,EAAU,OAAQ3sB,IACpC4sB,EAAID,EAAU3sB,CAAC,CAAC,CAEpB,CAEA,SAASysB,EAAe1D,EAAQthB,EAAM3G,EAAU,CAG9C,IAAIsrB,GAAYhC,EAAY,MAAMrB,CAAM,EACxCqD,GAAU,UAAY,SAAUnrB,EAAG,CACjC,IAAIyU,EAAQzU,EAAE,OAAO,OACrB,GAAIyU,EACF,OAAO5U,EAAS,EAElB,IAAI+rB,EAAS,CACX,OAAA9D,EACA,KAAMthB,CACR,EACI4kB,EAASjC,EAAY,IAAIyC,CAAM,EACnCR,EAAO,UAAYvrB,CACrB,CACF,CACF,CAMA,SAASgsB,GAAiBC,EAAaC,EAAUC,EAAYC,EAAWC,EAAS,CAE3ED,IAAc,KAChBA,EAAY,KAQd,IAAIE,EAAY,OAAOL,EAAY,QAAW,YAC5C,OAAOA,EAAY,YAAe,YAClCG,EAAY,GAAK,CAACD,EAEhBI,EACAC,EACAC,EAEJ,SAASC,EAASvsB,EAAG,CACnBqsB,EAAcrsB,EAAE,OAAO,OACnBosB,GACFF,EAAQE,EAAWC,EAAaC,CAAY,CAEhD,CAEA,SAASE,EAAaxsB,EAAG,CACvBosB,EAAYpsB,EAAE,OAAO,OACjBqsB,GACFH,EAAQE,EAAWC,EAAaC,CAAY,CAEhD,CAEA,SAASG,GAAuB,CAC9B,GAAI,CAACL,EAAU,OACb,OAAOF,EAAQ,EAGjB,IAAIQ,EAAUN,EAAUA,EAAU,OAAS,CAAC,EACxCO,EACJ,GAAIZ,GAAYA,EAAS,MACvB,GAAI,CACFY,EAAc,YAAY,MAAMD,EAASX,EAAS,MAChD,GAAMA,EAAS,SAAS,CAC5B,OAAS/rB,EAAG,CACV,GAAIA,EAAE,OAAS,aAAeA,EAAE,OAAS,EACvC,OAAOksB,EAAQ,CAEnB,MAEAS,EAAc,YAAY,WAAWD,EAAS,EAAI,EAEpDX,EAAWY,EACXP,EAAY,KACZC,EAAc,KACdP,EAAY,OAAOC,EAAUE,CAAS,EAAE,UAAYM,EACpDT,EAAY,WAAWC,EAAUE,CAAS,EAAE,UAAYO,CAC1D,CAEA,SAASI,EAAS5sB,EAAG,CACnB,IAAI0oB,EAAS1oB,EAAE,OAAO,OACtB,GAAI,CAAC0oB,EACH,OAAOwD,EAAQ,EAGjBA,EAAQ,CAACxD,EAAO,GAAG,EAAG,CAACA,EAAO,KAAK,EAAGA,CAAM,CAC9C,CAEIyD,GACFG,EAAe,CAAC,SAAYG,CAAoB,EAChDX,EAAY,OAAOC,EAAUE,CAAS,EAAE,UAAYM,EACpDT,EAAY,WAAWC,EAAUE,CAAS,EAAE,UAAYO,GAC/CR,EACTF,EAAY,WAAWC,EAAU,MAAM,EAAE,UAAYa,EAErDd,EAAY,WAAWC,CAAQ,EAAE,UAAYa,CAEjD,CAGA,SAASC,GAAOf,EAAaC,EAAUe,EAAW,CAChD,GAAI,OAAOhB,EAAY,QAAW,WAAY,CAE5CA,EAAY,OAAOC,CAAQ,EAAE,UAAYe,EACzC,MACF,CAEA,IAAInkB,EAAS,CAAC,EAEd,SAASikB,EAAS5sB,EAAG,CACnB,IAAI0oB,EAAS1oB,EAAE,OAAO,OAClB0oB,GACF/f,EAAO,KAAK+f,EAAO,KAAK,EACxBA,EAAO,SAAS,GAEhBoE,EAAU,CACR,OAAQ,CACN,OAAQnkB,CACV,CACF,CAAC,CAEL,CAEAmjB,EAAY,WAAWC,CAAQ,EAAE,UAAYa,CAC/C,CAEA,SAASG,GAAYllB,EAAMohB,EAAUiD,EAAS,CAE5C,IAAIG,EAAc,IAAI,MAAMxkB,EAAK,MAAM,EACnC4M,EAAQ,EACZ5M,EAAK,QAAQ,SAAUzF,EAAKomB,EAAO,CACjCS,EAAS,IAAI7mB,CAAG,EAAE,UAAY,SAAUumB,EAAO,CACzCA,EAAM,OAAO,OACf0D,EAAY7D,CAAK,EAAIG,EAAM,OAAO,OAElC0D,EAAY7D,CAAK,EAAI,CAAC,IAAApmB,EAAK,MAAO,WAAW,EAE/CqS,IACIA,IAAU5M,EAAK,QACjBqkB,EAAQrkB,EAAMwkB,EAAa,CAAC,CAAC,CAEjC,CACF,CAAC,CACH,CAEA,SAASW,GAAe/hB,EAAOC,EAAK+hB,EAAc7qB,EAAK4pB,EAAY,CACjE,GAAI,CACF,GAAI/gB,GAASC,EACX,OAAI8gB,EACK,YAAY,MAAM9gB,EAAKD,EAAO,CAACgiB,EAAc,EAAK,EAElD,YAAY,MAAMhiB,EAAOC,EAAK,GAAO,CAAC+hB,CAAY,EAEtD,GAAIhiB,EACT,OAAI+gB,EACK,YAAY,WAAW/gB,CAAK,EAE5B,YAAY,WAAWA,CAAK,EAEhC,GAAIC,EACT,OAAI8gB,EACK,YAAY,WAAW9gB,EAAK,CAAC+hB,CAAY,EAEzC,YAAY,WAAW/hB,EAAK,CAAC+hB,CAAY,EAE7C,GAAI7qB,EACT,OAAO,YAAY,KAAKA,CAAG,CAE/B,OAASpC,EAAG,CACV,MAAO,CAAC,MAAOA,CAAC,CAClB,CACA,OAAO,IACT,CAEA,SAASktB,GAAW9rB,EAAMynB,EAAKhpB,EAAU,CACvC,IAAIoL,EAAQ,aAAc7J,EAAOA,EAAK,SAAW,GAC7C8J,EAAM,WAAY9J,EAAOA,EAAK,OAAS,GACvCgB,EAAM,QAAShB,EAAOA,EAAK,IAAM,GACjCyG,EAAO,SAAUzG,EAAOA,EAAK,KAAO,GACpC0e,EAAO1e,EAAK,MAAQ,EACpB2e,EAAQ,OAAO3e,EAAK,OAAU,SAAWA,EAAK,MAAQ,GACtD6rB,EAAe7rB,EAAK,gBAAkB,GAEtC2qB,EACAoB,EACJ,GAAI,CAACtlB,IACHkkB,EAAWiB,GAAe/hB,EAAOC,EAAK+hB,EAAc7qB,EAAKhB,EAAK,UAAU,EACxE+rB,EAAgBpB,GAAYA,EAAS,MACjCoB,GACF,EAAEA,EAAc,OAAS,aAAeA,EAAc,OAAS,IAG/D,OAAOttB,EAASuG,GAAYR,GAC1BunB,EAAc,KAAMA,EAAc,OAAO,CAAC,EAIhD,IAAIrE,EAAS,CAACxC,GAAWC,GAAcG,EAAU,EAE7CtlB,EAAK,aACP0nB,EAAO,KAAKtC,EAAY,EAE1B,IAAIoD,EAAYhB,GAAsBC,EAAKC,EAAQ,UAAU,EAC7D,GAAIc,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjC,IAAIrH,EAAMqH,EAAU,IACpBrH,EAAI,WAAa6K,GACjB7K,EAAI,QAAU0E,GAASpnB,CAAQ,EAC/B,IAAIopB,EAAW1G,EAAI,YAAY+D,EAAS,EACpC6B,EAAW5F,EAAI,YAAYgE,EAAY,EACvC8C,EAAY9G,EAAI,YAAYmE,EAAU,EACtC2G,EAAgBlF,EAAS,MAAM,aAAa,EAC5CvmB,EAAU,CAAC,EACX0rB,EACAC,EAEJlE,EAAU,IAAI3C,EAAU,EAAE,UAAY,SAAU1mB,EAAG,CACjDstB,EAAWttB,EAAE,OAAO,OAAO,QAC7B,EAGIoB,EAAK,aAEP+mB,EAAS,cAAc,KAAM,MAAM,EAAE,UAAYnoB,GAAK,CACpD,IAAI0oB,EAAS1oB,EAAE,OAAO,OAClB0oB,GAAUA,EAAO,MACnB6E,EAAY7E,EAAO,IAEvB,GAKF,SAAS8E,EAAuBjhB,EAAUwK,EAAKoO,GAAe,CAC5D,IAAI/iB,GAAMmK,EAAS,GAAK,KAAO4Y,GAC/BkI,EAAc,IAAIjrB,EAAG,EAAE,UAAa,SAAkBpC,EAAG,CAEvD,GADA+W,EAAI,IAAMwQ,GAAUvnB,EAAE,OAAO,MAAM,GAAK,CAAC,EACrCoB,EAAK,UAAW,CAClB,IAAIyM,EAAYF,GAAiBpB,CAAQ,EACrCsB,EAAU,SACZkJ,EAAI,IAAI,WAAalJ,EAEzB,CACA8Z,GAA4B5Q,EAAI,IAAK3V,EAAMmhB,CAAG,CAChD,CACF,CAEA,SAASkL,EAAatI,EAAe5Y,EAAU,CAC7C,IAAIwK,GAAM,CACR,GAAIxK,EAAS,GACb,IAAKA,EAAS,GACd,MAAO,CACL,IAAK4Y,CACP,CACF,EACInY,GAAUT,EAAS,QACnBS,GACEnF,IACFjG,EAAQ,KAAKmV,EAAG,EAEhBA,GAAI,MAAM,QAAU,GACpBA,GAAI,IAAM,MAEH+I,KAAU,IACnBle,EAAQ,KAAKmV,EAAG,EACZ3V,EAAK,cACPosB,EAAuBjhB,EAAUwK,GAAKoO,CAAa,EAGzD,CAEA,SAAS3iB,EAAakrB,EAAa,CACjC,QAAS3uB,EAAI,EAAGC,GAAM0uB,EAAY,OAAQ3uB,EAAIC,IACxC4C,EAAQ,SAAWme,EAD0BhhB,IAAK,CAItD,IAAI4uB,GAAaD,EAAY3uB,CAAC,EAC9B,GAAI4uB,GAAW,OAAS9lB,EAAM,CAE5BjG,EAAQ,KAAK+rB,EAAU,EACvB,QACF,CACA,IAAIphB,GAAW8a,GAAesG,EAAU,EACpCxI,EAAgB5Y,GAAS,WAC7BkhB,EAAatI,EAAe5Y,EAAQ,CACtC,CACF,CAEA,SAAS2f,EAAQ0B,EAAWF,EAAahF,GAAQ,CAC1CA,KAGLlmB,EAAakrB,CAAW,EACpB9rB,EAAQ,OAASme,GACnB2I,GAAO,SAAS,EAEpB,CAEA,SAAS6D,EAASvsB,EAAG,CACnB,IAAI2I,EAAS3I,EAAE,OAAO,OAClBoB,EAAK,aACPuH,EAASA,EAAO,QAAQ,GAE1BnG,EAAamG,CAAM,CACrB,CAEA,SAASklB,GAAiB,CACxB,IAAIC,EAAY,CACd,WAAYR,EACZ,OAAQlsB,EAAK,KACb,KAAMQ,CACR,EAGIR,EAAK,YAAcmsB,IAAc,SACnCO,EAAU,WAAaP,GAEzB1tB,EAAS,KAAMiuB,CAAS,CAC1B,CAEA,SAASV,IAAgB,CACnBhsB,EAAK,YACP2mB,GAAuBnmB,EAASR,EAAK,MAAM,EAAE,KAAKysB,CAAc,EAEhEA,EAAe,CAEnB,CAGA,GAAI,EAAAV,GAAiBpN,IAAU,GAG/B,IAAIlY,EACF,OAAOklB,GAAYllB,EAAMohB,EAAUiD,CAAO,EAE5C,GAAInM,IAAU,GACZ,OAAO8M,GAAO5D,EAAU8C,EAAUQ,CAAQ,EAI5CV,GAAiB5C,EAAU8C,EAAU3qB,EAAK,WAAY2e,EAAQD,EAAMoM,CAAO,EAC7E,CAEA,SAAS6B,GAAUxL,EAAK5O,EAAI,CAC1B,IAAI6U,EAAQjG,EAAI,YAAY+D,EAAS,EAAE,MAAM,gBAAgB,EAC7DkC,EAAM,MAAM,YAAY,KAAK,GAAG,CAAC,EAAE,UAAY,SAAUxoB,EAAG,CAC1D2T,EAAG3T,EAAE,OAAO,MAAM,CACpB,CACF,CAIA,IAAIguB,GAAU,GACVve,GAAQ,CAAC,EAEb,SAASwe,GAAQ/uB,EAAKY,EAAKQ,EAAK4R,EAAS,CACvC,GAAI,CACFhT,EAAIY,EAAKQ,CAAG,CACd,OAASR,EAAK,CAIZoS,EAAQ,KAAK,QAASpS,CAAG,CAC3B,CACF,CAEA,SAASouB,IAAY,CACfF,IAAW,CAACve,GAAM,SAGtBue,GAAU,GACVve,GAAM,MAAM,EAAE,EAChB,CAEA,SAAS0e,GAAYC,EAAQvuB,EAAUqS,EAAS,CAC9CzC,GAAM,KAAK,UAAqB,CAC9B2e,EAAO,SAAqBtuB,EAAKQ,EAAK,CACpC2tB,GAAQpuB,EAAUC,EAAKQ,EAAK4R,CAAO,EACnC8b,GAAU,GACV7qB,GAAS,UAAmB,CAC1B+qB,GAAUhc,CAAO,CACnB,CAAC,CACH,CAAC,CACH,CAAC,EACDgc,GAAU,CACZ,CAEA,SAASG,GAAQjtB,EAAM+S,EAAK5Q,EAAQslB,EAAK,CAGvC,GAFAznB,EAAOvC,GAAMuC,CAAI,EAEbA,EAAK,WAAY,CACnB,IAAIa,EAAKsB,EAAS,IAAM8I,GAAK,EAC7B,OAAA2V,GAAe,YAAYze,EAAQtB,EAAIkS,EAAK/S,CAAI,EAChD4gB,GAAe,OAAOze,CAAM,EACrB,CACL,OAAQ,UAAY,CAClBye,GAAe,eAAeze,EAAQtB,CAAE,CAC1C,CACF,CACF,CAEA,IAAIqsB,EAASltB,EAAK,SAAW,IAAI,IAAIA,EAAK,OAAO,EAEjDA,EAAK,MAAQA,EAAK,OAAS,EAC3B,IAAIwQ,EAAUxQ,EAAK,MAEf2e,EAAQ,UAAW3e,EAAOA,EAAK,MAAQ,GACvC2e,IAAU,IACZA,EAAQ,GAGV,IAAIne,EAAU,CAAC,EACX2sB,EAAa,EACb7nB,EAASI,GAAa1F,CAAI,EAC1BotB,EAAmB,IAAI,IAEvBjM,EACA2G,EACAD,EACAoE,EAEJ,SAASnB,EAAQ0B,EAAWF,EAAahF,EAAQ,CAC/C,GAAI,CAACA,GAAU,CAACkF,EAAU,OACxB,OAGF,IAAIa,EAAc,IAAI,MAAMb,EAAU,MAAM,EACxCc,GAAY,IAAI,MAAMd,EAAU,MAAM,EAE1C,SAASe,EAA6BpiB,GAAUqiB,GAAY,CAC1D,IAAI5nB,EAAS5F,EAAK,cAAcwtB,GAAYriB,GAAUnL,CAAI,EAC1DwQ,EAAU5K,EAAO,IAAMuF,GAAS,IAEhC,IAAIsiB,EAAWnoB,EAAOM,CAAM,EAC5B,OAAI,OAAO6nB,GAAa,SACf,QAAQ,OAAOA,CAAQ,EAG3BA,GAGLN,IACIntB,EAAK,aACPQ,EAAQ,KAAKoF,CAAM,EAIjB5F,EAAK,aAAeA,EAAK,aACpB,IAAI,QAAQ,SAAUshB,EAAS,CACpCiF,GAA4BiH,GAAYxtB,EAAMmhB,EAAK,UAAY,CAC7DwF,GAAuB,CAAC/gB,CAAM,EAAG5F,EAAK,MAAM,EAAE,KAAK,UAAY,CAC7DshB,EAAQ1b,CAAM,CAChB,CAAC,CACH,CAAC,CACH,CAAC,EAEM,QAAQ,QAAQA,CAAM,GAjBtB,QAAQ,QAAQ,CAmB3B,CAEA,SAAS8nB,GAAc,CAErB,QADInY,GAAW,CAAC,EACP5X,GAAI,EAAGC,EAAMyvB,EAAY,OAAQ1vB,GAAIC,GACxCuvB,IAAexO,EAD8BhhB,KAAK,CAItD,IAAI6vB,EAAaH,EAAY1vB,EAAC,EAC9B,GAAK6vB,EAGL,KAAIriB,EAAWmiB,GAAU3vB,EAAC,EAC1B4X,GAAS,KAAKgY,EAA6BpiB,EAAUqiB,CAAU,CAAC,EAClE,CAEA,QAAQ,IAAIjY,EAAQ,EAAE,KAAK,SAAU0X,EAAS,CAC5C,QAAStvB,EAAI,EAAGC,EAAMqvB,EAAQ,OAAQtvB,EAAIC,EAAKD,IACzCsvB,EAAQtvB,CAAC,GACXqC,EAAK,SAASitB,EAAQtvB,CAAC,CAAC,CAG9B,CAAC,EAAE,MAAMqC,EAAK,QAAQ,EAElBmtB,IAAexO,GACjB2I,EAAO,SAAS,CAEpB,CAKA,IAAIjnB,GAAU,EACdisB,EAAY,QAAQ,SAAUhvB,GAAOK,GAAG,CACtC,IAAI4H,EAAM4gB,GAAU7oB,EAAK,EACrB+pB,EAAMmF,EAAU7uB,EAAC,EACrBgwB,EAA2BpoB,EAAK8hB,EAAK,SAAUlc,EAAUqiB,EAAY,CACnEF,GAAU3vB,EAAC,EAAIwN,EACfkiB,EAAY1vB,EAAC,EAAI6vB,EACb,EAAEntB,KAAYmsB,EAAU,QAC1BkB,EAAY,CAEhB,CAAC,CACH,CAAC,CACH,CAEA,SAASE,EAAcroB,EAAK8hB,EAAKlc,EAAUoH,EAAI,CAC7C,GAAIpH,EAAS,MAAQkc,EAEnB,OAAO9U,EAAG,EAGZ,GAAIpH,EAAS,aAAe5F,EAAI,KAE9B,OAAOgN,EAAGpH,EAAU5F,CAAG,EAIzB,IAAIsoB,GAAWtoB,EAAI,IAAM,KAAO4F,EAAS,WACrC3F,EAAMymB,EAAc,IAAI4B,EAAQ,EACpCroB,EAAI,UAAY,SAAU5G,EAAG,CAC3B2T,EAAGpH,EAAUgb,GAAUvnB,EAAE,OAAO,MAAM,CAAC,CACzC,CACF,CAEA,SAAS+uB,EAA2BpoB,EAAK8hB,EAAK9U,EAAI,CAChD,GAAI2a,GAAU,CAACA,EAAO,IAAI3nB,EAAI,GAAG,EAC/B,OAAOgN,EAAG,EAGZ,IAAIpH,EAAWiiB,EAAiB,IAAI7nB,EAAI,GAAG,EAC3C,GAAI4F,EACF,OAAOyiB,EAAcroB,EAAK8hB,EAAKlc,EAAUoH,CAAE,EAG7CsV,EAAS,IAAItiB,EAAI,GAAG,EAAE,UAAY,SAAU3G,GAAG,CAC7CuM,EAAW8a,GAAernB,GAAE,OAAO,MAAM,EACzCwuB,EAAiB,IAAI7nB,EAAI,IAAK4F,CAAQ,EACtCyiB,EAAcroB,EAAK8hB,EAAKlc,EAAUoH,CAAE,CACtC,CACF,CAEA,SAAS0W,GAAS,CAChBjpB,EAAK,SAAS,KAAM,CAClB,QAAAQ,EACA,SAAUgQ,CACZ,CAAC,CACH,CAEA,SAASwb,GAAgB,CACnB,CAAChsB,EAAK,YAAcA,EAAK,YAG3B2mB,GAAuBnmB,CAAO,EAAE,KAAKyoB,CAAM,EAE3CA,EAAO,CAEX,CAEA,IAAI6E,EAAe,CAAC5I,GAAWC,EAAY,EACvCnlB,EAAK,aACP8tB,EAAa,KAAK1I,EAAY,EAEhC,IAAIoD,EAAYhB,GAAsBC,EAAKqG,EAAc,UAAU,EACnE,GAAItF,EAAU,MACZ,OAAOxoB,EAAK,SAASwoB,EAAU,KAAK,EAEtCrH,EAAMqH,EAAU,IAChBrH,EAAI,QAAU0E,GAAS7lB,EAAK,QAAQ,EACpCmhB,EAAI,WAAa6K,EAEjBlE,EAAa3G,EAAI,YAAYgE,EAAY,EACzC0C,EAAW1G,EAAI,YAAY+D,EAAS,EACpC+G,EAAgBnE,EAAW,MAAM,aAAa,EAE9C,IAAI6C,EAAY3qB,EAAK,OAAS,CAACA,EAAK,WAClC,YAAY,WAAWA,EAAK,MAAO,EAAI,EAAI,KAE7CyqB,GAAiB3C,EAAY6C,EAAU3qB,EAAK,WAAY2e,EAAOmM,CAAO,CACxE,CAEA,IAAIiD,GAAY,IAAI,IAChBC,GACAC,GAAc,IAAI,IAEtB,SAASC,GAASluB,EAAMvB,EAAU,CAChC,IAAIsU,EAAM,KAEVga,GAAY,SAAUoB,EAAc,CAClC1X,GAAK1D,EAAK/S,EAAMmuB,CAAY,CAC9B,EAAG1vB,EAAUsU,EAAI,WAAW,CAC9B,CAEA,SAAS0D,GAAK1D,EAAK/S,EAAMvB,EAAU,CAEjC,IAAI0D,EAASnC,EAAK,KAEdynB,EAAM,KACN2G,EAAwB,KAC5Brb,EAAI,MAAQ,KAEZ,SAASsb,EAAoB5vB,EAAU,CACrC,OAAO,SAAU6E,EAAOzE,EAAQ,CAC1ByE,GAASA,aAAiB,OAAS,CAACA,EAAM,QACxC8qB,IACF9qB,EAAM,OAAS8qB,GAInB3vB,EAAS6E,EAAOzE,CAAM,CACxB,CACF,CAGA,SAASyvB,EAAavuB,EAAI,CACxB,IAAI8nB,EAAW9nB,EAAG,kBAAkBmlB,GAAW,CAAC,QAAU,IAAI,CAAC,EAC/DnlB,EAAG,kBAAkBolB,GAAc,CAAC,cAAe,EAAI,CAAC,EACrD,YAAY,cAAe,cAAe,CAAC,OAAQ,EAAI,CAAC,EAC3DplB,EAAG,kBAAkBqlB,GAAc,CAAC,QAAS,QAAQ,CAAC,EACtDrlB,EAAG,kBAAkBulB,GAAY,CAAC,QAAS,KAAM,cAAe,EAAK,CAAC,EACtEvlB,EAAG,kBAAkBylB,EAAyB,EAG9CqC,EAAS,YAAY,iBAAkB,iBAAkB,CAAC,OAAS,EAAK,CAAC,EAGzE9nB,EAAG,kBAAkBwlB,GAAa,CAAC,QAAS,KAAK,CAAC,EAGlD,IAAI0B,EAAiBlnB,EAAG,kBAAkBslB,GACxC,CAAC,cAAe,EAAI,CAAC,EACvB4B,EAAe,YAAY,MAAO,KAAK,EACvCA,EAAe,YAAY,YAAa,YAAa,CAAC,OAAQ,EAAI,CAAC,CACrE,CAKA,SAASsH,EAAuBpN,EAAK1iB,EAAU,CAC7C,IAAIopB,EAAW1G,EAAI,YAAY+D,EAAS,EACxC2C,EAAS,YAAY,iBAAkB,iBAAkB,CAAC,OAAS,EAAK,CAAC,EAEzEA,EAAS,WAAW,EAAE,UAAY,SAAUN,EAAO,CACjD,IAAID,EAASC,EAAM,OAAO,OAC1B,GAAID,EAAQ,CACV,IAAInc,EAAWmc,EAAO,MAClB1b,EAAUoE,GAAU7E,CAAQ,EAChCA,EAAS,eAAiBS,EAAU,IAAM,IAC1Cic,EAAS,IAAI1c,CAAQ,EACrBmc,EAAO,SAAS,CAClB,MACE7oB,EAAS,CAEb,CACF,CAGA,SAAS+vB,EAAuBzuB,EAAI,CAClCA,EAAG,kBAAkBwlB,GAAa,CAAC,QAAS,KAAK,CAAC,EAC/C,YAAY,cAAe,cAAe,CAAC,OAAQ,EAAI,CAAC,CAC7D,CAGA,SAASkJ,EAAkBtN,EAAK5O,EAAI,CAClC,IAAImc,EAAavN,EAAI,YAAYoE,EAAW,EACxCsC,EAAW1G,EAAI,YAAY+D,EAAS,EACpC6B,EAAW5F,EAAI,YAAYgE,EAAY,EAEvCmC,EAASO,EAAS,WAAW,EACjCP,EAAO,UAAY,SAAUC,EAAO,CAClC,IAAID,EAASC,EAAM,OAAO,OAC1B,GAAID,EAAQ,CACV,IAAInc,EAAWmc,EAAO,MAClBhmB,EAAQ6J,EAAS,GACjBwjB,EAAQ1e,GAAU3O,CAAK,EACvBqQ,EAASzG,GAAWC,CAAQ,EAChC,GAAIwjB,EAAO,CACT,IAAId,GAAWvsB,EAAQ,KAAOqQ,EAG1B9H,EAAQvI,EAAQ,KAChBwI,EAAMxI,EAAQ,MACd8lB,GAAQL,EAAS,MAAM,aAAa,EACpC/jB,GAAQ,YAAY,MAAM6G,EAAOC,EAAK,GAAO,EAAK,EAClD8kB,GAAYxH,GAAM,WAAWpkB,EAAK,EACtC4rB,GAAU,UAAY,SAAUhwB,EAAG,CAEjC,GADAgwB,GAAYhwB,EAAE,OAAO,OACjB,CAACgwB,GAEH/G,EAAS,OAAOP,EAAO,UAAU,EACjCA,EAAO,SAAS,MACX,CACL,IAAIliB,EAAOwpB,GAAU,MACjBxpB,EAAK,cAAgByoB,IACvBa,EAAW,IAAItpB,CAAI,EAErB2hB,EAAS,OAAO6H,GAAU,UAAU,EACpCA,GAAU,SAAS,CACrB,CACF,CACF,MACEtH,EAAO,SAAS,CAEpB,MAAW/U,GACTA,EAAG,CAEP,CACF,CAGA,SAASsc,EAAqB9uB,EAAI,CAChC,IAAIknB,EAAiBlnB,EAAG,kBAAkBslB,GACxC,CAAC,cAAe,EAAI,CAAC,EACvB4B,EAAe,YAAY,MAAO,KAAK,EACvCA,EAAe,YAAY,YAAa,YAAa,CAAC,OAAQ,EAAI,CAAC,CACrE,CAGA,SAAS6H,EAAmB3N,EAAK1iB,EAAU,CACzC,IAAIsoB,EAAW5F,EAAI,YAAYgE,EAAY,EACvC6B,EAAW7F,EAAI,YAAYiE,EAAY,EACvC6B,EAAiB9F,EAAI,YAAYkE,EAAoB,EAKrD7f,EAAMwhB,EAAS,MAAM,EACzBxhB,EAAI,UAAY,SAAU5G,EAAG,CAC3B,IAAIyU,EAAQzU,EAAE,OAAO,OACrB,GAAI,CAACyU,EACH,OAAO5U,EAAS,EAGlBsoB,EAAS,WAAW,EAAE,UAAY,SAAUnoB,EAAG,CAC7C,IAAI0oB,EAAS1oB,EAAE,OAAO,OACtB,GAAI,CAAC0oB,EACH,OAAO7oB,EAAS,EAMlB,QAJI8G,EAAM+hB,EAAO,MACbD,EAAMC,EAAO,WACbnW,GAAO,OAAO,KAAK5L,EAAI,cAAgB,CAAC,CAAC,EACzCwpB,EAAY,CAAC,EACRxtB,EAAI,EAAGA,EAAI4P,GAAK,OAAQ5P,IAAK,CACpC,IAAIuE,GAAMP,EAAI,aAAa4L,GAAK5P,CAAC,CAAC,EAClCwtB,EAAUjpB,GAAI,MAAM,EAAI,EAC1B,CACA,IAAIojB,GAAU,OAAO,KAAK6F,CAAS,EACnC,IAAKxtB,EAAI,EAAGA,EAAI2nB,GAAQ,OAAQ3nB,IAAK,CACnC,IAAImlB,GAASwC,GAAQ3nB,CAAC,EACtB0lB,EAAe,IAAI,CACjB,IAAAI,EACA,UAAWX,GAAS,KAAOW,CAC7B,CAAC,CACH,CACAC,EAAO,SAAS,CAClB,CACF,CACF,CAQA,SAAS0H,EAAgB7N,EAAK,CAE5B,SAAS8N,EAAqB/I,EAAc,CAC1C,OAAKA,EAAa,KAKXD,GAAeC,CAAY,GAHhCA,EAAa,QAAUA,EAAa,iBAAmB,IAChDA,EAGX,CAIA,IAAI4B,EAAa3G,EAAI,YAAYgE,EAAY,EACzC0C,EAAW1G,EAAI,YAAY+D,EAAS,EACpCoC,EAASO,EAAS,WAAW,EACjCP,EAAO,UAAY,SAAU1oB,EAAG,CAC9B,IAAI0oB,EAAS1oB,EAAE,OAAO,OACtB,GAAI,CAAC0oB,EACH,OAEF,IAAInc,EAAW8jB,EAAqB3H,EAAO,KAAK,EAEhDnc,EAAS,WAAaA,EAAS,YAC7BD,GAAWC,CAAQ,EAErB,SAAS+jB,GAAmB,CAG1B,IAAIrlB,EAAQsB,EAAS,GAAK,KACtBrB,EAAMqB,EAAS,GAAK,WACpB3F,GAAMsiB,EAAW,MAAM,aAAa,EAAE,WACxC,YAAY,MAAMje,EAAOC,CAAG,CAAC,EAE3BqlB,EAAc,EAClB3pB,GAAI,UAAY,SAAU5G,EAAG,CAC3B,IAAI0oB,GAAS1oB,EAAE,OAAO,OACtB,GAAI,CAAC0oB,GACH,OAAAnc,EAAS,IAAMgkB,EACRC,EAAiB,EAE1B,IAAI/H,GAAMC,GAAO,WACbD,GAAM8H,IACRA,EAAc9H,IAEhBC,GAAO,SAAS,CAClB,CACF,CAEA,SAAS8H,GAAmB,CAC1B,IAAIzF,EAAkB3D,GAAe7a,EACnCA,EAAS,WAAYA,EAAS,OAAO,EAEnC3F,EAAMqiB,EAAS,IAAI8B,CAAe,EACtCnkB,EAAI,UAAY,UAAY,CAC1B8hB,EAAO,SAAS,CAClB,CACF,CAEA,GAAInc,EAAS,IACX,OAAOikB,EAAiB,EAG1BF,EAAiB,CACnB,CAEF,CAEAnc,EAAI,QAAU,GACdA,EAAI,KAAO,UAAY,CACrB,MAAO,KACT,EAEAA,EAAI,IAAM9U,GAAU,SAAUQ,EAAU,CACtCA,EAAS,KAAMsU,EAAI,MAAM,UAAU,CACrC,CAAC,EAEDA,EAAI,UAAY,SAAsBvN,EAAK6pB,EAAS5wB,EAAU,CAC5DmpB,GAAY5nB,EAAMwF,EAAK6pB,EAAStc,EAAK0U,EAAK4G,EAAoB5vB,CAAQ,CAAC,CACzE,EAIAsU,EAAI,KAAO,SAAiBlS,EAAIb,EAAMvB,EAAU,CAC9C,IAAI8G,EACA4F,EACAzM,EACAyiB,EAAMnhB,EAAK,IACf,GAAI,CAACmhB,EAAK,CACR,IAAIqH,EAAYhB,GAAsBC,EACpC,CAACvC,GAAWC,GAAcC,EAAY,EAAG,UAAU,EACrD,GAAIoD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjCrH,EAAMqH,EAAU,GAClB,CAEA,SAASS,GAAS,CAChBxqB,EAASC,EAAK,CAAC,IAAA6G,EAAK,SAAA4F,EAAU,IAAKgW,CAAG,CAAC,CACzC,CAEAA,EAAI,YAAY+D,EAAS,EAAE,IAAIrkB,CAAE,EAAE,UAAY,SAAUjC,EAAG,CAO1D,GANAuM,EAAW8a,GAAernB,EAAE,OAAO,MAAM,EAMrC,CAACuM,EACH,OAAAzM,EAAMsG,GAAYtB,GAAa,SAAS,EACjCulB,EAAO,EAGhB,IAAItX,EACJ,GAAK3R,EAAK,IAQR2R,EAAS3R,EAAK,OAASkQ,GAAOlQ,EAAK,IAAKmL,CAAQ,EAAInL,EAAK,QAR5C,CACb2R,EAASxG,EAAS,WAClB,IAAIS,GAAUoE,GAAU7E,CAAQ,EAChC,GAAIS,GACF,OAAAlN,EAAMsG,GAAYtB,GAAa,SAAS,EACjCulB,EAAO,CAElB,CAIA,IAAIyB,EAAcvJ,EAAI,YAAYgE,EAAY,EAC1CnkB,EAAMmK,EAAS,GAAK,KAAOwG,EAE/B+Y,EAAY,MAAM,aAAa,EAAE,IAAI1pB,CAAG,EAAE,UAAY,SAAUpC,GAAG,CAKjE,GAJA2G,EAAM3G,GAAE,OAAO,OACX2G,IACFA,EAAM4gB,GAAU5gB,CAAG,GAEjB,CAACA,EACH,OAAA7G,EAAMsG,GAAYtB,GAAa,SAAS,EACjCulB,EAAO,EAEhBA,EAAO,CACT,CACF,CACF,EAEAlW,EAAI,eAAiB,SAAUzR,EAAOguB,EAAUC,EAAYvvB,EAAMvB,EAAU,CAC1E,IAAI0iB,EACJ,GAAInhB,EAAK,IACPmhB,EAAMnhB,EAAK,QACN,CACL,IAAIwoB,EAAYhB,GAAsBC,EACpC,CAACvC,GAAWC,GAAcC,EAAY,EAAG,UAAU,EACrD,GAAIoD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjCrH,EAAMqH,EAAU,GAClB,CACA,IAAI9B,EAAS6I,EAAW,OACpBppB,EAAOopB,EAAW,aAEtBpO,EAAI,YAAYiE,EAAY,EAAE,IAAIsB,CAAM,EAAE,UAAY,SAAU9nB,EAAG,CACjE,IAAIynB,EAAOznB,EAAE,OAAO,OAAO,KAC3BwnB,GAAaC,EAAMlgB,EAAMnG,EAAK,OAAQ,SAAUwvB,EAAU,CACxD/wB,EAAS,KAAM+wB,CAAQ,CACzB,CAAC,CACH,CACF,EAEAzc,EAAI,MAAQ,SAAkBtU,EAAU,CACtC,IAAI0tB,EACAD,EAEA1D,EAAYhB,GAAsBC,EAAK,CAACnC,GAAYH,EAAY,EAAG,UAAU,EACjF,GAAIqD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjC,IAAIrH,EAAMqH,EAAU,IACpBrH,EAAI,YAAYmE,EAAU,EAAE,IAAIA,EAAU,EAAE,UAAY,SAAU1mB,EAAG,CACnEstB,EAAWttB,EAAE,OAAO,OAAO,QAC7B,EACAuiB,EAAI,YAAYgE,EAAY,EAAE,cAAc,KAAM,MAAM,EAAE,UAAY,SAAUvmB,EAAG,CACjF,IAAI0oB,EAAS1oB,EAAE,OAAO,OACtButB,EAAY7E,EAASA,EAAO,IAAM,CACpC,EAEAnG,EAAI,WAAa,UAAY,CAC3B1iB,EAAS,KAAM,CACb,UAAWytB,EACX,WAAYC,EAEZ,sBAAwBpZ,EAAI,MAAM,YAAc,SAAW,QAC7D,CAAC,CACH,CACF,EAEAA,EAAI,SAAW,SAAqB/S,EAAMvB,EAAU,CAClDqtB,GAAW9rB,EAAMynB,EAAK4G,EAAoB5vB,CAAQ,CAAC,CACrD,EAEAsU,EAAI,SAAW,SAAoB/S,EAAM,CACvC,OAAOitB,GAAQjtB,EAAM+S,EAAK5Q,EAAQslB,CAAG,CACvC,EAEA1U,EAAI,OAAS,SAAUtU,EAAU,CAG/BgpB,EAAI,MAAM,EACVsG,GAAU,OAAO5rB,CAAM,EACvB1D,EAAS,CACX,EAEAsU,EAAI,iBAAmB,SAAUzR,EAAO7C,EAAU,CAChD,IAAI+pB,EAAYhB,GAAsBC,EAAK,CAACvC,EAAS,EAAG,UAAU,EAClE,GAAIsD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjC,IAAIrH,EAAMqH,EAAU,IAChBhjB,EAAM2b,EAAI,YAAY+D,EAAS,EAAE,IAAI5jB,CAAK,EAC9CkE,EAAI,UAAY,SAAU+hB,EAAO,CAC/B,IAAIhiB,EAAM0gB,GAAesB,EAAM,OAAO,MAAM,EACvChiB,EAGH9G,EAAS,KAAM8G,EAAI,QAAQ,EAF3B9G,EAASuG,GAAYtB,EAAW,CAAC,CAIrC,CACF,EAKAqP,EAAI,cAAgB,SAAUzR,EAAOwK,EAAMrN,EAAU,CACnD,IAAIipB,EAAS,CACXxC,GACAC,GACAC,GACAC,EACF,EACImD,EAAYhB,GAAsBC,EAAKC,EAAQ,WAAW,EAC9D,GAAIc,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjC,IAAIrH,EAAMqH,EAAU,IAEhBX,EAAW1G,EAAI,YAAY+D,EAAS,EAExC2C,EAAS,IAAIvmB,CAAK,EAAE,UAAY,SAAUimB,EAAO,CAC/C,IAAIpc,EAAW8a,GAAesB,EAAM,OAAO,MAAM,EACjD1b,GAAgBV,EAAS,SAAU,SAAUkB,EAAQV,GACFiB,EAASC,EAAK7M,GAAM,CACrE,IAAI2R,GAAShG,GAAM,IAAMiB,EACrBd,EAAK,QAAQ6F,EAAM,IAAM,KAC3B3R,GAAK,OAAS,UAElB,CAAC,EACD6mB,GAAY/a,EAAMxK,EAAO6f,CAAG,EAC5B,IAAI4C,EAAgB5Y,EAAS,WACzBS,EAAUT,EAAS,QACvBgW,EAAI,YAAY+D,EAAS,EAAE,IACzBc,GAAe7a,EAAU4Y,EAAenY,CAAO,CAAC,CACpD,EACAuV,EAAI,QAAU0E,GAASpnB,CAAQ,EAC/B0iB,EAAI,WAAa,UAAY,CAC3B1iB,EAAS,CACX,CACF,EAGAsU,EAAI,UAAY,SAAUlS,EAAIpC,EAAU,CACtC,IAAI+pB,EAAYhB,GAAsBC,EAAK,CAAClC,EAAW,EAAG,UAAU,EACpE,GAAIiD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjC,IAAIlE,EAAKkE,EAAU,IACfhjB,EAAM8e,EAAG,YAAYiB,EAAW,EAAE,IAAI1kB,CAAE,EAE5C2E,EAAI,QAAUqgB,GAASpnB,CAAQ,EAC/B+G,EAAI,UAAY,SAAU5G,EAAG,CAC3B,IAAI2G,EAAM3G,EAAE,OAAO,OACd2G,GAGH,OAAOA,EAAI,YACX9G,EAAS,KAAM8G,CAAG,GAHlB9G,EAASuG,GAAYtB,EAAW,CAAC,CAKrC,CACF,EAEAqP,EAAI,UAAY,SAAUxN,EAAKvF,EAAMvB,EAAU,CACzC,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEV,OAAOuF,EAAI,WACX,IAAIkqB,EAASlqB,EAAI,KACb1E,EAAK0E,EAAI,IACRkqB,EAGHlqB,EAAI,KAAO,MAAQ,SAASkqB,EAAO,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,EAAI,GAFxDlqB,EAAI,KAAO,MAKb,IAAI+e,EAAKtkB,EAAK,IACV0vB,EACJ,GAAI,CAACpL,EAAI,CACP,IAAIkE,EAAYhB,GAAsBC,EAAK,CAAClC,EAAW,EAAG,WAAW,EACrE,GAAIiD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjClE,EAAKkE,EAAU,IACflE,EAAG,QAAUuB,GAASpnB,CAAQ,EAC9B6lB,EAAG,WAAa,UAAY,CACtBoL,GACFjxB,EAAS,KAAMixB,CAAG,CAEtB,CACF,CAEA,IAAIC,EAASrL,EAAG,YAAYiB,EAAW,EACnC/f,EACAiqB,GACFjqB,EAAMmqB,EAAO,IAAI9uB,CAAE,EACnB2E,EAAI,UAAY,SAAU5G,EAAG,CAC3B,IAAIgxB,EAAShxB,EAAE,OAAO,OACtB,GAAI,CAACgxB,GAAUA,EAAO,OAASH,EAC7BhxB,EAASuG,GAAYrB,EAAY,CAAC,MAC7B,CACL,IAAI6B,GAAMmqB,EAAO,IAAIpqB,CAAG,EACxBC,GAAI,UAAY,UAAY,CAC1BkqB,EAAM,CAAC,GAAI,GAAM,GAAInqB,EAAI,IAAK,IAAKA,EAAI,IAAI,EACvCvF,EAAK,KACPvB,EAAS,KAAMixB,CAAG,CAEtB,CACF,CACF,IAEAlqB,EAAMmqB,EAAO,IAAIpqB,CAAG,EACpBC,EAAI,QAAU,SAAU5G,EAAG,CAEzBH,EAASuG,GAAYrB,EAAY,CAAC,EAClC/E,EAAE,eAAe,EACjBA,EAAE,gBAAgB,CACpB,EACA4G,EAAI,UAAY,UAAY,CAC1BkqB,EAAM,CAAC,GAAI,GAAM,GAAInqB,EAAI,IAAK,IAAKA,EAAI,IAAI,EACvCvF,EAAK,KACPvB,EAAS,KAAMixB,CAAG,CAEtB,EAEJ,EAEA3c,EAAI,aAAe,SAAUxN,EAAKvF,EAAMvB,EAAU,CAC5C,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEV,IAAIskB,EAAKtkB,EAAK,IACd,GAAI,CAACskB,EAAI,CACP,IAAIkE,EAAYhB,GAAsBC,EAAK,CAAClC,EAAW,EAAG,WAAW,EACrE,GAAIiD,EAAU,MACZ,OAAO/pB,EAAS+pB,EAAU,KAAK,EAEjClE,EAAKkE,EAAU,IACflE,EAAG,WAAa,UAAY,CACtBoL,GACFjxB,EAAS,KAAMixB,CAAG,CAEtB,CACF,CACA,IAAIA,EACA7uB,EAAK0E,EAAI,IACToqB,EAASrL,EAAG,YAAYiB,EAAW,EACnC/f,EAAMmqB,EAAO,IAAI9uB,CAAE,EAEvB2E,EAAI,QAAUqgB,GAASpnB,CAAQ,EAC/B+G,EAAI,UAAY,SAAU5G,EAAG,CAC3B,IAAIgxB,EAAShxB,EAAE,OAAO,OAClB,CAACgxB,GAAUA,EAAO,OAASrqB,EAAI,KACjC9G,EAASuG,GAAYtB,EAAW,CAAC,GAEjCisB,EAAO,OAAO9uB,CAAE,EAChB6uB,EAAM,CAAC,GAAI,GAAM,GAAA7uB,EAAI,IAAK,KAAK,EAC3Bb,EAAK,KACPvB,EAAS,KAAMixB,CAAG,EAGxB,CACF,EAEA3c,EAAI,SAAW,SAAU/S,EAAMvB,EAAU,CACvCmiB,GAAe,mBAAmBze,CAAM,EAGxC,IAAI0tB,EAAU5B,GAAY,IAAI9rB,CAAM,EAChC0tB,GAAWA,EAAQ,SACrBA,EAAQ,OAAO,MAAM,EACrB9B,GAAU,OAAO5rB,CAAM,GAEzB,IAAIqD,EAAM,UAAU,eAAerD,CAAM,EAEzCqD,EAAI,UAAY,UAAY,CAE1ByoB,GAAY,OAAO9rB,CAAM,EACrBL,GAAgB,GAAMK,KAAU,cAClC,OAAO,aAAaA,CAAM,EAE5B1D,EAAS,KAAM,CAAE,GAAM,EAAK,CAAC,CAC/B,EAEA+G,EAAI,QAAUqgB,GAASpnB,CAAQ,CACjC,EAEA,IAAIqxB,EAAS/B,GAAU,IAAI5rB,CAAM,EAEjC,GAAI2tB,EACF,OAAArI,EAAMqI,EAAO,IACb/c,EAAI,MAAQ+c,EAAO,OACZ/tB,GAAS,UAAY,CAC1BtD,EAAS,KAAMsU,CAAG,CACpB,CAAC,EAGH,IAAIvN,EAAM,UAAU,KAAKrD,EAAQ8iB,EAAe,EAChDgJ,GAAY,IAAI9rB,EAAQqD,CAAG,EAE3BA,EAAI,gBAAkB,SAAU5G,EAAG,CACjC,IAAImB,EAAKnB,EAAE,OAAO,OAClB,GAAIA,EAAE,WAAa,EACjB,OAAO0vB,EAAavuB,CAAE,EAIxB,IAAIohB,EAAMviB,EAAE,cAAc,YAItBA,EAAE,WAAa,GACjB4vB,EAAuBzuB,CAAE,EAEvBnB,EAAE,WAAa,GACjBiwB,EAAqB9uB,CAAE,EAGzB,IAAIgwB,EAAa,CACfxB,EACAE,EACAK,EACAE,CACF,EAEIrxB,EAAIiB,EAAE,WAEV,SAAS6L,GAAO,CACd,IAAIulB,EAAYD,EAAWpyB,EAAI,CAAC,EAChCA,IACIqyB,GACFA,EAAU7O,EAAK1W,CAAI,CAEvB,CAEAA,EAAK,CACP,EAEAjF,EAAI,UAAY,SAAU5G,EAAG,CAE3B6oB,EAAM7oB,EAAE,OAAO,OAEf6oB,EAAI,gBAAkB,UAAY,CAChCA,EAAI,MAAM,EACVsG,GAAU,OAAO5rB,CAAM,CACzB,EAEAslB,EAAI,QAAU,SAAU7oB,EAAG,CACzB6D,GAAe,QAAS,gCAAiC7D,EAAE,OAAO,KAAK,EACvEwvB,EAAwBxvB,EAAE,OAAO,MACjC6oB,EAAI,MAAM,EACVsG,GAAU,OAAO5rB,CAAM,CACzB,EASA,IAAIgf,EAAMsG,EAAI,YAAY,CACxBnC,GACAE,GACAN,EACF,EAAG,WAAW,EAEV+K,EAAgB,GAChB9H,EACA+D,EACAgE,EACAC,EAEJ,SAASC,GAAgB,CACnB,OAAOF,EAAgB,KAAe,CAACD,IAG3Cld,EAAI,MAAQ,CACV,KAAM5Q,EACN,WAAAguB,EACA,YAAAD,CACF,EAEAnC,GAAU,IAAI5rB,EAAQ,CACpB,IAAAslB,EACA,OAAQ1U,EAAI,KACd,CAAC,EACDtU,EAAS,KAAMsU,CAAG,EACpB,CAEA,SAASsd,GAAsB,CAC7B,GAAI,SAAOnE,EAAa,KAAe,OAAO/D,EAAY,KAG1D,KAAImI,EAAcnuB,EAAS,MACvBmuB,KAAenI,EACjBgI,EAAahI,EAAQmI,CAAW,EAEhCnI,EAAQmI,CAAW,EAAIH,EAAallB,GAAK,EAE3Ckd,EAAQ,SAAW+D,EACnB/K,EAAI,YAAYmE,EAAU,EAAE,IAAI6C,CAAO,EACzC,CAKAhH,EAAI,YAAYmE,EAAU,EAAE,IAAIA,EAAU,EAAE,UAAY,SAAU1mB,EAAG,CACnEupB,EAAUvpB,EAAE,OAAO,QAAU,CAAE,GAAI0mB,EAAW,EAC9C+K,EAAoB,CACtB,EAKA1D,GAAUxL,EAAK,SAAU9N,EAAO,CAC9B6Y,EAAW7Y,EACXgd,EAAoB,CACtB,CAAC,EAKIrC,KAEHA,GAAqB9M,GAAiBC,EAAKqE,GAA2B,KAAK,GAG7EwI,GAAmB,KAAK,SAAUtS,EAAK,CACrCwU,EAAcxU,EACd0U,EAAc,CAChB,CAAC,EAIDjP,EAAI,WAAa,UAAY,CAC3B8O,EAAgB,GAChBG,EAAc,CAChB,EACAjP,EAAI,QAAU0E,GAASpnB,CAAQ,CACjC,EAEA+G,EAAI,QAAU,SAAU5G,EAAG,CACzB,IAAI6G,EAAM7G,EAAE,OAAO,OAASA,EAAE,OAAO,MAAM,QAEtC6G,EAEMA,EAAI,QAAQ,qCAAqC,IAAM,KAChEA,EAAM,IAAI,MAAM,oHAAoH,GAFpIA,EAAM,8DAKRhD,GAAe,QAASgD,CAAG,EAC3BhH,EAASuG,GAAYR,GAAWiB,CAAG,CAAC,CACtC,CACF,CAEAyoB,GAAS,MAAQ,UAAY,CAM3B,GAAI,CAGF,OAAO,OAAO,UAAc,KAAe,OAAO,YAAgB,GACpE,MAAY,CACV,MAAO,EACT,CACF,EAEA,SAASqC,GAAUzf,EAAS,CAC1BA,EAAQ,QAAQ,MAAOod,GAAU,EAAI,CACvC,CAMA,SAASsC,GAAKC,EAAkB9R,EAAO,CACrC,OAAO,IAAI,QAAQ,SAAU2C,EAAS/iB,EAAQ,CAC5C,IAAIquB,EAAU,EACVnU,EAAU,EACV9N,EAAO,EACP/M,EAAM6yB,EAAiB,OACvB/xB,EAEJ,SAASgyB,GAAU,CACjB9D,IACA6D,EAAiBhY,GAAS,EAAE,EAAE,KAAKiT,EAAWnpB,CAAO,CACvD,CAEA,SAASouB,GAAS,CACZ,EAAEhmB,IAAS/M,EAETc,EACFH,EAAOG,CAAG,EAEV4iB,EAAQ,EAGVsP,EAAa,CAEjB,CAEA,SAASlF,GAAY,CACnBkB,IACA+D,EAAO,CACT,CAGA,SAASpuB,EAAQsuB,EAAS,CACxBjE,IACAluB,EAAMA,GAAOmyB,EACbF,EAAO,CACT,CAEA,SAASC,GAAe,CACtB,KAAOhE,EAAUjO,GAASlG,EAAU7a,GAClC8yB,EAAQ,CAEZ,CAEAE,EAAa,CACf,CAAC,CACH,CAEA,IAAME,GAAqB,GACrBC,GAAwB,GACxBC,GAAyB,IACzBC,GAAoB,IAEpBC,GAAqB,CAAC,EAE5B,SAASC,GAA8Bxb,EAAK,CAC1C,IAAMpQ,EAAMoQ,EAAI,KAAOA,EAAI,GACrBxE,EAAO5L,GAAOA,EAAI,aACnB4L,GAGL,OAAO,KAAKA,CAAI,EAAE,QAAQ,SAAUgY,EAAU,CAC5C,IAAMrjB,EAAMqL,EAAKgY,CAAQ,EACzBrjB,EAAI,KAAO2C,GAAa3C,EAAI,KAAMA,EAAI,YAAY,CACpD,CAAC,CACH,CAEA,SAASsrB,GAAYvwB,EAAI,CACvB,MAAI,WAAW,KAAKA,CAAE,EACb,WAAa,mBAAmBA,EAAG,MAAM,CAAC,CAAC,EAEhDA,EAAG,WAAW,SAAS,EAClB,UAAY,mBAAmBA,EAAG,MAAM,CAAC,CAAC,EAE5C,mBAAmBA,CAAE,CAC9B,CAEA,SAASwwB,GAAwB9rB,EAAK,CACpC,MAAI,CAACA,EAAI,cAAgB,CAAC,OAAO,KAAKA,EAAI,YAAY,EAC7C,QAAQ,QAAQ,EAGlB,QAAQ,IAAI,OAAO,KAAKA,EAAI,YAAY,EAAE,IAAI,SAAUvE,EAAK,CAClE,IAAMuuB,EAAahqB,EAAI,aAAavE,CAAG,EACvC,GAAIuuB,EAAW,MAAQ,OAAOA,EAAW,MAAS,SAChD,OAAO,IAAI,QAAQ,SAAUjO,EAAS,CACpCjY,GAAakmB,EAAW,KAAMjO,CAAO,CACvC,CAAC,EAAE,KAAK,SAAU5Y,EAAK,CACrB6mB,EAAW,KAAO7mB,CACpB,CAAC,CAEL,CAAC,CAAC,CACJ,CAEA,SAAS4oB,GAAatxB,EAAM,CAC1B,GAAI,CAACA,EAAK,OACR,MAAO,GAET,IAAMuxB,EAAW1qB,GAAS7G,EAAK,MAAM,EAAE,SACvC,OAAOuxB,IAAa,QAAUA,IAAa,OAC7C,CAIA,SAASC,GAAQzyB,EAAMiB,EAAM,CAE3B,GAAIsxB,GAAatxB,CAAI,EAAG,CACtB,IAAMmC,EAASnC,EAAK,KAAK,OAAOA,EAAK,OAAO,MAAM,EAGlDjB,EADeiB,EAAK,OAAO,QAAQ,OAAQ,GAAG,EAC9B,mBAAmBmC,CAAM,CAC3C,CAEA,IAAM4E,EAAMF,GAAS9H,CAAI,GACrBgI,EAAI,MAAQA,EAAI,YAClBA,EAAI,KAAO,CAAC,SAAUA,EAAI,KAAM,SAAUA,EAAI,QAAQ,GAKxD,IAAMT,EAAQS,EAAI,KAAK,QAAQ,aAAc,EAAE,EAAE,MAAM,GAAG,EAE1D,OAAAA,EAAI,GAAKT,EAAM,IAAI,EAEfS,EAAI,GAAG,QAAQ,GAAG,IAAM,KAC1BA,EAAI,GAAK,mBAAmBA,EAAI,EAAE,GAGpCA,EAAI,KAAOT,EAAM,KAAK,GAAG,EAElBS,CACT,CAGA,SAAS0qB,GAASzxB,EAAMgN,EAAM,CAC5B,OAAO0kB,GAAO1xB,EAAMA,EAAK,GAAK,IAAMgN,CAAI,CAC1C,CAGA,SAAS0kB,GAAO1xB,EAAMgN,EAAM,CAG1B,IAAM2kB,EAAW3xB,EAAK,KAAY,IAAL,GAI7B,OAAOA,EAAK,SAAW,MAAQA,EAAK,MAC5BA,EAAK,KAAQ,IAAMA,EAAK,KAAQ,IACjC,IAAMA,EAAK,KAAO2xB,EAAU3kB,CACrC,CAEA,SAAS4kB,GAAYC,EAAQ,CAC3B,IAAMC,EAAY,OAAO,KAAKD,CAAM,EACpC,OAAIC,EAAU,SAAW,EAChB,GAGF,IAAMA,EAAU,IAAI9wB,GAAOA,EAAM,IAAM,mBAAmB6wB,EAAO7wB,CAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CACzF,CAEA,SAAS+wB,GAAgB/xB,EAAM,CAC7B,IAAMgyB,EAAM,OAAO,UAAc,KAAe,UAAU,UACtD,UAAU,UAAU,YAAY,EAAI,GAClCC,EAAOD,EAAG,QAAQ,MAAM,IAAM,GAC9BE,EAAYF,EAAG,QAAQ,SAAS,IAAM,GACtCG,EAASH,EAAG,QAAQ,MAAM,IAAM,GAChCI,EAAQ,EAAE,WAAYpyB,IAASA,EAAK,SAAW,MACrD,OAAQiyB,GAAQC,GAAaC,IAAWC,CAC1C,CAGA,SAASC,GAAUryB,EAAMvB,EAAU,CAGjC,IAAMsU,EAAM,KAENuf,EAAOd,GAAQxxB,EAAK,KAAMA,CAAI,EAC9BuyB,EAAQd,GAASa,EAAM,EAAE,EAE/BtyB,EAAOvC,GAAMuC,CAAI,EAEjB,IAAMwyB,EAAW,eAAgBza,EAAK0a,EAAS,CAO7C,GALAA,EAAUA,GAAW,CAAC,EACtBA,EAAQ,QAAUA,EAAQ,SAAW,IAAItb,GAEzCsb,EAAQ,YAAc,UAElBzyB,EAAK,MAAQsyB,EAAK,KAAM,CAC1B,IAAMI,EAAQ1yB,EAAK,MAAQsyB,EAAK,KAC1BlvB,EAAMsvB,EAAM,SAAW,IAAMA,EAAM,SACnCC,EAAQ7qB,GAAS,SAAS,mBAAmB1E,CAAG,CAAC,CAAC,EACxDqvB,EAAQ,QAAQ,IAAI,gBAAiB,SAAWE,CAAK,CACvD,CAEA,IAAMC,EAAU5yB,EAAK,SAAW,CAAC,EACjC,cAAO,KAAK4yB,CAAO,EAAE,QAAQ,SAAU5xB,EAAK,CAC1CyxB,EAAQ,QAAQ,OAAOzxB,EAAK4xB,EAAQ5xB,CAAG,CAAC,CAC1C,CAAC,EAGG+wB,GAAgBU,CAAO,IACzB1a,IAAQA,EAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAO,UAAY,KAAK,IAAI,GAI/D,MADU/X,EAAK,OAASkX,IACTa,EAAK0a,CAAO,CACpC,EAEA,SAASI,EAAc9zB,EAAMjB,EAAK,CAChC,OAAOsB,GAAWL,EAAM,YAAaf,EAAM,CACzC80B,EAAM,EAAE,KAAK,UAAY,CACvB,OAAOh1B,EAAI,MAAM,KAAME,CAAI,CAC7B,CAAC,EAAE,MAAM,SAAUY,EAAG,CACHZ,EAAK,IAAI,EACjBY,CAAC,CACZ,CAAC,CACH,CAAC,EAAE,KAAKmU,CAAG,CACb,CAEA,eAAeggB,EAAUhb,EAAK0a,EAAS,CAErC,IAAM5zB,EAAS,CAAC,EAEhB4zB,EAAUA,GAAW,CAAC,EACtBA,EAAQ,QAAUA,EAAQ,SAAW,IAAItb,GAEpCsb,EAAQ,QAAQ,IAAI,cAAc,GACrCA,EAAQ,QAAQ,IAAI,eAAgB,kBAAkB,EAEnDA,EAAQ,QAAQ,IAAI,QAAQ,GAC/BA,EAAQ,QAAQ,IAAI,SAAU,kBAAkB,EAGlD,IAAMO,EAAW,MAAMR,EAASza,EAAK0a,CAAO,EAC5C5zB,EAAO,GAAKm0B,EAAS,GACrBn0B,EAAO,OAASm0B,EAAS,OACzB,IAAMpN,EAAO,MAAMoN,EAAS,KAAK,EAGjC,GADAn0B,EAAO,KAAO+mB,EACV,CAAC/mB,EAAO,GACV,MAAAA,EAAO,KAAK,OAASA,EAAO,OAChBsG,GAA0BtG,EAAO,IAAI,EAInD,OAAI,MAAM,QAAQA,EAAO,IAAI,IAC3BA,EAAO,KAAOA,EAAO,KAAK,IAAI,SAAUo0B,EAAG,CACzC,OAAIA,EAAE,OAASA,EAAE,QACR9tB,GAA0B8tB,CAAC,EAE3BA,CAEX,CAAC,GAGIp0B,CACT,CAEA,IAAIq0B,EAEJ,eAAeJ,GAAQ,CACrB,OAAI9yB,EAAK,WACA,QAAQ,QAAQ,EAMrBkzB,IAIJA,EAAeH,EAAUR,CAAK,EAAE,MAAM,SAAU7zB,EAAK,CACnD,OAAIA,GAAOA,EAAI,QAAUA,EAAI,SAAW,KAEtCwE,GAAa,IAAK,iDAAiD,EAC5D6vB,EAAUR,EAAO,CAAC,OAAQ,KAAK,CAAC,GAEhC,QAAQ,OAAO7zB,CAAG,CAE7B,CAAC,EAAE,MAAM,SAAUA,EAAK,CAItB,OAAIA,GAAOA,EAAI,QAAUA,EAAI,SAAW,IAC/B,GAEF,QAAQ,OAAOA,CAAG,CAC3B,CAAC,EAEDw0B,EAAa,MAAM,UAAY,CAC7BA,EAAe,IACjB,CAAC,EAEMA,EACT,CAEAnxB,GAAS,UAAY,CACnBtD,EAAS,KAAMsU,CAAG,CACpB,CAAC,EAEDA,EAAI,QAAU,GAGdA,EAAI,KAAO,UAAY,CACrB,MAAO,MACT,EAEAA,EAAI,GAAK8f,EAAc,KAAM,eAAgBp0B,EAAU,CACrD,IAAII,EACJ,GAAI,CAEFA,EAAS,MADQ,MAAM2zB,EAASd,GAAOY,EAAM,EAAE,CAAC,GACxB,KAAK,CAC/B,MAAc,CACZzzB,EAAS,CAAC,CACZ,CAGA,IAAMs0B,EAAWt0B,GAAUA,EAAO,KAASA,EAAO,KAAOyzB,EAAK,GAAMb,GAASa,EAAM,EAAE,EACrF7zB,EAAS,KAAM00B,CAAO,CACxB,CAAC,EAIDpgB,EAAI,QAAU8f,EAAc,UAAW,eAAgB7yB,EAAMvB,EAAU,CACjE,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEVA,EAAOvC,GAAMuC,CAAI,EAEjB,MAAM+yB,EAAUtB,GAASa,EAAM,UAAU,EAAG,CAAC,OAAQ,MAAM,CAAC,EAE5D,SAASc,GAAO,CACdrgB,EAAI,KAAK,SAAUrU,EAAKQ,EAAK,CAIvBA,GAAO,CAACA,EAAI,gBACdT,EAAS,KAAM,CAAC,GAAI,EAAI,CAAC,EAEzB,WAAW20B,EAAMpzB,EAAK,UAAY,GAAG,CAEzC,CAAC,CACH,CAEAozB,EAAK,CACP,CAAC,EAEDrgB,EAAI,QAAU3T,GAAW,UAAW,SAAUY,EAAMvB,EAAU,CAC5D,IAAMN,EAAO,KAEb,eAAek1B,EAAU9gB,EAAI,CAC3B,IAAMsf,EAAS,CAAC,EACZ7xB,EAAK,OACP6xB,EAAO,KAAO,IAEZ7xB,EAAK,cAEP6xB,EAAO,YAAc,IAEnB7xB,EAAK,SACP6xB,EAAO,OAAS,IAElB,GAAI,CACF,IAAMhzB,EAAS,MAAMk0B,EAAUtB,GAASa,EAAM,YAAcV,GAAYC,CAAM,CAAC,EAAG,CAChF,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,KAAM7xB,EAAK,IAAI,CAAC,CACzC,CAAC,EAEGA,EAAK,aAAeA,EAAK,QAC3BnB,EAAO,KAAK,QAAQ,QAAQ,SAAUK,EAAK,CACzCA,EAAI,KAAK,QAAQiyB,EAA6B,CAChD,CAAC,EAEH5e,EAAG,KAAM1T,EAAO,IAAI,CACtB,OAASyE,EAAO,CACdiP,EAAGjP,CAAK,CACV,CACF,CAGA,SAASgwB,GAAgB,CAEvB,IAAMzI,EAAYkG,GACZwC,EAAa,KAAK,KAAKvzB,EAAK,KAAK,OAAS6qB,CAAS,EACrDxqB,EAAU,EACRG,EAAU,IAAI,MAAM+yB,CAAU,EAEpC,SAASC,EAASC,EAAU,CAC1B,OAAO,SAAU/0B,EAAKQ,EAAK,CAEzBsB,EAAQizB,CAAQ,EAAIv0B,EAAI,QACpB,EAAEmB,IAAYkzB,GAChB90B,EAAS,KAAM,CAAC,QAAS+B,EAAQ,KAAK,CAAC,CAAC,CAE5C,CACF,CAEA,QAAS7C,EAAI,EAAGA,EAAI41B,EAAY51B,IAAK,CACnC,IAAM+1B,EAAUp0B,GAAKU,EAAM,CAAC,OAAQ,cAAe,SAAU,QAAQ,CAAC,EACtE0zB,EAAQ,KAAO1zB,EAAK,KAAK,MAAMrC,EAAIktB,EACjC,KAAK,IAAI7qB,EAAK,KAAK,QAASrC,EAAI,GAAKktB,CAAS,CAAC,EACjD/qB,GAAQ3B,EAAMu1B,EAASF,EAAS71B,CAAC,CAAC,CACpC,CACF,CAGA,IAAM40B,EAAQb,GAAOY,EAAM,EAAE,EACvBqB,EAAkBzC,GAAmBqB,CAAK,EAG5C,OAAOoB,GAAoB,UAE7BN,EAAU,SAAU30B,EAAKQ,EAAK,CACxBR,GACFwyB,GAAmBqB,CAAK,EAAI,GAC5BrvB,GACExE,EAAI,OACJ,qEAEF,EACA40B,EAAc,IAEdpC,GAAmBqB,CAAK,EAAI,GAC5B9zB,EAAS,KAAMS,CAAG,EAEtB,CAAC,EACQy0B,EACTN,EAAU50B,CAAQ,EAElB60B,EAAc,CAElB,CAAC,EAKDvgB,EAAI,MAAQ,eAAgBtU,EAAU,CACpC,GAAI,CACF,MAAMq0B,EAAM,EAEZ,IAAMryB,EAAO,MADI,MAAM+xB,EAASf,GAASa,EAAM,EAAE,CAAC,GACtB,KAAK,EACjC7xB,EAAK,KAAOgxB,GAASa,EAAM,EAAE,EAC7B7zB,EAAS,KAAMgC,CAAI,CACrB,OAAS/B,EAAK,CACZD,EAASC,CAAG,CACd,CACF,EAEAqU,EAAI,MAAQ,eAAgB/F,EAAMylB,EAAS,CACzC,MAAMK,EAAM,EACZ,IAAM/a,EAAM/K,EAAK,UAAU,EAAG,CAAC,IAAM,IACrC0kB,GAAOY,EAAMtlB,EAAK,UAAU,CAAC,CAAC,EAC9BykB,GAASa,EAAMtlB,CAAI,EACnB,OAAOwlB,EAASza,EAAK0a,CAAO,CAC9B,EAKA1f,EAAI,IAAM8f,EAAc,MAAO,eAAgBhyB,EAAIb,EAAMvB,EAAU,CAE7D,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEVA,EAAOvC,GAAMuC,CAAI,EAGjB,IAAM6xB,EAAS,CAAC,EAEZ7xB,EAAK,OACP6xB,EAAO,KAAO,IAGZ7xB,EAAK,YACP6xB,EAAO,UAAY,IAGjB7xB,EAAK,SACP6xB,EAAO,OAAS,IAGd7xB,EAAK,YACHA,EAAK,YAAc,QACrBA,EAAK,UAAY,KAAK,UAAUA,EAAK,SAAS,GAEhD6xB,EAAO,UAAY7xB,EAAK,WAGtBA,EAAK,MACP6xB,EAAO,IAAM7xB,EAAK,KAGhBA,EAAK,YACP6xB,EAAO,UAAY7xB,EAAK,WAItBA,EAAK,aACP6xB,EAAO,WAAa7xB,EAAK,YAG3Ba,EAAKuwB,GAAYvwB,CAAE,EAEnB,SAAS+yB,EAAiBruB,EAAK,CAC7B,IAAM4L,EAAO5L,EAAI,aACXsuB,EAAY1iB,GAAQ,OAAO,KAAKA,CAAI,EAC1C,GAAI,CAACA,GAAQ,CAAC0iB,EAAU,OACtB,OAMF,eAAeC,EAAU3K,EAAU,CACjC,IAAMrjB,EAAMqL,EAAKgY,CAAQ,EACnBnc,EAAOokB,GAAY7rB,EAAI,GAAG,EAAI,IAAMwuB,EAAmB5K,CAAQ,EACjE,QAAU5jB,EAAI,KAEZytB,EAAW,MAAMR,EAASf,GAASa,EAAMtlB,CAAI,CAAC,EAEhDhE,EACA,WAAYgqB,EACdhqB,EAAO,MAAMgqB,EAAS,OAAO,EAG7BhqB,EAAO,MAAMgqB,EAAS,KAAK,EAG7B,IAAI5tB,GACJ,GAAIpF,EAAK,OAAQ,CACf,IAAMg0B,EAAsB,OAAO,yBAAyBhrB,EAAK,UAAW,MAAM,GAC9E,CAACgrB,GAAuBA,EAAoB,OAC9ChrB,EAAK,KAAOlD,EAAI,cAElBV,GAAO4D,CACT,MACE5D,GAAO,MAAM,IAAI,QAAQ,SAAUkc,EAAS,CAC1CjY,GAAaL,EAAMsY,CAAO,CAC5B,CAAC,EAGH,OAAOxb,EAAI,KACX,OAAOA,EAAI,OACXA,EAAI,KAAOV,EACb,CAEA,IAAMqrB,EAAmBoD,EAAU,IAAI,SAAU1K,EAAU,CACzD,OAAO,UAAY,CACjB,OAAO2K,EAAU3K,CAAQ,CAC3B,CACF,CAAC,EAID,OAAOqH,GAAKC,EAAkB,CAAC,CACjC,CAEA,SAASwD,EAAoBC,EAAW,CACtC,OAAI,MAAM,QAAQA,CAAS,EAClB,QAAQ,IAAIA,EAAU,IAAI,SAAU3uB,EAAK,CAC9C,GAAIA,EAAI,GACN,OAAOquB,EAAiBruB,EAAI,EAAE,CAElC,CAAC,CAAC,EAEGquB,EAAiBM,CAAS,CACnC,CAEA,IAAMnc,EAAM0Z,GAASa,EAAMzxB,EAAK+wB,GAAYC,CAAM,CAAC,EACnD,GAAI,CACF,IAAM3yB,EAAM,MAAM6zB,EAAUhb,CAAG,EAC3B/X,EAAK,aACP,MAAMi0B,EAAoB/0B,EAAI,IAAI,EAEpCT,EAAS,KAAMS,EAAI,IAAI,CACzB,OAASoE,EAAO,CACdA,EAAM,MAAQzC,EACdpC,EAAS6E,CAAK,CAChB,CACF,CAAC,EAIDyP,EAAI,OAAS8f,EAAc,SAAU,eAAgB3f,EAASC,EAAWnT,EAAMuS,EAAI,CACjF,IAAIhN,EACA,OAAO4N,GAAc,UAEvB5N,EAAM,CACJ,IAAK2N,EACL,KAAMC,CACR,EACI,OAAOnT,GAAS,aAClBuS,EAAKvS,EACLA,EAAO,CAAC,KAIVuF,EAAM2N,EACF,OAAOC,GAAc,YACvBZ,EAAKY,EACLnT,EAAO,CAAC,IAERuS,EAAKvS,EACLA,EAAOmT,IAIX,IAAMxB,EAAUpM,EAAI,MAAQvF,EAAK,IAC3B+X,EAAM0Z,GAASa,EAAMlB,GAAY7rB,EAAI,GAAG,CAAC,EAAI,QAAUoM,EAE7D,GAAI,CACF,IAAM9S,EAAS,MAAMk0B,EAAUhb,EAAK,CAAC,OAAQ,QAAQ,CAAC,EACtDxF,EAAG,KAAM1T,EAAO,IAAI,CACtB,OAASyE,EAAO,CACdiP,EAAGjP,CAAK,CACV,CACF,CAAC,EAED,SAASywB,EAAmBjhB,EAAc,CACxC,OAAOA,EAAa,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG,CACjE,CAGAC,EAAI,cAAgB8f,EAAc,gBAAiB,eAAgBvxB,EAAOwR,EAChB9S,EAAMvB,EAAU,CACpE,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEV,IAAM6xB,EAAS7xB,EAAK,IAAO,QAAUA,EAAK,IAAO,GAC3C+X,EAAM0Z,GAASa,EAAMlB,GAAY9vB,CAAK,CAAC,EAAI,IAC7CyyB,EAAmBjhB,CAAY,EAAI+e,EACnCsC,EACJ,GAAI,CACF,IAAMnB,EAAW,MAAMR,EAASza,EAAK,CAAC,OAAQ,KAAK,CAAC,EAEpD,GAAI,CAACib,EAAS,GACZ,MAAMA,EAGRmB,EAAcnB,EAAS,QAAQ,IAAI,cAAc,EACjD,IAAIhqB,EASJ,GARI,OAAOorB,EAAY,KAAe,CAACA,EAAQ,SAAW,OAAOpB,EAAS,QAAW,WACnFhqB,EAAO,MAAMgqB,EAAS,OAAO,EAG7BhqB,EAAO,MAAMgqB,EAAS,KAAK,EAIzB,OAAOoB,EAAY,KAAe,CAACA,EAAQ,QAAS,CACtD,IAAMJ,EAAsB,OAAO,yBAAyBhrB,EAAK,UAAW,MAAM,GAC9E,CAACgrB,GAAuBA,EAAoB,OAC9ChrB,EAAK,KAAOmrB,EAEhB,CACA11B,EAAS,KAAMuK,CAAI,CACrB,OAAStK,EAAK,CACZD,EAASC,CAAG,CACd,CACF,CAAC,EAGDqU,EAAI,iBAAoB8f,EAAc,mBAAoB,eACxDvxB,EACAwR,EACAnB,EACAlT,EACA,CACA,IAAMsZ,EAAM0Z,GAASa,EAAMlB,GAAY9vB,CAAK,EAAI,IAAMyyB,EAAmBjhB,CAAY,CAAC,EAAI,QAAUnB,EAEpG,GAAI,CACF,IAAM9S,EAAS,MAAMk0B,EAAUhb,EAAK,CAAC,OAAQ,QAAQ,CAAC,EACtDtZ,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACd7E,EAAS6E,CAAK,CAChB,CACF,CAAC,EAKDyP,EAAI,cAAgB8f,EAAc,gBAAiB,eACjDvxB,EACAwR,EACAnB,EACA3I,EACA7C,EACA1H,EACA,CACI,OAAO0H,GAAS,aAClB1H,EAAW0H,EACXA,EAAO6C,EACPA,EAAO2I,EACPA,EAAS,MAEX,IAAM9Q,EAAKuwB,GAAY9vB,CAAK,EAAI,IAAMyyB,EAAmBjhB,CAAY,EACjEiF,EAAM0Z,GAASa,EAAMzxB,CAAE,EAK3B,GAJI8Q,IACFoG,GAAO,QAAUpG,GAGf,OAAO3I,GAAS,SAAU,CAE5B,IAAIH,EACJ,GAAI,CACFA,EAAShB,GAASmB,CAAI,CACxB,MAAc,CACZ,OAAOvK,EAASuG,GAAYf,GACZ,yCAAyC,CAAC,CAC5D,CACA+E,EAAOH,EAASN,GAAmBM,EAAQ1C,CAAI,EAAI,EACrD,CAEA,GAAI,CAEF,IAAMtH,EAAS,MAAMk0B,EAAUhb,EAAK,CAClC,QAAS,IAAIZ,GAAE,CAAC,eAAgBhR,CAAI,CAAC,EACrC,OAAQ,MACR,KAAM6C,CACR,CAAC,EACDvK,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACd7E,EAAS6E,CAAK,CAChB,CACF,CAAC,EAIDyP,EAAI,UAAY,eAAgBvN,EAAKxF,EAAMvB,EAAU,CAInD+G,EAAI,UAAYxF,EAAK,UAErB,GAAI,CACF,MAAM8yB,EAAM,EACZ,MAAM,QAAQ,IAAIttB,EAAI,KAAK,IAAI6rB,EAAuB,CAAC,EAGvD,IAAMxyB,EAAS,MAAMk0B,EAAUtB,GAASa,EAAM,YAAY,EAAG,CAC3D,OAAQ,OACR,KAAM,KAAK,UAAU9sB,CAAG,CAC1B,CAAC,EACD/G,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACd7E,EAAS6E,CAAK,CAChB,CACF,EAGAyP,EAAI,KAAO,eAAgBxN,EAAKvF,EAAMvB,EAAU,CAC9C,GAAI,CACF,MAAMq0B,EAAM,EACZ,MAAMzB,GAAwB9rB,CAAG,EAEjC,IAAM1G,EAAS,MAAMk0B,EAAUtB,GAASa,EAAMlB,GAAY7rB,EAAI,GAAG,CAAC,EAAG,CACnE,OAAQ,MACR,KAAM,KAAK,UAAUA,CAAG,CAC1B,CAAC,EACD9G,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACdA,EAAM,MAAQiC,GAAOA,EAAI,IACzB9G,EAAS6E,CAAK,CAChB,CACF,EAKAyP,EAAI,QAAU8f,EAAc,UAAW,eAAgB7yB,EAAMvB,EAAU,CACjE,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEVA,EAAOvC,GAAMuC,CAAI,EAGjB,IAAM6xB,EAAS,CAAC,EACZxL,EACA3jB,EAAS,MAET1C,EAAK,YACP6xB,EAAO,UAAY,IAIjB7xB,EAAK,aACP6xB,EAAO,WAAa,IAGlB7xB,EAAK,aACP6xB,EAAO,WAAa,IAGlB7xB,EAAK,eACP6xB,EAAO,aAAe,IAIpB7xB,EAAK,cACP6xB,EAAO,YAAc,IAGnB7xB,EAAK,MACP6xB,EAAO,IAAM,KAAK,UAAU7xB,EAAK,GAAG,GAGlCA,EAAK,YACPA,EAAK,SAAWA,EAAK,WAGnBA,EAAK,WACP6xB,EAAO,SAAW,KAAK,UAAU7xB,EAAK,QAAQ,GAG5CA,EAAK,UACPA,EAAK,OAASA,EAAK,SAGjBA,EAAK,SACP6xB,EAAO,OAAS,KAAK,UAAU7xB,EAAK,MAAM,GAGxC,OAAOA,EAAK,cAAkB,MAChC6xB,EAAO,cAAgB,CAAC,CAAC7xB,EAAK,eAG5B,OAAOA,EAAK,MAAU,MACxB6xB,EAAO,MAAQ7xB,EAAK,OAGlB,OAAOA,EAAK,KAAS,MACvB6xB,EAAO,KAAO7xB,EAAK,MAGrB,IAAMq0B,EAAWzC,GAAYC,CAAM,EAE/B,OAAO7xB,EAAK,KAAS,MACvB0C,EAAS,OACT2jB,EAAO,CAAC,KAAMrmB,EAAK,IAAI,GAGzB,GAAI,CACF,IAAMnB,EAAS,MAAMk0B,EAAUtB,GAASa,EAAM,YAAc+B,CAAQ,EAAG,CACrE,OAAA3xB,EACA,KAAM,KAAK,UAAU2jB,CAAI,CAC3B,CAAC,EACGrmB,EAAK,cAAgBA,EAAK,aAAeA,EAAK,QAChDnB,EAAO,KAAK,KAAK,QAAQsyB,EAA6B,EAExD1yB,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACd7E,EAAS6E,CAAK,CAChB,CACF,CAAC,EAKDyP,EAAI,SAAW,SAAU/S,EAAM,CAM7B,IAAM6qB,EAAY,eAAgB7qB,EAAOA,EAAK,WAAa8wB,GAE3D9wB,EAAOvC,GAAMuC,CAAI,EAEbA,EAAK,YAAc,EAAE,cAAeA,KACtCA,EAAK,UAAYixB,IAGnB,IAAIqD,EAAkB,YAAat0B,EAAQA,EAAK,QAAU,GAAK,IAG3D,YAAaA,GAAQA,EAAK,SAC3Bs0B,EAAiBt0B,EAAK,QAAWgxB,KAChCsD,EAAiBt0B,EAAK,QAAUgxB,IAIhC,cAAehxB,GAAQA,EAAK,WAC5Bs0B,EAAiBt0B,EAAK,UAAagxB,KACnCsD,EAAiBt0B,EAAK,UAAYgxB,IAGtC,IAAMa,EAAS,CAAC,EACZ,YAAa7xB,GAAQA,EAAK,UAC5B6xB,EAAO,QAAU7xB,EAAK,SAGxB,IAAM2e,EAAS,OAAO3e,EAAK,MAAU,IAAeA,EAAK,MAAQ,GAC7Du0B,EAAc5V,EAqDlB,GAnDI3e,EAAK,QACP6xB,EAAO,MAAQ7xB,EAAK,QAGlBA,EAAK,cAAgBA,EAAK,QAAU,OAAOA,EAAK,QAAW,cAC7D6xB,EAAO,aAAe,IAGpB7xB,EAAK,cACP6xB,EAAO,YAAc,IAGnB7xB,EAAK,aACP6xB,EAAO,KAAO,YAGZ7xB,EAAK,eACP6xB,EAAO,aAAe7xB,EAAK,cAGzBA,EAAK,YACP6xB,EAAO,UAAY,IAGjB7xB,EAAK,aACP6xB,EAAO,WAAa,IAIlB7xB,EAAK,aACP6xB,EAAO,WAAa,IAGlB,cAAe7xB,GAEbA,EAAK,YACP6xB,EAAO,UAAY7xB,EAAK,WAIxBA,EAAK,QAAU,OAAOA,EAAK,QAAW,WACxC6xB,EAAO,OAAS7xB,EAAK,QAGnBA,EAAK,MAAQ,OAAOA,EAAK,MAAS,WACpC6xB,EAAO,OAAS,QAChBA,EAAO,KAAO7xB,EAAK,MAKjBA,EAAK,cAAgB,OAAOA,EAAK,cAAiB,SACpD,QAAWw0B,KAAcx0B,EAAK,aAExB,OAAO,UAAU,eAAe,KAAKA,EAAK,aAAcw0B,CAAU,IACpE3C,EAAO2C,CAAU,EAAIx0B,EAAK,aAAaw0B,CAAU,GAKvD,IAAI9xB,EAAS,MACT2jB,EAEArmB,EAAK,SAGP6xB,EAAO,OAAS,WAChBnvB,EAAS,OACT2jB,EAAO,CAAC,QAASrmB,EAAK,OAAQ,GAGvBA,EAAK,WAEZ6xB,EAAO,OAAS,YAChBnvB,EAAS,OACT2jB,EAAO,CAAC,SAAUrmB,EAAK,QAAS,GAGlC,IAAMy0B,EAAa,IAAI,gBACnBC,EAIEZ,EAAY,eAAgBa,EAAOl2B,EAAU,CACjD,GAAIuB,EAAK,QACP,OAEF6xB,EAAO,MAAQ8C,EAGX,OAAO9C,EAAO,OAAU,WAC1BA,EAAO,MAAQ,KAAK,UAAUA,EAAO,KAAK,GAGxC7xB,EAAK,WACH2e,IACFkT,EAAO,MAAQ0C,GAGjB1C,EAAO,MAAS,CAAClT,GAAS4V,EAAc1J,EACtCA,EAAY0J,EAIhB,IAAMxc,EAAM0Z,GAASa,EAAM,WAAaV,GAAYC,CAAM,CAAC,EACrD+C,EAAY,CAChB,OAAQH,EAAW,OACnB,OAAA/xB,EACA,KAAM,KAAK,UAAU2jB,CAAI,CAC3B,EAIA,GAHAqO,EAAiBC,EAGb,CAAA30B,EAAK,QAKT,GAAI,CACF,MAAM8yB,EAAM,EACZ,IAAMj0B,GAAS,MAAMk0B,EAAUhb,EAAK6c,CAAS,EAC7Cn2B,EAAS,KAAMI,GAAO,IAAI,CAC5B,OAASyE,GAAO,CACd7E,EAAS6E,EAAK,CAChB,CACF,EAKM9C,EAAU,CAAC,QAAS,CAAC,CAAC,EAEtBq0B,EAAU,SAAUn2B,EAAKQ,EAAK,CAClC,GAAIc,EAAK,QACP,OAEF,IAAI80B,EAAqB,EAEzB,GAAI51B,GAAOA,EAAI,QAAS,CACtB41B,EAAqB51B,EAAI,QAAQ,OACjCsB,EAAQ,SAAWtB,EAAI,SACvB,IAAIqR,GAAU,KACVC,EAAU,KAGV,OAAOtR,EAAI,SAAY,WACzBqR,GAAUrR,EAAI,UAEZ,OAAOsB,EAAQ,UAAa,UAAY,OAAOA,EAAQ,UAAa,YACtEgQ,EAAUhQ,EAAQ,UAGpB,IAAMgF,EAAM,CAAC,EACbA,EAAI,MAAQxF,EAAK,aACjBd,EAAI,QAAUA,EAAI,QAAQ,OAAO,SAAUsD,GAAG,CAC5C+xB,IACA,IAAM7E,GAAMhqB,GAAa1F,CAAI,EAAEwC,EAAC,EAChC,OAAIktB,KACE1vB,EAAK,cAAgBA,EAAK,aAAeA,EAAK,QAChDmxB,GAA8B3uB,EAAC,EAE7BxC,EAAK,aACPQ,EAAQ,QAAQ,KAAKgC,EAAC,EAExBxC,EAAK,SAASwC,GAAG+N,GAASC,CAAO,GAE5Bkf,EACT,CAAC,CACH,SAAWhxB,EAAK,CAGdsB,EAAK,QAAU,GACfA,EAAK,SAAStB,CAAG,EACjB,MACF,CAIIQ,GAAOA,EAAI,WACbw1B,EAAiBx1B,EAAI,UAGvB,IAAM61B,EAAYpW,GAAS4V,GAAe,GACvCr1B,GAAO41B,EAAqBjK,GAC5B7qB,EAAK,WAEHA,EAAK,YAAc,EAAE2e,GAAS4V,GAAe,IAAO,CAACQ,EAExDhzB,GAAS,UAAY,CAAE+xB,EAAUY,EAAgBG,CAAO,CAAG,CAAC,EAG5D70B,EAAK,SAAS,KAAMQ,CAAO,CAE/B,EAEA,OAAAszB,EAAU9zB,EAAK,OAAS,EAAG60B,CAAO,EAG3B,CACL,OAAQ,UAAY,CAClB70B,EAAK,QAAU,GACfy0B,EAAW,MAAM,CACnB,CACF,CACF,EAKA1hB,EAAI,SAAW8f,EAAc,WAAY,eAAgBrtB,EAAKxF,EAAMvB,EAAU,CAExE,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAGV,GAAI,CAEF,IAAMnB,EAAS,MAAMk0B,EAAUtB,GAASa,EAAM,YAAY,EAAG,CAC3D,OAAQ,OACR,KAAM,KAAK,UAAU9sB,CAAG,CAC1B,CAAC,EACD/G,EAAS,KAAMI,EAAO,IAAI,CAC5B,OAASyE,EAAO,CACd7E,EAAS6E,CAAK,CAChB,CACF,CAAC,EAEDyP,EAAI,OAAS,SAAUtU,EAAU,CAC/BA,EAAS,CACX,EAEAsU,EAAI,SAAW,eAAgB0f,EAASh0B,EAAU,CAChD,GAAI,CACF,IAAMmnB,EAAO,MAAMmN,EAAUtB,GAASa,EAAM,EAAE,EAAG,CAAC,OAAQ,QAAQ,CAAC,EACnE7zB,EAAS,KAAMmnB,CAAI,CACrB,OAAStiB,EAAO,CACVA,EAAM,SAAW,IACnB7E,EAAS,KAAM,CAAC,GAAI,EAAI,CAAC,EAEzBA,EAAS6E,CAAK,CAElB,CACF,CACF,CAGA+uB,GAAU,MAAQ,UAAY,CAC5B,MAAO,EACT,EAEA,SAAS2C,GAAalkB,EAAS,CAC7BA,EAAQ,QAAQ,OAAQuhB,GAAW,EAAK,EACxCvhB,EAAQ,QAAQ,QAASuhB,GAAW,EAAK,CAC3C,CAEA,IAAM4C,GAAN,MAAMC,UAAwB,KAAM,CAClC,YAAYnP,EAAS,CACnB,MAAM,EACN,KAAK,OAAS,IACd,KAAK,KAAO,oBACZ,KAAK,QAAUA,EACf,KAAK,MAAQ,GACb,GAAI,CACF,MAAM,kBAAkB,KAAMmP,CAAe,CAC/C,MAAY,CAAC,CACf,CACF,EAEMC,GAAN,MAAMC,UAAsB,KAAM,CAChC,YAAYrP,EAAS,CACnB,MAAM,EACN,KAAK,OAAS,IACd,KAAK,KAAO,YACZ,KAAK,QAAUA,EACf,KAAK,MAAQ,GACb,GAAI,CACF,MAAM,kBAAkB,KAAMqP,CAAa,CAC7C,MAAY,CAAC,CACf,CACF,EAEMC,GAAN,MAAMC,UAAqB,KAAM,CAC/B,YAAYvP,EAAS,CACnB,MAAM,EACN,KAAK,OAAS,IACd,KAAK,KAAO,gBACZ,KAAK,QAAUA,EACf,KAAK,MAAQ,GACb,GAAI,CACF,MAAM,kBAAkB,KAAMuP,CAAY,CAC5C,MAAY,CAAC,CACf,CACF,EAEA,SAASC,GAAiBl3B,EAASI,EAAU,CAC3C,OAAIA,GACFJ,EAAQ,KAAK,SAAUa,EAAK,CAC1B6C,GAAS,UAAY,CACnBtD,EAAS,KAAMS,CAAG,CACpB,CAAC,CACH,EAAG,SAAUqE,EAAQ,CACnBxB,GAAS,UAAY,CACnBtD,EAAS8E,CAAM,CACjB,CAAC,CACH,CAAC,EAEIlF,CACT,CAEA,SAASm3B,GAAY13B,EAAK,CACxB,OAAO,YAAaE,EAAM,CACxB,IAAIuU,EAAKvU,EAAK,IAAI,EACdK,EAAUP,EAAI,MAAM,KAAME,CAAI,EAClC,OAAI,OAAOuU,GAAO,YAChBgjB,GAAiBl3B,EAASkU,CAAE,EAEvBlU,CACT,CACF,CAGA,SAASo3B,GAAIp3B,EAASq3B,EAAqB,CACzC,OAAOr3B,EAAQ,KAAK,SAAUa,EAAK,CACjC,OAAOw2B,EAAoB,EAAE,KAAK,UAAY,CAC5C,OAAOx2B,CACT,CAAC,CACH,EAAG,SAAUqE,EAAQ,CACnB,OAAOmyB,EAAoB,EAAE,KAAK,UAAY,CAC5C,MAAMnyB,CACR,CAAC,CACH,CAAC,CACH,CAEA,SAASoyB,GAActnB,EAAOunB,EAAgB,CAC5C,OAAO,UAAY,CACjB,IAAI53B,EAAO,UACP63B,EAAO,KACX,OAAOxnB,EAAM,IAAI,UAAY,CAC3B,OAAOunB,EAAe,MAAMC,EAAM73B,CAAI,CACxC,CAAC,CACH,CACF,CAIA,SAAS83B,GAAKt2B,EAAK,CACjB,IAAIu2B,EAAS,IAAI,IAAIv2B,CAAG,EACpBX,EAAS,IAAI,MAAMk3B,EAAO,IAAI,EAC9B3O,EAAQ,GACZ,OAAA2O,EAAO,QAAQ,SAAUz4B,EAAO,CAC9BuB,EAAO,EAAEuoB,CAAK,EAAI9pB,CACpB,CAAC,EACMuB,CACT,CAEA,SAASm3B,GAAeC,EAAK,CAC3B,IAAIp3B,EAAS,IAAI,MAAMo3B,EAAI,IAAI,EAC3B7O,EAAQ,GACZ,OAAA6O,EAAI,QAAQ,SAAU34B,EAAO0D,EAAK,CAChCnC,EAAO,EAAEuoB,CAAK,EAAIpmB,CACpB,CAAC,EACMnC,CACT,CAEA,SAASq3B,GAAmBn3B,EAAM,CAChC,IAAIgnB,EAAU,WAAahnB,EACzB,+DAEF,OAAO,IAAIs2B,GAAatP,CAAO,CACjC,CAEA,SAASoQ,GAAI5uB,EAAQ,CAEnB,QADI1I,EAAS,EACJlB,EAAI,EAAGC,EAAM2J,EAAO,OAAQ5J,EAAIC,EAAKD,IAAK,CACjD,IAAIwe,EAAM5U,EAAO5J,CAAC,EAClB,GAAI,OAAOwe,GAAQ,SACjB,GAAI,MAAM,QAAQA,CAAG,EAAG,CAEtBtd,EAAS,OAAOA,GAAW,SAAW,CAACA,CAAM,EAAIA,EACjD,QAAS0C,EAAI,EAAG60B,EAAOja,EAAI,OAAQ5a,EAAI60B,EAAM70B,IAAK,CAChD,IAAI80B,EAAOla,EAAI5a,CAAC,EAChB,GAAI,OAAO80B,GAAS,SAClB,MAAMH,GAAmB,MAAM,EACtB,OAAOr3B,EAAO0C,CAAC,EAAM,IAC9B1C,EAAO,KAAKw3B,CAAI,EAEhBx3B,EAAO0C,CAAC,GAAK80B,CAEjB,CACF,KACE,OAAMH,GAAmB,MAAM,OAExB,OAAOr3B,GAAW,SAC3BA,GAAUsd,EAEVtd,EAAO,CAAC,GAAKsd,CAEjB,CACA,OAAOtd,CACT,CAEA,IAAIy3B,GAAM7zB,GAAe,KAAK,KAAM,KAAK,EACrCoZ,GAAU,MAAM,QAChB0a,GAAS,KAAK,MAElB,SAASC,GAAqBt4B,EAAMu4B,EAAM,CACxC,OAAOrvB,GACL,WAAalJ,EAAK,QAAQ,QAAS,EAAE,EAAI,KACzC,CACE,KAAAu4B,EACA,IAAAN,GACA,IAAAG,GACA,QAAAza,GACA,OAAA0a,EACF,CACF,CACF,CAOA,IAAMG,GAAN,KAAkB,CAChB,aAAc,CACZ,KAAK,QAAU,QAAQ,QAAQ,CACjC,CAEA,IAAId,EAAgB,CAClB,YAAK,QAAU,KAAK,QAEjB,MAAM,IAAM,CAAE,CAAC,EACf,KAAK,IAAMA,EAAe,CAAC,EACvB,KAAK,OACd,CAEA,QAAS,CACP,OAAO,KAAK,OACd,CACF,EAEA,SAASe,GAAUzc,EAAO,CACxB,GAAI,CAACA,EACH,MAAO,YAIT,OAAQ,OAAOA,EAAO,CACpB,IAAK,WAEH,OAAOA,EAAM,SAAS,EACxB,IAAK,SAEH,OAAOA,EAAM,SAAS,EACxB,QAEE,OAAO,KAAK,UAAUA,CAAK,CAC/B,CACF,CAGA,SAAS0c,GAAoB7V,EAAQ8V,EAAW,CAE9C,OAAOF,GAAU5V,CAAM,EAAI4V,GAAUE,CAAS,EAAI,WACpD,CAEA,eAAeC,GAAWC,EAAUlW,EAAUE,EAAQ8V,EAAWG,EAAWC,EAAc,CACxF,IAAMC,EAAgBN,GAAoB7V,EAAQ8V,CAAS,EAEvDM,EACJ,GAAI,CAACH,IAEHG,EAAcJ,EAAS,aAAeA,EAAS,cAAgB,CAAC,EAC5DI,EAAYD,CAAa,GAC3B,OAAOC,EAAYD,CAAa,EAIpC,IAAME,EAAiBL,EAAS,KAAK,EAAE,KAAK,eAAgBt2B,EAAM,CAChE,IAAM42B,EAAY52B,EAAK,QAAU,YAChCu2B,EAAY,OAASpsB,GAAUssB,CAAa,GAI7C,SAASI,EAAa/xB,EAAK,CACzBA,EAAI,MAAQA,EAAI,OAAS,CAAC,EAC1B,IAAIgyB,EAAe1W,EACf0W,EAAa,QAAQ,GAAG,IAAM,KAChCA,EAAe1W,EAAW,IAAMA,GAElC,IAAM2W,EAASjyB,EAAI,MAAMgyB,CAAY,EAAIhyB,EAAI,MAAMgyB,CAAY,GAAK,CAAC,EAErE,GAAI,CAAAC,EAAOH,CAAS,EAGpB,OAAAG,EAAOH,CAAS,EAAI,GACb9xB,CACT,CACA,MAAMiC,GAAOuvB,EAAU,UAAYE,EAAcK,CAAY,EAE7D,IAAMv3B,GADM,MAAMg3B,EAAS,0BAA0BM,CAAS,GAC/C,GACft3B,EAAG,gBAAkB,GACrB,IAAM03B,EAAO,CACX,KAAMJ,EACN,GAAAt3B,EACA,SAAAg3B,EACA,QAASA,EAAS,QAClB,OAAAhW,EACA,UAAA8V,CACF,EAEIa,EACJ,GAAI,CACFA,EAAa,MAAMD,EAAK,GAAG,IAAI,gBAAgB,CACjD,OAAS/4B,EAAK,CAEZ,GAAIA,EAAI,SAAW,IACjB,MAAMA,CAEV,CAEA,OAAA+4B,EAAK,IAAMC,EAAaA,EAAW,IAAM,EACrCP,GACFM,EAAK,GAAG,KAAK,YAAa,UAAY,CACpC,OAAON,EAAYD,CAAa,CAClC,CAAC,EAEIO,CACT,CAAC,EAED,OAAIN,IACFA,EAAYD,CAAa,EAAIE,GAExBA,CACT,CAEA,IAAMO,GAAmB,CAAC,EACpBC,GAAgB,IAAIlB,GACpBmB,GAAuB,GAE7B,SAASC,GAAc/4B,EAAM,CAG3B,OAAOA,EAAK,QAAQ,GAAG,IAAM,GAAK,CAACA,EAAMA,CAAI,EAAIA,EAAK,MAAM,GAAG,CACjE,CAEA,SAASg5B,GAAS9K,EAAS,CAGzB,OAAOA,EAAQ,SAAW,GAAK,MAAM,KAAKA,EAAQ,CAAC,EAAE,GAAG,CAC1D,CAEA,SAAS+K,GAAUj4B,EAAI,EAAGqF,EAAM,CAC9B,GAAI,CACFrF,EAAG,KAAK,QAAS,CAAC,CACpB,MAAc,CACZ0C,GAAe,QACb;AAAA;AAAA;AAAA,8CAG+C,EACjDA,GAAe,QAAS,EAAG2C,CAAI,CACjC,CACF,CA4BA,SAAS6yB,GAAwBhB,EAAciB,EAAQC,EAASC,EAAe,CAE7E,SAASC,EAAOt4B,EAAIjC,EAAKyH,EAAK,CAG5B,GAAI,CACFzH,EAAIyH,CAAG,CACT,OAAS3G,EAAG,CACVo5B,GAAUj4B,EAAInB,EAAG,CAAC,IAAAd,EAAK,IAAAyH,CAAG,CAAC,CAC7B,CACF,CAEA,SAAS+yB,EAAUv4B,EAAIjC,EAAK2I,EAAMc,EAAQgxB,EAAU,CAKlD,GAAI,CACF,MAAO,CAAC,OAASz6B,EAAI2I,EAAMc,EAAQgxB,CAAQ,CAAC,CAC9C,OAAS35B,EAAG,CACV,OAAAo5B,GAAUj4B,EAAInB,EAAG,CAAC,IAAAd,EAAK,KAAA2I,EAAM,OAAAc,EAAQ,SAAAgxB,CAAQ,CAAC,EACvC,CAAC,MAAO35B,CAAC,CAClB,CACF,CAEA,SAAS45B,EAAmB54B,EAAG64B,EAAG,CAChC,IAAMC,EAAa1d,GAAQpb,EAAE,IAAK64B,EAAE,GAAG,EACvC,OAAOC,IAAe,EAAIA,EAAa1d,GAAQpb,EAAE,MAAO64B,EAAE,KAAK,CACjE,CAEA,SAASE,EAAan4B,EAASme,EAAOD,EAAM,CAE1C,OADAA,EAAOA,GAAQ,EACX,OAAOC,GAAU,SACZne,EAAQ,MAAMke,EAAMC,EAAQD,CAAI,EAC9BA,EAAO,EACTle,EAAQ,MAAMke,CAAI,EAEpBle,CACT,CAEA,SAASo4B,EAAWjjB,EAAK,CACvB,IAAM+F,EAAM/F,EAAI,MAIhB,OADe+F,GAAO,OAAOA,GAAQ,UAAYA,EAAI,KAAQ/F,EAAI,EAEnE,CAEA,SAASwb,EAA8BjyB,EAAK,CAC1C,QAAWyW,KAAOzW,EAAI,KAAM,CAC1B,IAAMiS,EAAOwE,EAAI,KAAOA,EAAI,IAAI,aAChC,GAAKxE,EAGL,QAAWgY,KAAY,OAAO,KAAKhY,CAAI,EAAG,CACxC,IAAMrL,EAAMqL,EAAKgY,CAAQ,EACzBhY,EAAKgY,CAAQ,EAAE,KAAO1gB,GAAa3C,EAAI,KAAMA,EAAI,YAAY,CAC/D,CACF,CACF,CAEA,SAAS+yB,EAAuB74B,EAAM,CACpC,OAAO,SAAUd,EAAK,CACpB,OAAIc,EAAK,cAAgBA,EAAK,aAAeA,EAAK,QAChDmxB,EAA8BjyB,CAAG,EAE5BA,CACT,CACF,CAEA,SAAS45B,EAAaC,EAAW/4B,EAAM6xB,EAAQmH,EAAQ,CAErD,IAAItd,EAAM1b,EAAK+4B,CAAS,EACpB,OAAOrd,EAAQ,MACbsd,IACFtd,EAAM,mBAAmB,KAAK,UAAUA,CAAG,CAAC,GAE9CmW,EAAO,KAAKkH,EAAY,IAAMrd,CAAG,EAErC,CAEA,SAASud,EAAcC,EAAkB,CACvC,GAAI,OAAOA,EAAqB,IAAa,CAC3C,IAAMC,EAAW,OAAOD,CAAgB,EAExC,MAAI,CAAC,MAAMC,CAAQ,GAAKA,IAAa,SAASD,EAAkB,EAAE,EACzDC,EAEAD,CAEX,CACF,CAEA,SAASE,EAAcp5B,EAAM,CAC3B,OAAAA,EAAK,YAAci5B,EAAcj5B,EAAK,WAAW,EACjDA,EAAK,MAAQi5B,EAAcj5B,EAAK,KAAK,EACrCA,EAAK,KAAOi5B,EAAcj5B,EAAK,IAAI,EAC5BA,CACT,CAEA,SAASq5B,EAAqBC,EAAQ,CACpC,GAAIA,EAAQ,CACV,GAAI,OAAOA,GAAW,SACpB,OAAQ,IAAIrE,GAAgB,+BAA+BqE,CAAM,GAAG,EAEtE,GAAIA,EAAS,EACX,OAAO,IAAIrE,GAAgB,wCAAwCqE,CAAM,GAAG,CAEhF,CACF,CAEA,SAASC,EAAqB9G,EAAS30B,EAAK,CAC1C,IAAM07B,EAAe/G,EAAQ,WAAa,SAAW,WAC/CgH,EAAahH,EAAQ,WAAa,WAAa,SAErD,GAAI,OAAOA,EAAQ+G,CAAY,EAAM,KACnC,OAAO/G,EAAQgH,CAAU,EAAM,KAC/Bze,GAAQyX,EAAQ+G,CAAY,EAAG/G,EAAQgH,CAAU,CAAC,EAAI,EACtD,MAAM,IAAIxE,GAAgB,iGACuC,EAC5D,GAAIn3B,EAAI,QAAU20B,EAAQ,SAAW,GAAO,CACjD,GAAIA,EAAQ,aACV,MAAM,IAAIwC,GAAgB,2CAA2C,EAChE,GAAIxC,EAAQ,MAAQA,EAAQ,KAAK,OAAS,GAC/C,CAACA,EAAQ,OAAS,CAACA,EAAQ,YAC3B,MAAM,IAAIwC,GAAgB,2DACT,CAErB,CACA,QAAWyE,IAAc,CAAC,cAAe,QAAS,MAAM,EAAG,CACzD,IAAMp2B,EAAQ+1B,EAAqB5G,EAAQiH,CAAU,CAAC,EACtD,GAAIp2B,EACF,MAAMA,CAEV,CACF,CAEA,eAAeq2B,EAAU55B,EAAIjC,EAAKkC,EAAM,CAEtC,IAAI6xB,EAAS,CAAC,EACVxL,EACA3jB,EAAS,MACTk3B,GA8BJ,GAxBAd,EAAa,SAAU94B,EAAM6xB,CAAM,EACnCiH,EAAa,eAAgB94B,EAAM6xB,CAAM,EACzCiH,EAAa,cAAe94B,EAAM6xB,CAAM,EACxCiH,EAAa,QAAS94B,EAAM6xB,CAAM,EAClCiH,EAAa,aAAc94B,EAAM6xB,CAAM,EACvCiH,EAAa,QAAS94B,EAAM6xB,CAAM,EAClCiH,EAAa,cAAe94B,EAAM6xB,CAAM,EACxCiH,EAAa,OAAQ94B,EAAM6xB,CAAM,EACjCiH,EAAa,QAAS94B,EAAM6xB,CAAM,EAClCiH,EAAa,YAAa94B,EAAM6xB,CAAM,EACtCiH,EAAa,WAAY94B,EAAM6xB,EAAQ,EAAI,EAC3CiH,EAAa,YAAa94B,EAAM6xB,EAAQ,EAAI,EAC5CiH,EAAa,SAAU94B,EAAM6xB,EAAQ,EAAI,EACzCiH,EAAa,UAAW94B,EAAM6xB,EAAQ,EAAI,EAC1CiH,EAAa,gBAAiB94B,EAAM6xB,CAAM,EAC1CiH,EAAa,MAAO94B,EAAM6xB,EAAQ,EAAI,EACtCiH,EAAa,aAAc94B,EAAM6xB,CAAM,EAGvCA,EAASA,EAAO,KAAK,GAAG,EACxBA,EAASA,IAAW,GAAK,GAAK,IAAMA,EAIhC,OAAO7xB,EAAK,KAAS,IAAa,CAKpC,IAAM65B,EAAe,QAAQ,mBAAmB,KAAK,UAAU75B,EAAK,IAAI,CAAC,CAAC,GACtE65B,EAAa,OAAShI,EAAO,OAAS,GAAK,IAG7CA,IAAWA,EAAO,CAAC,IAAM,IAAM,IAAM,KAAOgI,GAE5Cn3B,EAAS,OACL,OAAO5E,GAAQ,SACjBuoB,EAAO,CAAC,KAAMrmB,EAAK,IAAI,EAEvBlC,EAAI,KAAOkC,EAAK,KAGtB,CAGA,GAAI,OAAOlC,GAAQ,SAAU,CAC3B,IAAMwI,EAAQwxB,GAAch6B,CAAG,EAEzBk1B,EAAW,MAAMjzB,EAAG,MAAM,WAAauG,EAAM,CAAC,EAAI,UAAYA,EAAM,CAAC,EAAIurB,EAAQ,CACrF,QAAS,IAAI1a,GAAE,CAAC,eAAgB,kBAAkB,CAAC,EACnD,OAAAzU,EACA,KAAM,KAAK,UAAU2jB,CAAI,CAC3B,CAAC,EACDuT,GAAK5G,EAAS,GAEd,IAAMn0B,GAAS,MAAMm0B,EAAS,KAAK,EAEnC,GAAI,CAAC4G,GACH,MAAA/6B,GAAO,OAASm0B,EAAS,OACnB7tB,GAA0BtG,EAAM,EAIxC,QAAW8W,MAAO9W,GAAO,KAEvB,GAAI8W,GAAI,OAASA,GAAI,MAAM,OAASA,GAAI,MAAM,QAAU,uBACtD,MAAM,IAAI,MAAMA,GAAI,MAAM,EAI9B,OAAO,IAAI,QAAQ,SAAU2L,GAAS,CACpCA,GAAQziB,EAAM,CAChB,CAAC,EAAE,KAAKg6B,EAAuB74B,CAAI,CAAC,CACtC,CAGAqmB,EAAOA,GAAQ,CAAC,EAChB,QAAWrlB,KAAO,OAAO,KAAKlD,CAAG,EAC3B,MAAM,QAAQA,EAAIkD,CAAG,CAAC,EACxBqlB,EAAKrlB,CAAG,EAAIlD,EAAIkD,CAAG,EAEnBqlB,EAAKrlB,CAAG,EAAIlD,EAAIkD,CAAG,EAAE,SAAS,EAIlC,IAAMgyB,EAAW,MAAMjzB,EAAG,MAAM,aAAe8xB,EAAQ,CACrD,QAAS,IAAI1a,GAAE,CAAC,eAAgB,kBAAkB,CAAC,EACnD,OAAQ,OACR,KAAM,KAAK,UAAUkP,CAAI,CAC3B,CAAC,EAEDuT,GAAK5G,EAAS,GAEd,IAAMn0B,EAAS,MAAMm0B,EAAS,KAAK,EACnC,GAAI,CAAC4G,GACH,MAAA/6B,EAAO,OAASm0B,EAAS,OACnB7tB,GAA0BtG,CAAM,EAGxC,OAAO,IAAI,QAAQ,SAAUyiB,EAAS,CACpCA,EAAQziB,CAAM,CAChB,CAAC,EAAE,KAAKg6B,EAAuB74B,CAAI,CAAC,CACtC,CAKA,SAAS85B,EAAY/5B,EAAIjC,EAAKkC,EAAM,CAClC,OAAO,IAAI,QAAQ,SAAUshB,EAAS/iB,EAAQ,CAC5CwB,EAAG,OAAOjC,EAAKkC,EAAM,SAAUtB,EAAKQ,GAAK,CACvC,GAAIR,EACF,OAAOH,EAAOG,CAAG,EAEnB4iB,EAAQpiB,EAAG,CACb,CAAC,CACH,CAAC,CACH,CAKA,SAAS66B,EAAkBh6B,EAAI,CAC7B,OAAO,IAAI,QAAQ,SAAUuhB,EAAS/iB,EAAQ,CAC5CwB,EAAG,aAAa,SAAUrB,EAAKQ,EAAK,CAClC,GAAIR,EACF,OAAOH,EAAOG,CAAG,EAEnB4iB,EAAQpiB,CAAG,CACb,CAAC,CACH,CAAC,CACH,CAEA,SAAS86B,EAAW18B,EAAO,CACzB,OAAO,SAAUiG,EAAQ,CAEvB,GAAIA,EAAO,SAAW,IACpB,OAAOjG,EAEP,MAAMiG,CAEV,CACF,CAKA,eAAe02B,EAAiB34B,EAAOm2B,EAAMyC,EAAyB,CACpE,IAAMC,EAAY,cAAgB74B,EAC5B84B,EAAiB,CAAC,IAAKD,EAAW,KAAM,CAAC,CAAC,EAC1CE,EAAUH,EAAwB,IAAI54B,CAAK,EAC3Cg5B,GAA2BD,EAAQ,CAAC,EACpCpN,EAAUoN,EAAQ,CAAC,EAEzB,SAASE,GAAa,CACpB,OAAIxC,GAAS9K,CAAO,EAGX,QAAQ,QAAQmN,CAAc,EAEhC3C,EAAK,GAAG,IAAI0C,CAAS,EAAE,MAAMH,EAAWI,CAAc,CAAC,CAChE,CAEA,SAASI,EAAgBrS,GAAS,CAChC,OAAKA,GAAQ,KAAK,OAIXsP,EAAK,GAAG,QAAQ,CACrB,KAAMtP,GAAQ,KACd,aAAc,EAChB,CAAC,EALQ,QAAQ,QAAQ,CAAC,KAAM,CAAC,CAAC,CAAC,CAMrC,CAEA,SAASsS,EAAoBtS,GAASuS,GAAW,CAC/C,IAAMC,GAAS,CAAC,EACVC,GAAU,IAAI,IAEpB,QAAWjlB,MAAO+kB,GAAU,KAAM,CAChC,IAAMn1B,GAAMoQ,GAAI,IAChB,GAAKpQ,KAGLo1B,GAAO,KAAKp1B,EAAG,EACfq1B,GAAQ,IAAIr1B,GAAI,GAAG,EACnBA,GAAI,SAAW,CAAC+0B,GAAyB,IAAI/0B,GAAI,GAAG,EAChD,CAACA,GAAI,UAAU,CACjB,IAAMs1B,GAAWP,GAAyB,IAAI/0B,GAAI,GAAG,EACjD,UAAWs1B,KACbt1B,GAAI,MAAQs1B,GAAS,MAEzB,CACF,CACA,IAAMC,GAAU9E,GAAesE,EAAwB,EACvD,QAAWt5B,MAAO85B,GAChB,GAAI,CAACF,GAAQ,IAAI55B,EAAG,EAAG,CAErB,IAAM+5B,GAAQ,CACZ,IAAK/5B,EACP,EACM65B,GAAWP,GAAyB,IAAIt5B,EAAG,EAC7C,UAAW65B,KACbE,GAAM,MAAQF,GAAS,OAEzBF,GAAO,KAAKI,EAAK,CACnB,CAEF,OAAA5S,GAAQ,KAAO2N,GAAKgF,GAAQ,OAAO3S,GAAQ,IAAI,CAAC,EAChDwS,GAAO,KAAKxS,EAAO,EAEZwS,EACT,CAEA,IAAMxS,GAAU,MAAMoS,EAAW,EAC3BS,GAAe,MAAMR,EAAgBrS,EAAO,EAClD,OAAOsS,EAAoBtS,GAAS6S,EAAY,CAClD,CAEA,SAASC,EAAexD,EAAM,CAG5B,OAAOA,EAAK,SAAS,IAAI,eAAe,EAAE,KAAK,SAAUv4B,EAAK,CAC5D,IAAM+S,EAAW/S,EAAI,SACrB,OAAOu4B,EAAK,GAAG,IAAI,iBAAiB,EAAE,KAAK,SAAUv4B,EAAK,CACxD,OAAOA,EAAI,IACb,CAAC,EACA,MAAM86B,EAAW,MAAS,CAAC,EAC3B,KAAK,SAAUroB,EAAQ,CACtB,OAAO8lB,EAAK,GAAG,IAAI,CACjB,IAAK,kBACL,KAAM9lB,EACN,SAAAM,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAAE,MAAM,SAAUvT,EAAK,CACtB,GAAIA,EAAI,SAAW,IACjB,MAAMA,CAEV,CAAC,CACH,CAIA,SAASw8B,EAAczD,EAAMyC,EAAyB7S,EAAK,CACzD,IAAI8T,EAAW,iBACf,OAAO1D,EAAK,GAAG,IAAI0D,CAAQ,EACxB,MAAMnB,EAAW,CAAC,IAAKmB,EAAU,IAAK,CAAC,CAAC,CAAC,EACzC,KAAK,SAAUzD,EAAY,CAC1B,IAAIxK,EAAS8I,GAAekE,CAAuB,EACnD,OAAO,QAAQ,IAAIhN,EAAO,IAAI,SAAU5rB,GAAO,CAC7C,OAAO24B,EAAiB34B,GAAOm2B,EAAMyC,CAAuB,CAC9D,CAAC,CAAC,EAAE,KAAK,SAAUkB,GAAqB,CACtC,IAAIC,EAAgBD,GAAoB,KAAK,EAC7C,OAAA1D,EAAW,IAAMrQ,EACjBgU,EAAc,KAAK3D,CAAU,EAEtBD,EAAK,GAAG,SAAS,CAAC,KAAO4D,CAAa,CAAC,CAChD,CAAC,EAGE,KAAK,IAAMJ,EAAexD,CAAI,CAAC,CACpC,CAAC,CACL,CAEA,SAAS6D,EAAS7D,EAAM,CACtB,IAAM5W,EAAW,OAAO4W,GAAS,SAAWA,EAAOA,EAAK,KACpDppB,EAAQspB,GAAiB9W,CAAQ,EACrC,OAAKxS,IACHA,EAAQspB,GAAiB9W,CAAQ,EAAI,IAAI6V,IAEpCroB,CACT,CAEA,eAAektB,EAAW9D,EAAMz3B,EAAM,CACpC,OAAO21B,GAAc2F,EAAS7D,CAAI,EAAG,UAAY,CAC/C,OAAO+D,EAAkB/D,EAAMz3B,CAAI,CACrC,CAAC,EAAE,CACL,CAEA,eAAew7B,EAAkB/D,EAAMz3B,EAAM,CAE3C,IAAIy7B,EACAl2B,EACAiQ,EAEJ,SAASihB,EAAKz1B,GAAK1D,GAAO,CACxB,IAAMo+B,GAAS,CAAC,GAAIn2B,EAAI,IAAK,IAAK0V,GAAaja,EAAG,CAAC,EAG/C,OAAO1D,GAAU,KAAeA,KAAU,OAC5Co+B,GAAO,MAAQzgB,GAAa3d,EAAK,GAEnCm+B,EAAW,KAAKC,EAAM,CACxB,CAEA,IAAM3a,GAASmX,EAAOT,EAAK,OAAQhB,CAAI,EAEnCkF,EAAalE,EAAK,KAAO,EAE7B,SAASmE,GAAa,CACpB,OAAOnE,EAAK,SAAS,KAAK,EAAE,KAAK,SAAUh3B,GAAM,CAC/C+U,EAASiiB,EAAK,SAAS,YAAY,IAAI,CACrC,KAAM,gBACN,YAAah3B,GAAK,WAAak7B,CACjC,CAAC,CACH,CAAC,CACH,CAEA,SAASlrB,EAAcypB,GAAyB7S,GAAK,CACnD,OAAO,UAAY,CACjB,OAAO6T,EAAczD,EAAMyC,GAAyB7S,EAAG,CACzD,CACF,CAEA,IAAIwU,EAAe,EACbC,GAAW,CACf,KAAMrE,EAAK,KACX,aAAAoE,CACF,EACApE,EAAK,SAAS,KAAK,WAAYqE,EAAQ,EAEvC,IAAMztB,GAAQ,IAAIqoB,GAElB,eAAeqF,IAAmB,CAChC,IAAM/I,GAAW,MAAMyE,EAAK,SAAS,QAAQ,CAC3C,YAAa,GACb,UAAW,GACX,aAAc,GACd,MAAO,WACP,MAAOkE,EACP,MAAO37B,EAAK,kBACd,CAAC,EACKg8B,GAAS,MAAMC,GAAgB,EACrC,OAAO76B,GAAa4xB,GAAUgJ,EAAM,CACtC,CAEA,SAASC,IAAkB,CACzB,OAAOxE,EAAK,GAAG,IAAI,iBAAiB,EAAE,KAAK,SAAUv4B,GAAK,CACxD,OAAOA,GAAI,QACb,CAAC,EACA,MAAM86B,EAAW,EAAE,CAAC,EACpB,KAAK,SAAU/nB,GAAU,CACxB,OAAOwlB,EAAK,SAAS,IAAI,eAAe,EAAE,KAAK,SAAUv4B,GAAK,CAC5D,IAAMg9B,GAAeh9B,GAAI,OAAO,OAAO,SAAUi9B,GAAO/U,GAAO,CAC7D,OAAOA,GAAQnV,EACjB,CAAC,EAAE,IAAKkqB,IAAUA,GAAM,KAAK,EAEvBC,GAAeF,GAAa,OAAO,SAAU56B,GAAO8lB,GAAO,CAC/D,OAAO8U,GAAa,QAAQ56B,EAAK,IAAM8lB,EACzC,CAAC,EAED,OAAO,QAAQ,IAAIgV,GAAa,IAAI,SAAU96B,GAAO,CACnD,OAAOm2B,EAAK,SAAS,IAAIn2B,EAAK,EAAE,KAAK,SAAUiE,GAAK,CAClD,MAAO,CAAE,MAAAjE,GAAO,IAAAiE,EAAI,CACtB,CAAC,EACA,MAAMy0B,EAAW,CAAE,MAAA14B,EAAM,CAAC,CAAC,CAC9B,CAAC,CAAC,CACJ,CAAC,EACA,MAAM04B,EAAW,CAAC,CAAC,CAAC,CACvB,CAAC,CACH,CAEA,SAAS54B,GAAa4xB,GAAUgJ,GAAQ,CACtC,IAAMx7B,GAAUwyB,GAAS,QACzB,GAAI,CAACxyB,GAAQ,QAAU,CAACw7B,GAAO,OAC7B,OAGF,QAAWG,MAASH,GAIlB,GAHcx7B,GAAQ,UAAU,SAAUoF,GAAQ,CAChD,OAAOA,GAAO,KAAOu2B,GAAM,KAC7B,CAAC,EACW,EAAG,CAEb,IAAME,GAAQ,CACZ,IAAKF,GAAM,MACX,IAAK,CACH,IAAKA,GAAM,MACX,SAAU,CACZ,EACA,QAAS,CAAC,CACZ,EAEIA,GAAM,MAERE,GAAM,IAAMF,GAAM,IAClBE,GAAM,QAAQ,KAAK,CAAE,IAAKF,GAAM,IAAI,IAAK,CAAC,GAG5C37B,GAAQ,KAAK67B,EAAK,CACpB,CAGF,IAAMnC,GAA0BoC,GAA8B97B,EAAO,EAErE6N,GAAM,IAAIoC,EAAcypB,GAAyByB,CAAU,CAAC,EAE5DE,EAAeA,EAAer7B,GAAQ,OACtC,IAAMs7B,GAAW,CACf,KAAMrE,EAAK,KACX,SAAUzE,GAAS,SACnB,cAAexyB,GAAQ,OACvB,aAAAq7B,CACF,EAIA,GAHApE,EAAK,SAAS,KAAK,WAAYqE,EAAQ,EACvCrE,EAAK,SAAS,YAAY,OAAOjiB,EAAQ,CAAC,gBAAiBqmB,CAAY,CAAC,EAEpE,EAAAr7B,GAAQ,OAASR,EAAK,oBAG1B,OAAO+7B,GAAiB,CAC1B,CAEA,SAASO,GAA8B97B,GAAS,CAC9C,IAAM05B,GAA0B,IAAI,IACpC,QAAWt0B,MAAUpF,GAAS,CAC5B,GAAIoF,GAAO,IAAI,IAAI,CAAC,IAAM,IAAK,CAC7B61B,EAAa,CAAC,EACdl2B,EAAMK,GAAO,IAERL,EAAI,UACP8yB,EAAOZ,EAAK,SAAU1W,GAAQxb,CAAG,EAEnCk2B,EAAW,KAAKjD,CAAkB,EAElC,IAAM8B,GAA2BiC,GAA+Bd,CAAU,EAC1EvB,GAAwB,IAAIt0B,GAAO,IAAI,IAAK,CAC1C00B,GACA10B,GAAO,OACT,CAAC,CACH,CACA+1B,EAAa/1B,GAAO,GACtB,CACA,OAAOs0B,EACT,CAEA,SAASqC,GAA+Bd,GAAY,CAClD,IAAMnB,GAA2B,IAAI,IACjChP,GACJ,QAAS3tB,GAAI,EAAGC,GAAM69B,GAAW,OAAQ99B,GAAIC,GAAKD,KAAK,CACrD,IAAM6+B,GAAkBf,GAAW99B,EAAC,EAC9B8+B,GAAa,CAACD,GAAgB,IAAKA,GAAgB,EAAE,EACvD7+B,GAAI,GAAKqd,GAAQwhB,GAAgB,IAAKlR,EAAO,IAAM,GACrDmR,GAAW,KAAK9+B,EAAC,EAEnB28B,GAAyB,IAAIxe,GAAkB2gB,EAAU,EAAGD,EAAe,EAC3ElR,GAAUkR,GAAgB,GAC5B,CACA,OAAOlC,EACT,CAEA,GAAI,CACF,MAAMsB,EAAW,EACjB,MAAMG,GAAiB,EACvB,MAAM1tB,GAAM,OAAO,EACnBopB,EAAK,IAAMkE,EACXlE,EAAK,SAAS,YAAY,OAAOjiB,CAAM,CACzC,OAASlS,GAAO,CACdm0B,EAAK,SAAS,YAAY,OAAOjiB,EAAQlS,EAAK,CAChD,CACF,CAEA,SAASo5B,EAAWjF,EAAMj3B,EAASiyB,EAAS,CACtCA,EAAQ,cAAgB,GAC1B,OAAOA,EAAQ,YAGjB,IAAMkK,EAAclK,EAAQ,OAASA,EAAQ,YACvCoE,EAAYsB,EAAQV,EAAK,SAAS,EAClCmF,EAAS,CAAC,EACVC,GAAM,MAAMpK,EAAQ,WAAW,EACjC,OAAO,kBACPA,EAAQ,YAEZ,QAAW5zB,KAAU2B,EAAS,CAC5B,IAAMs8B,EAAOF,EAAOA,EAAO,OAAS,CAAC,EACjCG,EAAWJ,EAAc99B,EAAO,IAAM,KAO1C,GAJI89B,GAAe,MAAM,QAAQI,CAAQ,IACvCA,EAAWA,EAAS,MAAM,EAAGF,EAAG,GAG9BC,GAAQ9hB,GAAQ8hB,EAAK,SAAUC,CAAQ,IAAM,EAAG,CAClDD,EAAK,KAAK,KAAK,CAACj+B,EAAO,IAAKA,EAAO,EAAE,CAAC,EACtCi+B,EAAK,OAAO,KAAKj+B,EAAO,KAAK,EAC7B,QACF,CACA+9B,EAAO,KAAK,CACV,KAAM,CAAC,CAAC/9B,EAAO,IAAKA,EAAO,EAAE,CAAC,EAC9B,OAAQ,CAACA,EAAO,KAAK,EACrB,SAAAk+B,CACF,CAAC,CACH,CAEAv8B,EAAU,CAAC,EACX,QAAWw8B,KAASJ,EAAQ,CAC1B,IAAMK,EAAY3E,EAAUb,EAAK,SAAUZ,EAAWmG,EAAM,KAAMA,EAAM,OAAQ,EAAK,EACrF,GAAIC,EAAU,OAASA,EAAU,iBAAiB5H,GAEhD,MAAM4H,EAAU,MAElBz8B,EAAQ,KAAK,CAEX,MAAOy8B,EAAU,MAAQ,KAAOA,EAAU,OAC1C,IAAKD,EAAM,QACb,CAAC,CACH,CAEA,MAAO,CAAE,KAAMrE,EAAan4B,EAASiyB,EAAQ,MAAOA,EAAQ,IAAI,CAAE,CACpE,CAEA,SAASyK,EAAUzF,EAAMz3B,EAAM,CAC7B,OAAO21B,GAAc2F,EAAS7D,CAAI,EAAG,UAAY,CAC/C,OAAO0F,GAAiB1F,EAAMz3B,CAAI,CACpC,CAAC,EAAE,CACL,CAEA,eAAem9B,GAAiB1F,EAAMz3B,EAAM,CAC1C,IAAIo9B,EACEC,EAAe5F,EAAK,WAAaz3B,EAAK,SAAW,GACjD0e,EAAO1e,EAAK,MAAQ,EACtB,OAAOA,EAAK,KAAS,KAAe,CAACA,EAAK,KAAK,SAEjDA,EAAK,MAAQ,EACb,OAAOA,EAAK,MAGd,eAAes9B,EAAcC,EAAU,CACrCA,EAAS,aAAe,GACxB,IAAMr+B,EAAM,MAAMu4B,EAAK,GAAG,QAAQ8F,CAAQ,EAC1C,OAAAH,EAAYl+B,EAAI,WAETA,EAAI,KAAK,IAAI,SAAUL,EAAQ,CAKpC,GAAI,UAAWA,EAAO,KAAO,OAAOA,EAAO,IAAI,OAAU,UACvDA,EAAO,IAAI,QAAU,KAAM,CAC3B,IAAM4H,GAAO,OAAO,KAAK5H,EAAO,IAAI,KAAK,EAAE,KAAK,EAG1C2+B,GAAe,CAAC,KAAM,MAAO,OAAO,EAC1C,GAAI,EAAE/2B,GAAO+2B,IAAgB/2B,GAAO+2B,IAClC,OAAO3+B,EAAO,IAAI,KAEtB,CAEA,IAAM4+B,EAAoB3gB,GAAqBje,EAAO,IAAI,GAAG,EAC7D,MAAO,CACL,IAAK4+B,EAAkB,CAAC,EACxB,GAAIA,EAAkB,CAAC,EACvB,MAAQ,UAAW5+B,EAAO,IAAMA,EAAO,IAAI,MAAQ,IACrD,CACF,CAAC,CACH,CAEA,eAAe6+B,GAAkBrf,EAAM,CACrC,IAAIsf,EAqBJ,GApBIN,EACFM,EAAejB,EAAWjF,EAAMpZ,EAAMre,CAAI,EACjC,OAAOA,EAAK,KAAS,IAC9B29B,EAAe,CACb,WAAYP,EACZ,OAAQ1e,EACR,KAAAL,CACF,EAGAsf,EAAe,CACb,WAAYP,EACZ,OAAQ1e,EACR,KAAMia,EAAata,EAAKre,EAAK,MAAMA,EAAK,IAAI,CAC9C,EAGEA,EAAK,aACP29B,EAAa,WAAalG,EAAK,KAE7Bz3B,EAAK,aAAc,CACrB,IAAMktB,EAAS4I,GAAKzX,EAAK,IAAIua,CAAU,CAAC,EAElCgF,EAAa,MAAMnG,EAAK,SAAS,QAAQ,CAC7C,KAAMvK,EACN,aAAc,GACd,UAAWltB,EAAK,UAChB,YAAaA,EAAK,YAClB,OAAQA,EAAK,MACf,CAAC,EACK69B,GAAe,IAAI,IACzB,QAAWloB,MAAOioB,EAAW,KAC3BC,GAAa,IAAIloB,GAAI,GAAIA,GAAI,GAAG,EAElC,QAAWA,MAAO0I,EAAM,CACtB,IAAM/c,GAAQs3B,EAAWjjB,EAAG,EACtBpQ,GAAMs4B,GAAa,IAAIv8B,EAAK,EAC9BiE,KACFoQ,GAAI,IAAMpQ,GAEd,CACF,CACA,OAAOo4B,CACT,CAEA,GAAI,OAAO39B,EAAK,KAAS,IAAa,CAEpC,IAAM89B,EADO99B,EAAK,KACS,IAAI,SAAUgB,GAAK,CAC5C,IAAMu8B,GAAW,CACf,SAAWzhB,GAAkB,CAAC9a,EAAG,CAAC,EAClC,OAAW8a,GAAkB,CAAC9a,GAAK,CAAC,CAAC,CAAC,CACxC,EAEA,OAAIhB,EAAK,aACPu9B,GAAS,WAAa,IAEjBD,EAAcC,EAAQ,CAC/B,CAAC,EAEKQ,GADS,MAAM,QAAQ,IAAID,CAAa,GACf,KAAK,EACpC,OAAOJ,GAAkBK,CAAe,CAC1C,KAAO,CACL,IAAMR,EAAW,CACf,WAAav9B,EAAK,UACpB,EAEIA,EAAK,aACPu9B,EAAS,WAAa,IAExB,IAAIS,EACAC,EAkBJ,GAjBI,cAAej+B,IACjBg+B,EAAWh+B,EAAK,WAEd,aAAcA,IAChBg+B,EAAWh+B,EAAK,UAEd,YAAaA,IACfi+B,EAASj+B,EAAK,SAEZ,WAAYA,IACdi+B,EAASj+B,EAAK,QAEZ,OAAOg+B,EAAa,MACtBT,EAAS,SAAWv9B,EAAK,WACvB8b,GAAkB,CAACkiB,EAAU,CAAC,CAAC,CAAC,EAChCliB,GAAkB,CAACkiB,CAAQ,CAAC,GAE5B,OAAOC,EAAW,IAAa,CACjC,IAAIpS,GAAe7rB,EAAK,gBAAkB,GACtCA,EAAK,aACP6rB,GAAe,CAACA,IAGlB0R,EAAS,OAASzhB,GAChB+P,GAAe,CAACoS,EAAQ,CAAC,CAAC,EAAI,CAACA,CAAM,CAAC,CAC1C,CACA,GAAI,OAAOj+B,EAAK,IAAQ,IAAa,CACnC,IAAMk+B,GAAWpiB,GAAkB,CAAC9b,EAAK,GAAG,CAAC,EACvCm+B,GAASriB,GAAkB,CAAC9b,EAAK,IAAK,CAAC,CAAC,CAAC,EAC3Cu9B,EAAS,YACXA,EAAS,OAASW,GAClBX,EAAS,SAAWY,KAEpBZ,EAAS,SAAWW,GACpBX,EAAS,OAASY,GAEtB,CACKd,IACC,OAAOr9B,EAAK,OAAU,WACxBu9B,EAAS,MAAQv9B,EAAK,OAExBu9B,EAAS,KAAO7e,GAGlB,IAAM7f,EAAS,MAAMy+B,EAAcC,CAAQ,EAC3C,OAAOG,GAAkB7+B,CAAM,CACjC,CACF,CAEA,eAAeu/B,EAAgBr+B,EAAI,CAKjC,OAJiB,MAAMA,EAAG,MAAM,gBAAiB,CAC/C,QAAS,IAAIoX,GAAE,CAAC,eAAgB,kBAAkB,CAAC,EACnD,OAAQ,MACV,CAAC,GACe,KAAK,CACvB,CAEA,eAAeknB,EAAiBt+B,EAAI,CAClC,GAAI,CACF,IAAMooB,EAAU,MAAMpoB,EAAG,IAAI,UAAYk3B,CAAY,EAC/CqH,EAAc,IAAI,IAExB,QAAW/G,KAAgB,OAAO,KAAKpP,EAAQ,KAAK,EAAG,CACrD,IAAM7hB,EAAQwxB,GAAcP,CAAY,EAClCgH,EAAgB,WAAaj4B,EAAM,CAAC,EACpCua,GAAWva,EAAM,CAAC,EACpBk4B,GAAQF,EAAY,IAAIC,CAAa,EACpCC,KACHA,GAAQ,IAAI,IACZF,EAAY,IAAIC,EAAeC,EAAK,GAEtCA,GAAM,IAAI3d,EAAQ,CACpB,CACA,IAAM7gB,EAAO,CACX,KAAOg2B,GAAesI,CAAW,EACjC,aAAe,EACjB,EAEMp/B,EAAM,MAAMa,EAAG,QAAQC,CAAI,EAC3By+B,EAAgB,CAAC,EACvB,QAAW9oB,KAAOzW,EAAI,KAAM,CAC1B,IAAMw/B,EAAW/oB,EAAI,IAAI,UAAU,CAAC,EACpC,QAAWkL,KAAYyd,EAAY,IAAI3oB,EAAI,GAAG,EAAG,CAC/C,IAAI4hB,GAAemH,EAAW,IAAM7d,EAE/BsH,EAAQ,MAAMoP,EAAY,IAG7BA,GAAe1W,GAEjB,IAAM8d,GAAc,OAAO,KAAKxW,EAAQ,MAAMoP,EAAY,CAAC,EAErDqH,GAAejpB,EAAI,KAAOA,EAAI,IAAI,OACtCA,EAAI,IAAI,MAAMkL,CAAQ,EACxB,QAAWge,MAAcF,GACvBF,EAAcI,EAAU,EAAIJ,EAAcI,EAAU,GAAKD,EAE7D,CACF,CAKA,IAAME,EAHc,OAAO,KAAKL,CAAa,EAC1C,OAAO,SAAUI,EAAY,CAAE,MAAO,CAACJ,EAAcI,CAAU,CAAG,CAAC,EAElC,IAAI,SAAUA,EAAY,CAC5D,OAAOlJ,GAAc2F,EAASuD,CAAU,EAAG,UAAY,CACrD,OAAO,IAAI9+B,EAAG,YAAY8+B,EAAY9+B,EAAG,MAAM,EAAE,QAAQ,CAC3D,CAAC,EAAE,CACL,CAAC,EAED,OAAO,QAAQ,IAAI++B,CAAe,EAAE,KAAK,UAAY,CACnD,MAAO,CAAC,GAAI,EAAI,CAClB,CAAC,CACH,OAASpgC,EAAK,CACZ,GAAIA,EAAI,SAAW,IACjB,MAAO,CAAC,GAAI,EAAI,EAEhB,MAAMA,CAEV,CACF,CAEA,eAAeqgC,GAAch/B,EAAIjC,EAAKkC,EAAM,CAE1C,GAAI,OAAOD,EAAG,QAAW,WACvB,OAAO+5B,EAAY/5B,EAAIjC,EAAKkC,CAAI,EAElC,GAAIgG,GAASjG,CAAE,EACb,OAAO45B,EAAU55B,EAAIjC,EAAKkC,CAAI,EAGhC,IAAMg/B,EAAiB,CACrB,mBAAoBj/B,EAAG,OAAO,gCAAkC83B,EAClE,EAEA,GAAI,OAAO/5B,GAAQ,SAEjB,OAAAy7B,EAAqBv5B,EAAMlC,CAAG,EAE9B85B,GAAc,IAAI,gBAAkB,CAClC,IAAMH,EAAO,MAAMX,GACF/2B,EACA,sBACFjC,EAAI,IACDA,EAAI,OACJ,GACGm5B,CAAY,EAEjC,OAAOxB,GAAI8F,EAAW9D,EAAMuH,CAAc,EAAE,KAC1C,UAAY,CAAE,OAAO9B,EAAUzF,EAAMz3B,CAAI,CAAG,CAAC,EAC7C,UAAY,CAAE,OAAOy3B,EAAK,GAAG,QAAQ,CAAG,CAC1C,CACF,CAAC,EACMG,GAAc,OAAO,EACvB,CAEL,IAAML,EAAez5B,EACfwI,EAAQwxB,GAAcP,CAAY,EAClCgH,GAAgBj4B,EAAM,CAAC,EACvBua,EAAWva,EAAM,CAAC,EAElBf,EAAM,MAAMxF,EAAG,IAAI,WAAaw+B,EAAa,EAGnD,GAFAzgC,EAAMyH,EAAI,OAASA,EAAI,MAAMsb,CAAQ,EAEjC,CAAC/iB,EAEH,MAAM,IAAIq3B,GAAc,QAAQ5vB,EAAI,GAAG,sBAAsBsb,CAAQ,EAAE,EAGzEuX,EAAc7yB,EAAKsb,CAAQ,EAC3B0Y,EAAqBv5B,EAAMlC,CAAG,EAE9B,IAAM25B,EAAO,MAAMX,GACF/2B,EACAw3B,EACFz5B,EAAI,IACDA,EAAI,OACJ,GACGm5B,CAAY,EAEjC,OAAIj3B,EAAK,QAAU,MAAQA,EAAK,QAAU,gBACpCA,EAAK,QAAU,gBACjB+B,GAAS,UAAY,CACnBw5B,EAAW9D,EAAMuH,CAAc,CACjC,CAAC,EAEI9B,EAAUzF,EAAMz3B,CAAI,IAE3B,MAAMu7B,EAAW9D,EAAMuH,CAAc,EAC9B9B,EAAUzF,EAAMz3B,CAAI,EAE/B,CACF,CAEA,SAASi/B,GAAcnhC,EAAKkC,EAAMvB,EAAU,CAC1C,IAAMsB,EAAK,KACP,OAAOC,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEVA,EAAOA,EAAOo5B,EAAcp5B,CAAI,EAAI,CAAC,EAEjC,OAAOlC,GAAQ,aACjBA,EAAM,CAAC,IAAMA,CAAG,GAGlB,IAAMO,EAAU,QAAQ,QAAQ,EAAE,KAAK,UAAY,CACjD,OAAO0gC,GAAch/B,EAAIjC,EAAKkC,CAAI,CACpC,CAAC,EACD,OAAAu1B,GAAiBl3B,EAASI,CAAQ,EAC3BJ,CACT,CAEA,IAAM6gC,GAAsB1J,GAAY,UAAY,CAClD,IAAMz1B,EAAK,KAEX,OAAI,OAAOA,EAAG,cAAiB,WACtBg6B,EAAkBh6B,CAAE,EAEzBiG,GAASjG,CAAE,EACNq+B,EAAgBr+B,CAAE,EAEpBs+B,EAAiBt+B,CAAE,CAC5B,CAAC,EAED,MAAO,CACL,MAAOk/B,GACP,YAAaC,EACf,CACF,CAEA,IAAIC,GAAgB,CAClB,KAAM,SAAU14B,EAAMc,EAAQ,CAC5B,OAAO4uB,GAAI5uB,CAAM,CACnB,EAEA,OAAQ,SAAUd,EAAMc,EAAQ,CAC9B,OAAOA,EAAO,MAChB,EAEA,OAAQ,SAAUd,EAAMc,EAAQ,CAG9B,SAAS63B,EAAO73B,EAAQ,CAEtB,QADI83B,EAAU,EACL1hC,EAAI,EAAGC,EAAM2J,EAAO,OAAQ5J,EAAIC,EAAKD,IAAK,CACjD,IAAIwe,EAAM5U,EAAO5J,CAAC,EAClB0hC,GAAYljB,EAAMA,CACpB,CACA,OAAOkjB,CACT,CACA,MAAO,CACL,IAAUlJ,GAAI5uB,CAAM,EACpB,IAAU,KAAK,IAAI,MAAM,KAAMA,CAAM,EACrC,IAAU,KAAK,IAAI,MAAM,KAAMA,CAAM,EACrC,MAAUA,EAAO,OACjB,OAAS63B,EAAO73B,CAAM,CACxB,CACF,CACF,EAEA,SAAS+3B,GAAWC,EAAiB,CACnC,GAAI,QAAQ,KAAKA,CAAe,EAC9B,OAAOJ,GAAc,KAChB,GAAI,UAAU,KAAKI,CAAe,EACvC,OAAOJ,GAAc,OAChB,GAAI,UAAU,KAAKI,CAAe,EACvC,OAAOJ,GAAc,OAChB,GAAI,KAAK,KAAKI,CAAe,EAClC,MAAM,IAAI,MAAMA,EAAkB,sCAAsC,CAE5E,CAEA,SAASrH,GAAOnX,EAAQ0V,EAAM,CAE5B,GAAI,OAAO1V,GAAW,YAAcA,EAAO,SAAW,EAAG,CACvD,IAAIye,EAAUze,EACd,OAAO,SAAUxb,EAAK,CACpB,OAAOi6B,EAAQj6B,EAAKkxB,CAAI,CAC1B,CACF,KACE,QAAOD,GAAqBzV,EAAO,SAAS,EAAG0V,CAAI,CAEvD,CAEA,SAAS0B,GAAQtB,EAAW,CAC1B,IAAI0I,EAAkB1I,EAAU,SAAS,EACrC4I,EAAUH,GAAWC,CAAe,EACxC,OAAIE,GAGKjJ,GAAqB+I,CAAe,CAE/C,CAEA,SAASnH,GAActX,EAAMD,EAAU,CACrC,IAAI/iB,EAAMgjB,EAAK,OAASA,EAAK,MAAMD,CAAQ,EAC3C,GAAI,OAAO/iB,EAAI,KAAQ,SACrB,MAAM,IAAIq3B,GAAc,QAAUrU,EAAK,IAAM,6BAC3CD,EAAW,mCAAqC,OAAO/iB,EAAI,GAAG,CAEpE,CAEA,IAAIm5B,GAAe,UACfyI,GAAWzH,GAAwBhB,GAAciB,GAAQC,GAASC,EAAa,EAEnF,SAASuH,GAAM7hC,EAAKkC,EAAMvB,EAAU,CAClC,OAAOihC,GAAS,MAAM,KAAK,KAAM5hC,EAAKkC,EAAMvB,CAAQ,CACtD,CAEA,SAASmhC,GAAYnhC,EAAU,CAC7B,OAAOihC,GAAS,YAAY,KAAK,KAAMjhC,CAAQ,CACjD,CAEA,IAAIohC,GAAY,CACd,MAAAF,GACA,YAAAC,EACF,EAEA,SAASE,GAAe3qB,EAAU4qB,EAAW5W,EAAU,CACrD,MAAO,CAAChU,EAAS,cACV,CAACA,EAAS,aAAagU,CAAQ,GAC/BhU,EAAS,aAAagU,CAAQ,EAAE,SAAW4W,EAAU,aAAa5W,CAAQ,EAAE,MACrF,CAEA,SAAS6W,GAAkBjgC,EAAIwF,EAAK,CAClC,IAAIsuB,EAAY,OAAO,KAAKtuB,EAAI,YAAY,EAC5C,OAAO,QAAQ,IAAIsuB,EAAU,IAAI,SAAU1K,EAAU,CACnD,OAAOppB,EAAG,cAAcwF,EAAI,IAAK4jB,EAAU,CAAC,IAAK5jB,EAAI,IAAI,CAAC,CAC5D,CAAC,CAAC,CACJ,CAEA,SAAS06B,GAAoCC,EAAQC,EAAK56B,EAAK,CAC7D,IAAI66B,EAA6Bp6B,GAASm6B,CAAG,GAAK,CAACn6B,GAASk6B,CAAM,EAC9DrM,EAAY,OAAO,KAAKtuB,EAAI,YAAY,EAE5C,OAAK66B,EAIEF,EAAO,IAAI36B,EAAI,GAAG,EAAE,KAAK,SAAU4P,EAAU,CAClD,OAAO,QAAQ,IAAI0e,EAAU,IAAI,SAAU1K,EAAU,CACnD,OAAI2W,GAAe3qB,EAAU5P,EAAK4jB,CAAQ,EACjCgX,EAAI,cAAc56B,EAAI,IAAK4jB,CAAQ,EAGrC+W,EAAO,cAAc/qB,EAAS,IAAKgU,CAAQ,CACpD,CAAC,CAAC,CACJ,CAAC,EAAE,MAAM,SAAU7lB,EAAO,CAExB,GAAIA,EAAM,SAAW,IACnB,MAAMA,EAGR,OAAO08B,GAAkBG,EAAK56B,CAAG,CACnC,CAAC,EAlBQy6B,GAAkBG,EAAK56B,CAAG,CAmBrC,CAEA,SAAS86B,GAAkBC,EAAO,CAChC,IAAIrgC,EAAW,CAAC,EAChB,cAAO,KAAKqgC,CAAK,EAAE,QAAQ,SAAUz/B,EAAI,CACvC,IAAI0/B,EAAcD,EAAMz/B,CAAE,EAAE,QAC5B0/B,EAAY,QAAQ,SAAUC,EAAY,CACxCvgC,EAAS,KAAK,CACZ,GAAAY,EACA,IAAK2/B,CACP,CAAC,CACH,CAAC,CACH,CAAC,EAEM,CACL,KAAMvgC,EACN,KAAM,GACN,OAAQ,EACV,CACF,CAQA,SAASwgC,GAAQN,EAAKD,EAAQI,EAAOI,EAAO,CAC1CJ,EAAQ7iC,GAAM6iC,CAAK,EAEnB,IAAIK,EAAa,CAAC,EACd/G,EAAK,GAET,SAASgH,GAAa,CAEpB,IAAIC,EAAcR,GAAkBC,CAAK,EAEzC,GAAKO,EAAY,KAAK,OAItB,OAAOV,EAAI,QAAQU,CAAW,EAAE,KAAK,SAAUC,EAAiB,CAE9D,GAAIJ,EAAM,UACR,MAAM,IAAI,MAAM,WAAW,EAE7B,OAAO,QAAQ,IAAII,EAAgB,QAAQ,IAAI,SAAUC,EAAa,CACpE,OAAO,QAAQ,IAAIA,EAAY,KAAK,IAAI,SAAUx7B,EAAK,CACrD,IAAIw6B,EAAYx6B,EAAI,GAQpB,OANIA,EAAI,QAGNq0B,EAAK,IAGH,CAACmG,GAAa,CAACA,EAAU,aACpBA,EAGFE,GAAoCC,EAAQC,EAAKJ,CAAS,EAAE,KAAMrrB,GAAgB,CACvF,IAAImf,EAAY,OAAO,KAAKkM,EAAU,YAAY,EAClD,OAAArrB,EAAY,QAAQ,SAAU6a,EAAY5xB,EAAG,CAC3C,IAAImI,EAAMi6B,EAAU,aAAalM,EAAUl2B,CAAC,CAAC,EAC7C,OAAOmI,EAAI,KACX,OAAOA,EAAI,OACXA,EAAI,KAAOypB,CACb,CAAC,EAEMwQ,CACT,CAAC,CACH,CAAC,CAAC,CACJ,CAAC,CAAC,EAED,KAAK,SAAUv/B,EAAS,CACvBmgC,EAAaA,EAAW,OAAOngC,EAAQ,KAAK,EAAE,OAAO,OAAO,CAAC,CAC/D,CAAC,CACH,CAAC,CACH,CAEA,SAASwgC,GAAe,CACtB,MAAO,CAAE,GAAApH,EAAI,KAAK+G,CAAW,CAC/B,CAEA,OAAO,QAAQ,QAAQ,EACpB,KAAKC,CAAU,EACf,KAAKI,CAAY,CACtB,CAEA,IAAIC,GAAqB,EACrBC,GAAa,UAQbC,GAA0B,EAC1BC,GAAa,EAEjB,SAASC,GAAiBthC,EAAIc,EAAIygC,EAAYC,EAASC,EAAa,CAClE,OAAOzhC,EAAG,IAAIc,CAAE,EAAE,MAAM,SAAUnC,EAAK,CACrC,GAAIA,EAAI,SAAW,IACjB,OAAIqB,EAAG,UAAY,QAAUA,EAAG,UAAY,UAC1CmD,GACE,IAAK,yDACP,EAEK,CACL,WAAYq+B,EACZ,IAAK1gC,EACL,QAAS,CAAC,EACV,WAAYqgC,GACZ,QAASD,EACX,EAEF,MAAMviC,CACR,CAAC,EAAE,KAAK,SAAU6G,EAAK,CACrB,GAAI,CAAAi8B,EAAY,WAKZj8B,EAAI,WAAa+7B,EAKrB,OAAA/7B,EAAI,SAAWA,EAAI,SAAW,CAAC,GAAG,OAAO,SAAU+H,EAAM,CACvD,OAAOA,EAAK,aAAei0B,CAC7B,CAAC,EAGDh8B,EAAI,QAAQ,QAAQ,CAClB,SAAU+7B,EACV,WAAYC,CACd,CAAC,EAKDh8B,EAAI,QAAUA,EAAI,QAAQ,MAAM,EAAG47B,EAAuB,EAE1D57B,EAAI,QAAU07B,GACd17B,EAAI,WAAa27B,GAEjB37B,EAAI,WAAag8B,EACjBh8B,EAAI,SAAW+7B,EAERvhC,EAAG,IAAIwF,CAAG,EAAE,MAAM,SAAU7G,EAAK,CACtC,GAAIA,EAAI,SAAW,IAEjB,OAAO2iC,GAAiBthC,EAAIc,EAAIygC,EAAYC,EAASC,CAAW,EAElE,MAAM9iC,CACR,CAAC,CACH,CAAC,CACH,CAEA,IAAM+iC,GAAN,KAA2B,CACzB,YAAYtB,EAAKD,EAAQr/B,EAAI2gC,EAAaxhC,EAAO,CAC/C,sBAAuB,GACvB,sBAAuB,EACzB,EAAG,CACD,KAAK,IAAMmgC,EACX,KAAK,OAASD,EACd,KAAK,GAAKr/B,EACV,KAAK,YAAc2gC,EACnB,KAAK,KAAOxhC,EAER,OAAOA,EAAK,sBAA0B,MACxCA,EAAK,sBAAwB,IAG3B,OAAOA,EAAK,sBAA0B,MACxCA,EAAK,sBAAwB,GAEjC,CAEA,gBAAgBshC,EAAYC,EAAS,CACnC,IAAIpjC,EAAO,KACX,OAAO,KAAK,aAAamjC,EAAYC,CAAO,EAAE,KAAK,UAAY,CAC7D,OAAOpjC,EAAK,aAAamjC,EAAYC,CAAO,CAC9C,CAAC,CACH,CAEA,aAAaD,EAAYC,EAAS,CAChC,OAAI,KAAK,KAAK,sBACLF,GAAiB,KAAK,OAAQ,KAAK,GAAIC,EAC5CC,EAAS,KAAK,WAAW,EAEpB,QAAQ,QAAQ,EAAI,CAE/B,CAEA,aAAaD,EAAYC,EAAS,CAChC,GAAI,KAAK,KAAK,sBAAuB,CACnC,IAAIpjC,EAAO,KACX,OAAOkjC,GAAiB,KAAK,IAAK,KAAK,GAAIC,EACzCC,EAAS,KAAK,WAAW,EACxB,MAAM,SAAU7iC,EAAK,CACpB,GAAIgjC,GAAiBhjC,CAAG,EACtB,OAAAP,EAAK,KAAK,sBAAwB,GAC3B,GAET,MAAMO,CACR,CAAC,CACL,KACE,QAAO,QAAQ,QAAQ,EAAI,CAE/B,CAEA,eAAgB,CACd,IAAIP,EAAO,KAEX,MAAI,CAACA,EAAK,KAAK,uBAAyB,CAACA,EAAK,KAAK,sBAC1C,QAAQ,QAAQijC,EAAU,EAG/BjjC,EAAK,MAAQA,EAAK,KAAK,uBAAyB,CAACA,EAAK,KAAK,sBACtDA,EAAK,IAAI,IAAIA,EAAK,EAAE,EAAE,KAAK,SAAUwjC,EAAW,CACrD,OAAOA,EAAU,UAAYP,EAC/B,CAAC,EAAE,MAAM,SAAU1iC,EAAK,CAEtB,GAAIA,EAAI,SAAW,IACjB,MAAMA,EAER,OAAO0iC,EACT,CAAC,EAGIjjC,EAAK,OAAO,IAAIA,EAAK,EAAE,EAAE,KAAK,SAAUyjC,EAAW,CACxD,OAAIzjC,EAAK,MAAQA,EAAK,KAAK,uBAAyB,CAACA,EAAK,KAAK,sBACtDyjC,EAAU,UAAYR,GAGxBjjC,EAAK,IAAI,IAAIA,EAAK,EAAE,EAAE,KAAK,SAAUwjC,EAAW,CAIrD,GAAIC,EAAU,UAAYD,EAAU,QAClC,OAAOP,GAGT,IAAIppB,EAOJ,OANI4pB,EAAU,QACZ5pB,EAAU4pB,EAAU,QAAQ,SAAS,EAErC5pB,EAAU,YAGRA,KAAW6pB,GACNA,GAAY7pB,CAAO,EAAE4pB,EAAWD,CAAS,EAG3CP,EACT,EAAG,SAAU1iC,EAAK,CAChB,GAAIA,EAAI,SAAW,KAAOkjC,EAAU,SAClC,OAAOzjC,EAAK,IAAI,IAAI,CAClB,IAAKA,EAAK,GACV,SAAUijC,EACZ,CAAC,EAAE,KAAK,UAAY,CAClB,OAAOA,EACT,EAAG,SAAU1iC,EAAK,CAChB,OAAIgjC,GAAiBhjC,CAAG,GACtBP,EAAK,KAAK,sBAAwB,GAC3ByjC,EAAU,UAGZR,EACT,CAAC,EAEH,MAAM1iC,CACR,CAAC,CACH,CAAC,EAAE,MAAM,SAAUA,EAAK,CACtB,GAAIA,EAAI,SAAW,IACjB,MAAMA,EAER,OAAO0iC,EACT,CAAC,CACH,CACF,EAEIS,GAAc,CAChB,UAAa,SAAUD,EAAWD,EAAW,CAE3C,OAAI3mB,GAAQ4mB,EAAU,SAAUD,EAAU,QAAQ,IAAM,EAC/CA,EAAU,SAGZ,CACT,EACA,EAAK,SAAUC,EAAWD,EAAW,CAEnC,OAAOG,GAAuBH,EAAWC,CAAS,EAAE,QACtD,CACF,EAMA,SAASE,GAAuBC,EAAQC,EAAQ,CAC9C,OAAID,EAAO,aAAeC,EAAO,WACxB,CACL,SAAUD,EAAO,SACjB,QAASA,EAAO,OAClB,EAGKE,GAA0BF,EAAO,QAASC,EAAO,OAAO,CACjE,CAEA,SAASC,GAA0BC,EAAeC,EAAe,CAG/D,IAAIC,EAAIF,EAAc,CAAC,EACnBG,EAAaH,EAAc,MAAM,CAAC,EAClCI,EAAIH,EAAc,CAAC,EACnBI,EAAaJ,EAAc,MAAM,CAAC,EAEtC,GAAI,CAACC,GAAKD,EAAc,SAAW,EACjC,MAAO,CACL,SAAUf,GACV,QAAS,CAAC,CACZ,EAGF,IAAIoB,EAAWJ,EAAE,WAEjB,GAAIK,GAAaD,EAAUL,CAAa,EACtC,MAAO,CACL,SAAUC,EAAE,SACZ,QAASF,CACX,EAGF,IAAIpyB,EAAWwyB,EAAE,WACjB,OAAIG,GAAa3yB,EAAUuyB,CAAU,EAC5B,CACL,SAAUC,EAAE,SACZ,QAASC,CACX,EAGKN,GAA0BI,EAAYE,CAAU,CACzD,CAEA,SAASE,GAAaC,EAAWv1B,EAAS,CACxC,IAAIw1B,EAAQx1B,EAAQ,CAAC,EACjBy1B,EAAOz1B,EAAQ,MAAM,CAAC,EAE1B,MAAI,CAACu1B,GAAav1B,EAAQ,SAAW,EAC5B,GAGLu1B,IAAcC,EAAM,WACf,GAGFF,GAAaC,EAAWE,CAAI,CACrC,CAEA,SAASlB,GAAiBhjC,EAAK,CAC7B,OAAO,OAAOA,EAAI,QAAW,UAAY,KAAK,MAAMA,EAAI,OAAS,GAAG,IAAM,CAC5E,CAEA,SAASmkC,GAAa1C,EAAKD,EAAQr/B,EAAI2gC,EAAaxhC,EAAM,CACxD,OAAM,gBAAgByhC,GAGfoB,GAFE,IAAIpB,GAAqBtB,EAAKD,EAAQr/B,EAAI2gC,EAAaxhC,CAAI,CAGtE,CAEA,IAAI8iC,GAAoB,EAExB,SAASC,GAAQ/iC,EAAMwhC,EAAal+B,EAAO7E,EAAU,CACnD,GAAIuB,EAAK,QAAU,GAAO,CACxBwhC,EAAY,KAAK,QAASl+B,CAAK,EAC/Bk+B,EAAY,mBAAmB,EAC/B,MACF,CAMA,GAJI,OAAOxhC,EAAK,mBAAsB,aACpCA,EAAK,kBAAoBiD,IAE3Bu+B,EAAY,KAAK,eAAgBl+B,CAAK,EAClCk+B,EAAY,QAAU,UAAYA,EAAY,QAAU,UAAW,CACrEA,EAAY,KAAK,SAAUl+B,CAAK,EAChCk+B,EAAY,MAAQ,UACpB,IAAIwB,EAAa,UAA0B,CACzChjC,EAAK,iBAAmB8iC,EAC1B,EACIG,EAAsB,UAAgC,CACxDzB,EAAY,eAAe,SAAUwB,CAAU,CACjD,EACAxB,EAAY,KAAK,SAAUyB,CAAmB,EAC9CzB,EAAY,KAAK,SAAUwB,CAAU,CACvC,CAEAhjC,EAAK,iBAAmBA,EAAK,kBAAoB8iC,GACjD9iC,EAAK,iBAAmBA,EAAK,kBAAkBA,EAAK,gBAAgB,EACpE,WAAWvB,EAAUuB,EAAK,gBAAgB,CAC5C,CAEA,SAASkjC,GAA0BC,EAAa,CAC9C,OAAO,OAAO,KAAKA,CAAW,EAAE,KAAKnoB,EAAO,EAAE,OAAO,SAAUnc,EAAQmC,EAAK,CAC1E,OAAAnC,EAAOmC,CAAG,EAAImiC,EAAYniC,CAAG,EACtBnC,CACT,EAAG,CAAC,CAAC,CACP,CAIA,SAASukC,GAAsBjD,EAAKD,EAAQlgC,EAAM,CAChD,IAAIktB,EAASltB,EAAK,QAAUA,EAAK,QAAQ,KAAKgb,EAAO,EAAI,GACrDgG,EAAYhhB,EAAK,OAASA,EAAK,OAAO,SAAS,EAAI,GACnDmjC,EAAc,GACdE,EAAkB,GAClBlqB,EAAW,GAKf,OAAInZ,EAAK,WACPmZ,EAAW,KAAK,UAAUnZ,EAAK,QAAQ,GAGrCA,EAAK,QAAUA,EAAK,eACtBmjC,EAAc,KAAK,UAAUD,GAA0BljC,EAAK,YAAY,CAAC,GAGvEA,EAAK,QAAUA,EAAK,SAAW,UACjCqjC,EAAiBrjC,EAAK,KAAK,SAAS,GAG/B,QAAQ,IAAI,CAACmgC,EAAI,GAAG,EAAGD,EAAO,GAAG,CAAC,CAAC,EAAE,KAAK,SAAUhhC,EAAK,CAC9D,IAAIokC,EAAYpkC,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI8hB,EAAYqiB,EAC5CF,EAAcjW,EAAS/T,EACzB,OAAO,IAAI,QAAQ,SAAUmI,EAAS,CACpCpX,GAAUo5B,EAAWhiB,CAAO,CAC9B,CAAC,CACH,CAAC,EAAE,KAAK,SAAUiiB,EAAQ,CAIxB,OAAAA,EAASA,EAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAC/C,UAAYA,CACrB,CAAC,CACH,CAEA,SAASC,GAAUrD,EAAKD,EAAQlgC,EAAMwhC,EAAa3iC,EAAQ,CACzD,IAAI4kC,EAAU,CAAC,EACXC,EACAC,EAAe,CACjB,IAAK,EACL,QAAS,CAAC,EACV,KAAM,CAAC,CACT,EACIC,EAAoB,GACpBC,EAAmB,GACnBC,EAAuB,GAIvBC,EAAmB,EACnBC,EAAW,EACXC,EAAajkC,EAAK,YAAcA,EAAK,MAAQ,GAC7CkkC,EAAalkC,EAAK,YAAc,IAChCmkC,EAAgBnkC,EAAK,eAAiB,GACtCokC,EAAQpkC,EAAK,OAAS,WACtBqkC,EAAiB,GACjBC,EAAUtkC,EAAK,QACfmZ,EAAWnZ,EAAK,SAChBukC,EACAC,EACAC,EAAc,CAAC,EAEflD,EAAUt2B,GAAK,EACfuK,EAEJ3W,EAASA,GAAU,CACjB,GAAI,GACJ,WAAY,IAAI,KAAK,EAAE,YAAY,EACnC,UAAW,EACX,aAAc,EACd,mBAAoB,EACpB,OAAQ,CAAC,CACX,EAEA,IAAIyD,EAAc,CAAC,EACnBk/B,EAAY,MAAMrB,EAAKD,CAAM,EAE7B,SAASwE,GAAmB,CAC1B,OAAIF,EACK,QAAQ,QAAQ,EAElBpB,GAAsBjD,EAAKD,EAAQlgC,CAAI,EAAE,KAAK,SAAUd,EAAK,CAClEqlC,EAAQrlC,EAER,IAAIylC,EAAiB,CAAC,EAClB3kC,EAAK,aAAe,GACtB2kC,EAAiB,CAAE,sBAAuB,GAAO,sBAAuB,EAAM,EACrE3kC,EAAK,aAAe,SAC7B2kC,EAAiB,CAAE,sBAAuB,GAAM,sBAAuB,EAAM,EACpE3kC,EAAK,aAAe,SAC7B2kC,EAAiB,CAAE,sBAAuB,GAAO,sBAAuB,EAAK,EAE7EA,EAAiB,CAAE,sBAAuB,GAAM,sBAAuB,EAAK,EAG9EH,EAAe,IAAI3B,GAAa1C,EAAKD,EAAQqE,EAAO/C,EAAamD,CAAc,CACjF,CAAC,CACH,CAEA,SAASC,GAAY,CAGnB,GAFAH,EAAc,CAAC,EAEXf,EAAa,KAAK,SAAW,EAGjC,KAAI5iC,EAAO4iC,EAAa,KACpBmB,EAAW,CAAC,QAAS7kC,EAAK,OAAO,EACrC,OAAOkgC,EAAO,SAAS,CAAC,KAAAp/B,EAAM,UAAW,EAAK,EAAG+jC,CAAQ,EAAE,KAAK,SAAU3lC,EAAK,CAE7E,GAAIsiC,EAAY,UACd,MAAAsD,EAAoB,EACd,IAAI,MAAM,WAAW,EAK7B,IAAIC,GAAa,OAAO,OAAO,IAAI,EACnC7lC,EAAI,QAAQ,SAAUA,GAAK,CACrBA,GAAI,QACN6lC,GAAW7lC,GAAI,EAAE,EAAIA,GAEzB,CAAC,EAED,IAAI8lC,GAAW,OAAO,KAAKD,EAAU,EAAE,OACvClmC,EAAO,oBAAsBmmC,GAC7BnmC,EAAO,cAAgBiC,EAAK,OAASkkC,GAErClkC,EAAK,QAAQ,SAAUyE,GAAK,CAC1B,IAAIjC,GAAQyhC,GAAWx/B,GAAI,GAAG,EAC9B,GAAIjC,GAAO,CACTzE,EAAO,OAAO,KAAKyE,EAAK,EAExB,IAAI2hC,IAAa3hC,GAAM,MAAQ,IAAI,YAAY,EAC/C,GAAI2hC,KAAc,gBAAkBA,KAAc,YAChDzD,EAAY,KAAK,SAAU/jC,GAAM6F,EAAK,CAAC,MAEvC,OAAMA,EAEV,MACEmhC,EAAY,KAAKl/B,EAAG,CAExB,CAAC,CAEH,EAAG,SAAU7G,EAAK,CAChB,MAAAG,EAAO,oBAAsBiC,EAAK,OAC5BpC,CACR,CAAC,EACH,CAEA,SAASwmC,IAAc,CACrB,GAAIxB,EAAa,MACf,MAAM,IAAI,MAAM,mCAAmC,EAErD7kC,EAAO,SAAWmlC,EAAWN,EAAa,IAC1C,IAAIyB,EAAY1nC,GAAMoB,CAAM,EAC5B,OAAI4lC,EAAY,SACdU,EAAU,KAAOV,EAGb,OAAOf,EAAa,SAAY,WAClCyB,EAAU,QAAUzB,EAAa,QACjC,OAAOA,EAAa,SAEtBlC,EAAY,KAAK,SAAU2D,CAAS,GAEtCvB,EAAoB,GAEpBzD,EAAI,KAAK,EAAE,KAAK,SAAU1/B,EAAM,CAC9B,IAAIsR,EAAOouB,EAAI,YAAY,IAAI3qB,CAAM,EACrC,GAAI,GAACkuB,GAAgB,CAAC3xB,GAItB,KAAIqzB,GAAYrzB,EAAK,iBAAmB,EACpCszB,GAAc,SAAS5kC,EAAK,WAAY,EAAE,EAAI,SAASsjC,EAAkB,EAAE,EAC/E5D,EAAI,YAAY,OAAO3qB,EAAQ,CAC7B,gBAAiB4vB,GAAY1B,EAAa,QAAQ,OAClD,YAAA2B,EACF,CAAC,EACH,CAAC,EAEMb,EAAa,gBAAgBd,EAAa,IAC7CnC,CAAO,EAAE,KAAK,UAAY,CAI5B,GAHAC,EAAY,KAAK,aAAc,CAAE,WAAckC,EAAa,GAAI,CAAC,EACjEE,EAAoB,GAEhBpC,EAAY,UACd,MAAAsD,EAAoB,EACd,IAAI,MAAM,WAAW,EAE7BpB,EAAe,OACf4B,EAAW,CACb,CAAC,EAAE,MAAM,SAAU5mC,EAAK,CACtB,MAAA6mC,EAAkB7mC,CAAG,EACfA,CACR,CAAC,CACH,CAEA,SAAS8mC,GAAW,CAClB,IAAIz2B,EAAO,CAAC,EACZ,OAAA20B,EAAa,QAAQ,QAAQ,SAAU99B,EAAQ,CAC7C47B,EAAY,KAAK,aAAc,CAAE,UAAa57B,CAAO,CAAC,EAGlDA,EAAO,KAAO,WAGlBmJ,EAAKnJ,EAAO,EAAE,EAAIA,EAAO,QAAQ,IAAI,SAAUhG,EAAG,CAChD,OAAOA,EAAE,GACX,CAAC,EACH,CAAC,EACMsgC,EAAO,SAASnxB,CAAI,EAAE,KAAK,SAAUuxB,EAAO,CAEjD,GAAIkB,EAAY,UACd,MAAAsD,EAAoB,EACd,IAAI,MAAM,WAAW,EAG7BpB,EAAa,MAAQpD,CACvB,CAAC,CACH,CAEA,SAASmF,GAAe,CACtB,OAAOhF,GAAQN,EAAKD,EAAQwD,EAAa,MAAOlC,CAAW,EAAE,KAAK,SAAUkE,EAAK,CAC/EhC,EAAa,MAAQ,CAACgC,EAAI,GAC1BA,EAAI,KAAK,QAAQ,SAAUngC,EAAK,CAC9B,OAAOm+B,EAAa,MAAMn+B,EAAI,GAAG,EACjC1G,EAAO,YACP6kC,EAAa,KAAK,KAAKn+B,CAAG,CAC5B,CAAC,CACH,CAAC,CACH,CAEA,SAASogC,IAAiB,CACxB,GAAI,EAAAnE,EAAY,WAAakC,GAG7B,IAAID,EAAQ,SAAW,EAAG,CACxBmC,GAAoB,EAAI,EACxB,MACF,CACAlC,EAAeD,EAAQ,MAAM,EAC7BjC,EAAY,KAAK,aAAc,CAAE,iBAAoBkC,EAAa,GAAI,CAAC,EACvE8B,EAAS,EACN,KAAKC,CAAY,EACjB,KAAKb,CAAS,EACd,KAAKM,EAAW,EAChB,KAAKS,EAAc,EACnB,MAAM,SAAUjnC,EAAK,CACpBmnC,GAAiB,yCAA0CnnC,CAAG,CAChE,CAAC,EACL,CAGA,SAASknC,GAAoBE,EAAW,CACtC,GAAInC,EAAa,QAAQ,SAAW,EAAG,CACjCF,EAAQ,SAAW,GAAK,CAACC,KACtBO,GAAc3hC,EAAY,MAASuhC,KACtCrC,EAAY,MAAQ,UACpBA,EAAY,KAAK,QAAQ,GAEvBqC,GACFiB,EAAoB,GAGxB,MACF,EAEEgB,GACAjC,GACAF,EAAa,QAAQ,QAAUO,KAE/BT,EAAQ,KAAKE,CAAY,EACzBA,EAAe,CACb,IAAK,EACL,QAAS,CAAC,EACV,KAAM,CAAC,CACT,GACInC,EAAY,QAAU,WAAaA,EAAY,QAAU,aAC3DA,EAAY,MAAQ,SACpBA,EAAY,KAAK,QAAQ,GAE3BmE,GAAe,EAEnB,CAGA,SAASE,GAAiBtiC,EAAQ7E,EAAK,CACjColC,IAGCplC,EAAI,UACPA,EAAI,QAAU6E,GAEhB1E,EAAO,GAAK,GACZA,EAAO,OAAS,WAChB4kC,EAAU,CAAC,EACXE,EAAe,CACb,IAAK,EACL,QAAS,CAAC,EACV,KAAM,CAAC,CACT,EACAmB,EAAoBpmC,CAAG,EACzB,CAGA,SAASomC,EAAoBiB,EAAY,CACvC,GAAI,CAAAjC,GAIA,EAAAtC,EAAY,YACd3iC,EAAO,OAAS,YACZ+kC,IAWN,GAPA/kC,EAAO,OAASA,EAAO,QAAU,WACjCA,EAAO,SAAW,IAAI,KAAK,EAAE,YAAY,EACzCA,EAAO,SAAWmlC,EAClBF,EAAuB,GAEvB3D,EAAI,YAAY,OAAO3qB,EAAQuwB,CAAU,EAErCA,EAAY,CAEdA,EAAa/gC,GAAY+gC,CAAU,EACnCA,EAAW,OAASlnC,EAGpB,IAAIomC,GAAac,EAAW,MAAQ,IAAI,YAAY,EAChDd,IAAc,gBAAkBA,IAAc,aAChDzD,EAAY,KAAK,QAASuE,CAAU,EACpCvE,EAAY,mBAAmB,GAE/BuB,GAAQ/iC,EAAMwhC,EAAauE,EAAY,UAAY,CACjDvC,GAAUrD,EAAKD,EAAQlgC,EAAMwhC,CAAW,CAC1C,CAAC,CAEL,MACEA,EAAY,KAAK,WAAY3iC,CAAM,EACnC2iC,EAAY,mBAAmB,CAEnC,CAEA,SAAS9rB,EAAS9P,EAAQ2K,EAASC,EAAS,CAE1C,GAAIgxB,EAAY,UACd,OAAOsD,EAAoB,EAIzB,OAAOv0B,GAAY,WACrBozB,EAAa,QAAUpzB,GAGzB,IAAIjL,GAASI,GAAa1F,CAAI,EAAE4F,CAAM,EACtC,GAAI,CAACN,GAAQ,CAEX,IAAIyM,GAAOouB,EAAI,YAAY,IAAI3qB,CAAM,EACrC,GAAIzD,GAAM,CAER,IAAIqzB,GAAYrzB,GAAK,iBAAmB,EACxCouB,EAAI,YAAY,OAAO3qB,EAAQ,CAAC,gBAAiB,EAAE4vB,EAAS,CAAC,CAC/D,CACA,MACF,CACAzB,EAAa,IAAM/9B,EAAO,KAAO4K,EACjCmzB,EAAa,QAAQ,KAAK/9B,CAAM,EAChC47B,EAAY,KAAK,aAAc,CAAE,cAAiBmC,EAAa,GAAI,CAAC,EACpE5hC,GAAS,UAAY,CACnB6jC,GAAoBnC,EAAQ,SAAW,GAAKnhC,EAAY,IAAI,CAC9D,CAAC,CACH,CAGA,SAAS0jC,EAAkB/Y,EAAS,CAGlC,GAFAoX,EAAiB,GAEb7C,EAAY,UACd,OAAOsD,EAAoB,EAK7B,GAAI7X,EAAQ,QAAQ,OAAS,EAC3B3qB,EAAY,MAAQ2qB,EAAQ,QAAQA,EAAQ,QAAQ,OAAS,CAAC,EAAE,IAChEqY,EAAW,EACXM,GAAoB,EAAI,MACnB,CAEL,IAAIh1B,EAAW,UAAY,CACrBqzB,GACF3hC,EAAY,KAAO,GACnBgjC,EAAW,GAEXzB,EAAmB,GAErB+B,GAAoB,EAAI,CAC1B,EAGI,CAAClC,GAAgBzW,EAAQ,QAAQ,SAAW,GAC9C2W,EAAoB,GACpBY,EAAa,gBAAgBvX,EAAQ,SACjCsU,CAAO,EAAE,KAAK,UAAY,CAG5B,GAFAqC,EAAoB,GACpB/kC,EAAO,SAAWmlC,EAAW/W,EAAQ,SACjCuU,EAAY,UACd,MAAAsD,EAAoB,EACd,IAAI,MAAM,WAAW,EAE3Bl0B,EAAS,CAEb,CAAC,EACA,MAAM20B,CAAiB,GAExB30B,EAAS,CAEb,CACF,CAGA,SAASq1B,EAAevnC,EAAK,CAG3B,GAFA2lC,EAAiB,GAEb7C,EAAY,UACd,OAAOsD,EAAoB,EAE7Be,GAAiB,mBAAoBnnC,CAAG,CAC1C,CAGA,SAAS4mC,GAAa,CACpB,GAAI,EACF,CAACjB,GACD,CAACR,GACDJ,EAAQ,OAASU,GAEjB,OAEFE,EAAiB,GACjB,SAAS6B,GAAe,CACtBjZ,EAAQ,OAAO,CACjB,CACA,SAASkZ,GAAiB,CACxB3E,EAAY,eAAe,SAAU0E,CAAY,CACnD,CAEI1E,EAAY,WACdA,EAAY,eAAe,SAAUA,EAAY,aAAa,EAC9DA,EAAY,SAAS,OAAO,GAE9BA,EAAY,KAAK,SAAU0E,CAAY,EAEvC,IAAIjZ,EAAUkT,EAAI,QAAQ79B,CAAW,EAClC,GAAG,SAAUoT,CAAQ,EACxBuX,EAAQ,KAAKkZ,EAAgBA,CAAc,EAC3ClZ,EAAQ,KAAK+Y,CAAiB,EAC3B,MAAMC,CAAc,EAEnBjmC,EAAK,QAEPwhC,EAAY,SAAWvU,EACvBuU,EAAY,cAAgB0E,EAEhC,CAEA,SAAStK,EAAW0F,EAAY,CAC9B,OAAOnB,EAAI,KAAK,EAAE,KAAK,SAAU1/B,EAAM,CACrC,IAAI4kC,EAAc,OAAOrlC,EAAK,MAAU,IACtC,SAASS,EAAK,WAAY,EAAE,EAAI,SAAS6gC,EAAY,EAAE,EACvD,SAAS7gC,EAAK,WAAY,EAAE,EAE9B,OAAA+U,EAAS2qB,EAAI,YAAY,IAAI,CAC3B,KAAM,GAAG8D,EAAa,cAAgB,EAAE,oBAAoBxjC,EAAK,OAAO,GACxE,YAAA4kC,CACF,CAAC,EAEM/D,CACT,CAAC,CACH,CAEA,SAAS8E,IAAe,CACtB1B,EAAiB,EAAE,KAAK,UAAY,CAElC,GAAIlD,EAAY,UAAW,CACzBsD,EAAoB,EACpB,MACF,CACA,OAAON,EAAa,cAAc,EAAE,KAAK5I,CAAU,EAAE,KAAK,SAAU0F,EAAY,CAC9E0C,EAAW1C,EACXyC,EAAmBzC,EACnBh/B,EAAc,CACZ,MAAO0hC,EACP,MAAOE,EACP,WAAAA,EACA,MAAAE,EACA,QAAAE,EACA,SAAAnrB,EACA,YAAa,EACf,EACInZ,EAAK,SACH,OAAOA,EAAK,QAAW,SAEzBsC,EAAY,aAAe,GAE3BA,EAAY,OAAStC,EAAK,QAG1B,cAAeA,IACjBsC,EAAY,UAAYtC,EAAK,WAE3B,YAAaA,IACfsC,EAAY,QAAUtC,EAAK,SAEzBA,EAAK,eACPsC,EAAY,aAAetC,EAAK,cAE9BA,EAAK,OACPsC,EAAY,KAAOtC,EAAK,MAE1BslC,EAAW,CACb,CAAC,CACH,CAAC,EAAE,MAAM,SAAU5mC,EAAK,CACtBmnC,GAAiB,+BAAgCnnC,CAAG,CACtD,CAAC,CACH,CAGA,SAAS6mC,EAAkB7mC,EAAK,CAC9BklC,EAAoB,GACpBiC,GAAiB,uCAAwCnnC,CAAG,CAC9D,CAGA,GAAI8iC,EAAY,UAAW,CACzBsD,EAAoB,EACpB,MACF,CAEKtD,EAAY,kBACfA,EAAY,KAAK,SAAUsD,CAAmB,EAE1C,OAAO9kC,EAAK,UAAa,aAC3BwhC,EAAY,KAAK,QAASxhC,EAAK,QAAQ,EACvCwhC,EAAY,KAAK,WAAY,SAAU3iC,EAAQ,CAC7CmB,EAAK,SAAS,KAAMnB,CAAM,CAC5B,CAAC,GAEH2iC,EAAY,gBAAkB,IAG5B,OAAOxhC,EAAK,MAAU,IACxBomC,GAAa,EAEb1B,EAAiB,EAAE,KAAK,UAAY,CAClC,OAAAd,EAAoB,GACbY,EAAa,gBAAgBxkC,EAAK,MAAOuhC,CAAO,CACzD,CAAC,EAAE,KAAK,UAAY,CAGlB,GAFAqC,EAAoB,GAEhBpC,EAAY,UAAW,CACzBsD,EAAoB,EACpB,MACF,CACAd,EAAWhkC,EAAK,MAChBomC,GAAa,CACf,CAAC,EAAE,MAAMb,CAAiB,CAE9B,CAIA,IAAMc,GAAN,cAA0BnkC,EAAG,CAC3B,aAAc,CACZ,MAAM,EACN,KAAK,UAAY,GACjB,KAAK,MAAQ,UACb,IAAM7D,EAAU,IAAI,QAAQ,CAACC,EAASC,IAAW,CAC/C,KAAK,KAAK,WAAYD,CAAO,EAC7B,KAAK,KAAK,QAASC,CAAM,CAC3B,CAAC,EACD,KAAK,KAAO,SAAU+iB,EAAS/iB,EAAQ,CACrC,OAAOF,EAAQ,KAAKijB,EAAS/iB,CAAM,CACrC,EACA,KAAK,MAAQ,SAAUA,EAAQ,CAC7B,OAAOF,EAAQ,MAAME,CAAM,CAC7B,EAGA,KAAK,MAAM,UAAY,CAAC,CAAC,CAC3B,CAEA,QAAS,CACP,KAAK,UAAY,GACjB,KAAK,MAAQ,YACb,KAAK,KAAK,QAAQ,CACpB,CAEA,MAAM4hC,EAAKD,EAAQ,CACjB,GAAI,KAAK,aACP,OAEF,KAAK,aAAe,GAEpB,IAAMrvB,EAAY,IAAM,CACtB,KAAK,OAAO,CACd,EACAsvB,EAAI,KAAK,YAAatvB,CAAS,EAC/BqvB,EAAO,KAAK,YAAarvB,CAAS,EAClC,SAASy1B,GAAU,CACjBnG,EAAI,eAAe,YAAatvB,CAAS,EACzCqvB,EAAO,eAAe,YAAarvB,CAAS,CAC9C,CACA,KAAK,KAAK,WAAYy1B,CAAO,EAC7B,KAAK,KAAK,QAASA,CAAO,CAC5B,CACF,EAEA,SAASC,GAAQxmC,EAAIC,EAAM,CACzB,IAAIwmC,EAAmBxmC,EAAK,iBAC5B,OAAI,OAAOD,GAAO,SACT,IAAIymC,EAAiBzmC,EAAIC,CAAI,EAE7BD,CAEX,CAEA,SAAS0mC,GAAiBtG,EAAKD,EAAQlgC,EAAMvB,EAAU,CAUrD,GARI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEN,OAAOA,EAAS,MAClBA,EAAO,CAAC,GAGNA,EAAK,SAAW,CAAC,MAAM,QAAQA,EAAK,OAAO,EAC7C,MAAMgF,GAAYX,GACC,2CAA2C,EAGhErE,EAAK,SAAWvB,EAChBuB,EAAOvC,GAAMuC,CAAI,EACjBA,EAAK,WAAaA,EAAK,YAAcA,EAAK,KAC1CA,EAAK,MAAS,UAAWA,EAAQA,EAAK,MAAQ,GAC9CA,EAAK,iBAAmBA,EAAK,kBAAoB,KACjD,IAAI0mC,EAAe,IAAIL,GAAYrmC,CAAI,EACnC2mC,EAAWJ,GAAQpG,EAAKngC,CAAI,EAC5B4mC,EAAcL,GAAQrG,EAAQlgC,CAAI,EACtC,OAAAwjC,GAAUmD,EAAUC,EAAa5mC,EAAM0mC,CAAY,EAC5CA,CACT,CAEA,SAASG,GAAK1G,EAAKD,EAAQlgC,EAAMvB,EAAU,CACzC,OAAI,OAAOuB,GAAS,aAClBvB,EAAWuB,EACXA,EAAO,CAAC,GAEN,OAAOA,EAAS,MAClBA,EAAO,CAAC,GAEVA,EAAOvC,GAAMuC,CAAI,EACjBA,EAAK,iBAAmBA,EAAK,kBAAoB,KACjDmgC,EAAMoG,GAAQpG,EAAKngC,CAAI,EACvBkgC,EAASqG,GAAQrG,EAAQlgC,CAAI,EACtB,IAAI8mC,GAAK3G,EAAKD,EAAQlgC,EAAMvB,CAAQ,CAC7C,CAEA,IAAMqoC,GAAN,cAAmB5kC,EAAG,CACpB,YAAYi+B,EAAKD,EAAQlgC,EAAMvB,EAAU,CACvC,MAAM,EACN,KAAK,SAAW,GAEhB,IAAMsoC,EAAW/mC,EAAK,KAAO,OAAO,OAAO,CAAC,EAAGA,EAAMA,EAAK,IAAI,EAAIA,EAC5DgnC,EAAWhnC,EAAK,KAAO,OAAO,OAAO,CAAC,EAAGA,EAAMA,EAAK,IAAI,EAAIA,EAElE,KAAK,KAAOymC,GAAiBtG,EAAKD,EAAQ6G,CAAQ,EAClD,KAAK,KAAON,GAAiBvG,EAAQC,EAAK6G,CAAQ,EAElD,KAAK,WAAa,GAClB,KAAK,WAAa,GAElB,IAAMC,EAAcrhC,GAAW,CAC7B,KAAK,KAAK,SAAU,CAClB,UAAW,OACX,OAAAA,CACF,CAAC,CACH,EACMshC,EAActhC,GAAW,CAC7B,KAAK,KAAK,SAAU,CAClB,UAAW,OACX,OAAAA,CACF,CAAC,CACH,EACMuhC,EAAc5hC,GAAQ,CAC1B,KAAK,KAAK,SAAU,CAClB,UAAW,OACX,IAAAA,CACF,CAAC,CACH,EACM6hC,EAAc7hC,GAAQ,CAC1B,KAAK,KAAK,SAAU,CAClB,UAAW,OACX,IAAAA,CACF,CAAC,CACH,EACM8hC,EAAa,IAAM,CACvB,KAAK,WAAa,GAEd,KAAK,YACP,KAAK,KAAK,QAAQ,CAEtB,EACMC,EAAa,IAAM,CACvB,KAAK,WAAa,GAEd,KAAK,YACP,KAAK,KAAK,QAAQ,CAEtB,EACMC,EAAa,IAAM,CACvB,KAAK,WAAa,GAEd,KAAK,YACP,KAAK,KAAK,SAAU,CAClB,UAAW,MACb,CAAC,CAEL,EACMC,EAAa,IAAM,CACvB,KAAK,WAAa,GAEd,KAAK,YACP,KAAK,KAAK,SAAU,CAClB,UAAW,MACb,CAAC,CAEL,EAEIC,EAAU,CAAC,EAETC,EAAavhC,GACV,CAACohB,EAAOrpB,IAAS,EACLqpB,IAAU,WACxBrpB,IAAS+oC,GAAc/oC,IAASgpC,IAClB3f,IAAU,WACxBrpB,IAASkpC,GAAclpC,IAASipC,IAClB5f,IAAU,WACxBrpB,IAASopC,GAAcppC,IAASmpC,IAClB9f,IAAU,WACxBrpB,IAASspC,GAActpC,IAASqpC,MAG3BhgB,KAASkgB,IACbA,EAAQlgB,CAAK,EAAI,CAAC,GAEpBkgB,EAAQlgB,CAAK,EAAEphB,CAAI,EAAI,GACnB,OAAO,KAAKshC,EAAQlgB,CAAK,CAAC,EAAE,SAAW,GAEzC,KAAK,mBAAmBA,CAAK,EAGnC,EAGEvnB,EAAK,OACP,KAAK,KAAK,GAAG,WAAY,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC,EACzD,KAAK,KAAK,GAAG,WAAY,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC,GAG3D,SAAS2nC,EAAezhC,EAAIqhB,EAAOqgB,EAAU,CACvC1hC,EAAG,UAAUqhB,CAAK,EAAE,QAAQqgB,CAAQ,GAAK,IAC3C1hC,EAAG,GAAGqhB,EAAOqgB,CAAQ,CAEzB,CAEA,KAAK,GAAG,cAAe,SAAUrgB,EAAO,CAClCA,IAAU,UACZogB,EAAe,KAAK,KAAM,SAAUV,CAAU,EAC9CU,EAAe,KAAK,KAAM,SAAUT,CAAU,GACrC3f,IAAU,UACnBogB,EAAe,KAAK,KAAM,SAAUP,CAAU,EAC9CO,EAAe,KAAK,KAAM,SAAUR,CAAU,GACrC5f,IAAU,UACnBogB,EAAe,KAAK,KAAM,SAAUH,CAAU,EAC9CG,EAAe,KAAK,KAAM,SAAUJ,CAAU,GACrChgB,IAAU,WACnBogB,EAAe,KAAK,KAAM,SAAUL,CAAU,EAC9CK,EAAe,KAAK,KAAM,SAAUN,CAAU,EAElD,CAAC,EAED,KAAK,GAAG,iBAAkB,SAAU9f,EAAO,CACrCA,IAAU,UACZ,KAAK,KAAK,eAAe,SAAU0f,CAAU,EAC7C,KAAK,KAAK,eAAe,SAAUC,CAAU,GACpC3f,IAAU,UACnB,KAAK,KAAK,eAAe,SAAU6f,CAAU,EAC7C,KAAK,KAAK,eAAe,SAAUD,CAAU,GACpC5f,IAAU,UACnB,KAAK,KAAK,eAAe,SAAUigB,CAAU,EAC7C,KAAK,KAAK,eAAe,SAAUD,CAAU,GACpChgB,IAAU,WACnB,KAAK,KAAK,eAAe,SAAU+f,CAAU,EAC7C,KAAK,KAAK,eAAe,SAAUD,CAAU,EAEjD,CAAC,EAED,KAAK,KAAK,GAAG,iBAAkBK,EAAU,MAAM,CAAC,EAChD,KAAK,KAAK,GAAG,iBAAkBA,EAAU,MAAM,CAAC,EAEhD,IAAMrpC,EAAU,QAAQ,IAAI,CAC1B,KAAK,KACL,KAAK,IACP,CAAC,EAAE,KAAMG,GAAS,CAChB,IAAMqpC,EAAM,CACV,KAAMrpC,EAAK,CAAC,EACZ,KAAMA,EAAK,CAAC,CACd,EACA,YAAK,KAAK,WAAYqpC,CAAG,EACrBppC,GACFA,EAAS,KAAMopC,CAAG,EAEpB,KAAK,mBAAmB,EACjBA,CACT,EAAInpC,GAAQ,CAaV,GAZA,KAAK,OAAO,EACRD,EAGFA,EAASC,CAAG,EAKZ,KAAK,KAAK,QAASA,CAAG,EAExB,KAAK,mBAAmB,EACpBD,EAEF,MAAMC,CAEV,CAAC,EAED,KAAK,KAAO,SAAUopC,EAASppC,EAAK,CAClC,OAAOL,EAAQ,KAAKypC,EAASppC,CAAG,CAClC,EAEA,KAAK,MAAQ,SAAUA,EAAK,CAC1B,OAAOL,EAAQ,MAAMK,CAAG,CAC1B,CACF,CAEA,QAAS,CACF,KAAK,WACR,KAAK,SAAW,GAChB,KAAK,KAAK,OAAO,EACjB,KAAK,KAAK,OAAO,EAErB,CACF,EAEA,SAASqpC,GAAYj3B,EAAS,CAC5BA,EAAQ,UAAY21B,GACpB31B,EAAQ,KAAO+1B,GAEf,OAAO,eAAe/1B,EAAQ,UAAW,YAAa,CACpD,IAAK,UAAY,CACf,IAAI3S,EAAO,KACX,OAAI,OAAO,KAAK,iBAAqB,MACnC,KAAK,iBAAmB,CACtB,KAAM,SAAU6pC,EAAOhoC,EAAMvB,EAAU,CACrC,OAAON,EAAK,YAAY,UAAU6pC,EAAO7pC,EAAM6B,EAAMvB,CAAQ,CAC/D,EACA,GAAI,SAAUupC,EAAOhoC,EAAMvB,EAAU,CACnC,OAAON,EAAK,YAAY,UAAUA,EAAM6pC,EAAOhoC,EAAMvB,CAAQ,CAC/D,CACF,GAEK,KAAK,gBACd,CACF,CAAC,EAEDqS,EAAQ,UAAU,KAAO,SAAU3O,EAAQnC,EAAMvB,EAAU,CACzD,OAAO,KAAK,YAAY,KAAK,KAAM0D,EAAQnC,EAAMvB,CAAQ,CAC3D,CACF,CAEAqS,GAAQ,OAAOyf,EAAQ,EACpB,OAAOyE,EAAW,EAClB,OAAO6K,EAAS,EAChB,OAAOkI,EAAW,EAIrB,IAAOE,GAAQn3B,GQ31Ufo3B,IAAAC,IAAAC,IAiBO,IAAMC,GAA4CC,GAChD,GAAGA,EAAS,MAAM,IAAI,mBAAmBA,EAAS,KAAK,CAAC,IAAI,mBAAmBA,EAAS,IAAI,CAAC,GAGzFC,GAA4CC,GAAQ,CAC/D,IAAMC,EAAQD,EAAI,MAAM,GAAG,EACrBE,EAAcD,EAAM,IAAI,EACxBE,EAAeF,EAAM,IAAI,EAC/B,GAAI,CAACC,GAAe,CAACC,GAAgB,CAACF,EAAM,OAC1C,MAAM,IAAIG,GAEZ,MAAO,CACL,KAAM,mBAAmBF,CAAW,EACpC,MAAO,mBAAmBC,CAAY,EACtC,OAAQF,EAAM,KAAK,GAAG,CACxB,CACF,EAEO,SAASI,GAAaC,EAAmB,GAAI,CAClD,IAAMC,EAAQ,IAAI,WAAWD,CAAQ,EACrC,cAAO,gBAAgBC,CAAK,EAEb,KAAK,OAAO,cAAc,GAAGA,CAAK,CAAC,EAEpC,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,CAC1E,CAEO,SAASC,GAAoBC,EAA0C,CAC5E,OAAI,OAAOA,GAAkB,SACpB,CACL,SAAUV,GAAcU,CAAa,EACrC,IAAKA,CACP,EAEO,CACL,SAAU,CACR,KAAMA,EAAc,KACpB,MAAOA,EAAc,MACrB,OAAQA,EAAc,MACxB,EACA,IAAKZ,GAAcY,CAAa,CAClC,CAEJ,CAEO,SAASC,GACdC,EACAC,EACA,CACA,OACED,EAAK,aAAeC,EAAM,cACzBD,EAAK,eAAiBC,EAAM,cAC3B,CAACD,EAAK,WACNC,EAAM,SAEZ,CAEO,SAASC,GACdC,EACAC,EACAC,EACAC,EACM,CACN,IAAMC,EAAMF,EAAMD,CAAI,EACtB,GAAI,GAACG,GAAO,CAACA,EAAI,QACjB,GAAI,CACFD,EAAOF,CAAI,EAAID,EAAMG,EAAOF,CAAI,EAAGG,EAAK,GAAM,EAAK,EAAE,WACvD,OAASC,EAAG,CACV,MACE,OAAOA,GAAM,UACbA,GACA,SAAUA,GACV,OAAOA,EAAE,MAAS,UAClB,YAAaA,GACb,OAAOA,EAAE,SAAY,SAEjBA,EAAE,OAAS,wBACP,IAAIC,GAA6BD,EAAE,OAAO,EAE1C,IAAIE,GAAwBF,EAAE,KAAO,KAAOA,EAAE,OAAO,EAGvDA,CAEV,CACF,CAEO,SAASG,GACdC,EACAC,EACA,CACA,GAAI,CACF,OAAOD,EAAI,QAAQC,CAAM,CAC3B,OAASC,EAAO,CACd,MAAM,IAAIC,GACRD,aAAiB,MAAQA,EAAM,QAAU,MAC3C,CACF,CACF,CAEO,SAASE,GACdV,EACAW,EACAC,EACM,CACFZ,EAAO,QAAUY,GAAS,QAC5BZ,EAAO,QAAUA,EAAO,SAAWY,EAAU,CAACA,EAAQ,KAAK,EAAI,OAC/DZ,EAAO,SAAWA,EAAO,SAAS,OAAQa,GACxCF,EAAS,SAASE,CAAO,CAC3B,EAEJ,CACO,SAASC,GACdd,EACAY,EACA,CACA,OACEZ,EAAO,UAAY,QACnBA,EAAO,UAAY,MAClB,CAAC,CAACY,GAAS,QACTZ,EAAO,QAAUY,EAAQ,OACxBZ,EAAO,QAAQ,SAASY,EAAQ,KAAK,EAE7C,CC5IAG,IAAAC,IAAAC,IAiBA,IAAIC,GAAgB,SAASC,EAAGC,EAAG,CAC/B,OAAAF,GAAgB,OAAO,gBAClB,CAAE,UAAW,CAAC,CAAE,YAAa,OAAS,SAAUC,EAAGC,EAAG,CAAED,EAAE,UAAYC,CAAG,GAC1E,SAAUD,EAAGC,EAAG,CAAE,QAASC,KAAKD,EAAOA,EAAE,eAAeC,CAAC,IAAGF,EAAEE,CAAC,EAAID,EAAEC,CAAC,EAAG,EACtEH,GAAcC,EAAGC,CAAC,CAC7B,EAEA,SAASE,GAAUH,EAAGC,EAAG,CACrBF,GAAcC,EAAGC,CAAC,EAClB,SAASG,GAAK,CAAE,KAAK,YAAcJ,CAAG,CACtCA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKG,EAAG,UAAYH,EAAE,UAAW,IAAIG,EACnF,CAEA,SAASC,GAAUC,EAASC,EAAYC,EAAGC,EAAW,CAClD,SAASC,EAAMC,EAAO,CAAE,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,EAAE,SAAUI,EAAS,CAAEA,EAAQD,CAAK,CAAG,CAAC,CAAG,CAC3G,OAAO,IAAKH,IAAMA,EAAI,UAAU,SAAUI,EAASC,EAAQ,CACvD,SAASC,EAAUH,EAAO,CAAE,GAAI,CAAEI,EAAKN,EAAU,KAAKE,CAAK,CAAC,CAAG,OAASK,EAAG,CAAEH,EAAOG,CAAC,CAAG,CAAE,CAC1F,SAASC,EAASN,EAAO,CAAE,GAAI,CAAEI,EAAKN,EAAU,MAASE,CAAK,CAAC,CAAG,OAASK,EAAG,CAAEH,EAAOG,CAAC,CAAG,CAAE,CAC7F,SAASD,EAAKG,EAAQ,CAAEA,EAAO,KAAON,EAAQM,EAAO,KAAK,EAAIR,EAAMQ,EAAO,KAAK,EAAE,KAAKJ,EAAWG,CAAQ,CAAG,CAC7GF,GAAMN,EAAYA,EAAU,MAAMH,EAASC,GAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CACxE,CAAC,CACL,CAEA,SAASY,GAAYb,EAASc,EAAM,CAChC,IAAIC,EAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CAAE,GAAIC,EAAE,CAAC,EAAI,EAAG,MAAMA,EAAE,CAAC,EAAG,OAAOA,EAAE,CAAC,CAAG,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,CAAE,EAAGC,EAAGC,EAAGF,EAAGG,EAC/G,OAAOA,EAAI,CAAE,KAAMC,EAAK,CAAC,EAAG,MAASA,EAAK,CAAC,EAAG,OAAUA,EAAK,CAAC,CAAE,EAAG,OAAO,QAAW,aAAeD,EAAE,OAAO,QAAQ,EAAI,UAAW,CAAE,OAAO,IAAM,GAAIA,EACvJ,SAASC,EAAKC,EAAG,CAAE,OAAO,SAAUC,EAAG,CAAE,OAAOb,EAAK,CAACY,EAAGC,CAAC,CAAC,CAAG,CAAG,CACjE,SAASb,EAAKc,EAAI,CACd,GAAIN,EAAG,MAAM,IAAI,UAAU,iCAAiC,EAC5D,KAAOF,GAAG,GAAI,CACV,GAAIE,EAAI,EAAGC,IAAMF,EAAIO,EAAG,CAAC,EAAI,EAAIL,EAAE,OAAYK,EAAG,CAAC,EAAIL,EAAE,SAAcF,EAAIE,EAAE,SAAcF,EAAE,KAAKE,CAAC,EAAG,GAAKA,EAAE,OAAS,EAAEF,EAAIA,EAAE,KAAKE,EAAGK,EAAG,CAAC,CAAC,GAAG,KAAM,OAAOP,EAE3J,OADIE,EAAI,EAAGF,IAAGO,EAAK,CAACA,EAAG,CAAC,EAAI,EAAGP,EAAE,KAAK,GAC9BO,EAAG,CAAC,EAAG,CACX,IAAK,GAAG,IAAK,GAAGP,EAAIO,EAAI,MACxB,IAAK,GAAG,OAAAR,EAAE,QAAgB,CAAE,MAAOQ,EAAG,CAAC,EAAG,KAAM,EAAM,EACtD,IAAK,GAAGR,EAAE,QAASG,EAAIK,EAAG,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAG,SACxC,IAAK,GAAGA,EAAKR,EAAE,IAAI,IAAI,EAAGA,EAAE,KAAK,IAAI,EAAG,SACxC,QACI,GAAMC,EAAID,EAAE,KAAM,EAAAC,EAAIA,EAAE,OAAS,GAAKA,EAAEA,EAAE,OAAS,CAAC,KAAOO,EAAG,CAAC,IAAM,GAAKA,EAAG,CAAC,IAAM,GAAI,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAIQ,EAAG,CAAC,IAAM,IAAM,CAACP,GAAMO,EAAG,CAAC,EAAIP,EAAE,CAAC,GAAKO,EAAG,CAAC,EAAIP,EAAE,CAAC,GAAK,CAAED,EAAE,MAAQQ,EAAG,CAAC,EAAG,KAAO,CACrF,GAAIA,EAAG,CAAC,IAAM,GAAKR,EAAE,MAAQC,EAAE,CAAC,EAAG,CAAED,EAAE,MAAQC,EAAE,CAAC,EAAGA,EAAIO,EAAI,KAAO,CACpE,GAAIP,GAAKD,EAAE,MAAQC,EAAE,CAAC,EAAG,CAAED,EAAE,MAAQC,EAAE,CAAC,EAAGD,EAAE,IAAI,KAAKQ,CAAE,EAAG,KAAO,CAC9DP,EAAE,CAAC,GAAGD,EAAE,IAAI,IAAI,EACpBA,EAAE,KAAK,IAAI,EAAG,QACtB,CACAQ,EAAKT,EAAK,KAAKd,EAASe,CAAC,CAC7B,OAASL,EAAG,CAAEa,EAAK,CAAC,EAAGb,CAAC,EAAGQ,EAAI,CAAG,QAAE,CAAUD,EAAID,EAAI,CAAG,CACzD,GAAIO,EAAG,CAAC,EAAI,EAAG,MAAMA,EAAG,CAAC,EAAG,MAAO,CAAE,MAAOA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAI,OAAQ,KAAM,EAAK,CACnF,CACJ,CAEA,SAASC,GAASC,EAAG,CACjB,IAAIC,EAAI,OAAO,QAAW,YAAc,OAAO,SAAUC,EAAID,GAAKD,EAAEC,CAAC,EAAGE,EAAI,EAC5E,GAAID,EAAG,OAAOA,EAAE,KAAKF,CAAC,EACtB,GAAIA,GAAK,OAAOA,EAAE,QAAW,SAAU,MAAO,CAC1C,KAAM,UAAY,CACd,OAAIA,GAAKG,GAAKH,EAAE,SAAQA,EAAI,QACrB,CAAE,MAAOA,GAAKA,EAAEG,GAAG,EAAG,KAAM,CAACH,CAAE,CAC1C,CACJ,EACA,MAAM,IAAI,UAAUC,EAAI,0BAA4B,iCAAiC,CACzF,CAEA,SAASG,GAAQP,EAAG,CAChB,OAAO,gBAAgBO,IAAW,KAAK,EAAIP,EAAG,MAAQ,IAAIO,GAAQP,CAAC,CACvE,CAEA,SAASQ,GAAiB9B,EAASC,EAAYE,EAAW,CACtD,GAAI,CAAC,OAAO,cAAe,MAAM,IAAI,UAAU,sCAAsC,EACrF,IAAIgB,EAAIhB,EAAU,MAAMH,EAASC,GAAc,CAAC,CAAC,EAAG,EAAG8B,EAAI,CAAC,EAC5D,OAAO,EAAI,CAAC,EAAGX,EAAK,MAAM,EAAGA,EAAK,OAAO,EAAGA,EAAK,QAAQ,EAAG,EAAE,OAAO,aAAa,EAAI,UAAY,CAAE,OAAO,IAAM,EAAG,EACpH,SAASA,EAAKC,EAAG,CAAMF,EAAEE,CAAC,IAAG,EAAEA,CAAC,EAAI,SAAUC,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAUU,EAAGrC,EAAG,CAAEoC,EAAE,KAAK,CAACV,EAAGC,EAAGU,EAAGrC,CAAC,CAAC,EAAI,GAAKsC,EAAOZ,EAAGC,CAAC,CAAG,CAAC,CAAG,EAAG,CACzI,SAASW,EAAOZ,EAAGC,EAAG,CAAE,GAAI,CAAEb,EAAKU,EAAEE,CAAC,EAAEC,CAAC,CAAC,CAAG,OAASZ,EAAG,CAAEwB,EAAOH,EAAE,CAAC,EAAE,CAAC,EAAGrB,CAAC,CAAG,CAAE,CACjF,SAASD,EAAK0B,EAAG,CAAEA,EAAE,iBAAiBN,GAAU,QAAQ,QAAQM,EAAE,MAAM,CAAC,EAAE,KAAKC,EAAS7B,CAAM,EAAI2B,EAAOH,EAAE,CAAC,EAAE,CAAC,EAAGI,CAAC,CAAG,CACvH,SAASC,EAAQ/B,EAAO,CAAE4B,EAAO,OAAQ5B,CAAK,CAAG,CACjD,SAASE,EAAOF,EAAO,CAAE4B,EAAO,QAAS5B,CAAK,CAAG,CACjD,SAAS6B,EAAOjB,EAAGK,EAAG,CAAML,EAAEK,CAAC,EAAGS,EAAE,MAAM,EAAGA,EAAE,QAAQE,EAAOF,EAAE,CAAC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAG,CACrF,CAGA,IAAIM,GAAuC,SAAUC,EAAQ,CACzDzC,GAAUwC,EAAuBC,CAAM,EACvC,SAASD,EAAsBE,EAAS,CACpC,IAAIC,EAAQF,EAAO,KAAK,KAAMC,CAAO,GAAK,KAC1C,cAAO,eAAeC,EAAO,OAAQ,CACjC,MAAO,wBACP,WAAY,EAChB,CAAC,EACG,OAAO,OAAO,gBAAmB,WACjC,OAAO,eAAeA,EAAOA,EAAM,YAAY,SAAS,EAGxDA,EAAM,UAAYA,EAAM,YAAY,UAEpC,OAAO,MAAM,mBAAsB,YACnC,MAAM,kBAAkBA,EAAOA,EAAM,WAAW,EAE7CA,CACX,CACA,OAAOH,CACX,EAAE,KAAK,EAEHI,GAA6B,UAAY,CACzC,SAASA,EAAYC,EAAU,CAC3B,GAAIA,EAAW,EACX,MAAM,IAAI,WAAW,iCAAiC,EAE1D,KAAK,GAAKA,EACV,KAAK,GAAK,CAAC,CACf,CACA,cAAO,eAAeD,EAAY,UAAW,QAAS,CAClD,IAAK,UAAY,CACb,OAAO,KAAK,GAAG,SAAW,CAC9B,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACD,OAAO,eAAeA,EAAY,UAAW,OAAQ,CACjD,IAAK,UAAY,CACb,OAAO,KAAK,GAAG,QAAU,KAAK,EAClC,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACDA,EAAY,UAAU,IAAM,SAAUpC,EAAO,CACzC,GAAI,KAAK,KACL,MAAM,IAAI,MAAM,aAAa,EAG7B,KAAK,GAAG,KAAKA,CAAK,CAE1B,EACAoC,EAAY,UAAU,OAAS,UAAY,CACvC,GAAI,KAAK,MACL,MAAM,IAAI,MAAM,cAAc,EAElC,OAAO,KAAK,GAAG,MAAM,CACzB,EACOA,CACX,EAAE,EAGEE,GAA+B,UAAY,CAC3C,SAASA,EAAcD,EAAU,CAC7B,GAAIA,EAAW,EACX,MAAM,IAAI,WAAW,iCAAiC,EAE1D,KAAK,GAAKA,EACV,KAAK,GAAK,CAAC,CACf,CACA,cAAO,eAAeC,EAAc,UAAW,QAAS,CACpD,IAAK,UAAY,CACb,OAAO,KAAK,GAAG,SAAW,CAC9B,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACD,OAAO,eAAeA,EAAc,UAAW,OAAQ,CACnD,IAAK,UAAY,CACb,MAAO,EACX,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACDA,EAAc,UAAU,IAAM,SAAUtC,EAAO,CAC3C,KAAO,KAAK,GAAG,QAAU,KAAK,IAC1B,KAAK,GAAG,MAAM,EAElB,KAAK,GAAG,KAAKA,CAAK,CACtB,EACAsC,EAAc,UAAU,OAAS,UAAY,CACzC,GAAI,KAAK,MACL,MAAM,IAAI,MAAM,cAAc,EAElC,OAAO,KAAK,GAAG,MAAM,CACzB,EACOA,CACX,EAAE,EAEEC,GAAgC,UAAY,CAC5C,SAASA,EAAeF,EAAU,CAC9B,GAAIA,EAAW,EACX,MAAM,IAAI,WAAW,iCAAiC,EAE1D,KAAK,GAAKA,EACV,KAAK,GAAK,CAAC,CACf,CACA,cAAO,eAAeE,EAAe,UAAW,QAAS,CACrD,IAAK,UAAY,CACb,OAAO,KAAK,GAAG,SAAW,CAC9B,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACD,OAAO,eAAeA,EAAe,UAAW,OAAQ,CACpD,IAAK,UAAY,CACb,MAAO,EACX,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EACDA,EAAe,UAAU,IAAM,SAAUvC,EAAO,CACxC,KAAK,GAAG,OAAS,KAAK,IACtB,KAAK,GAAG,KAAKA,CAAK,CAE1B,EACAuC,EAAe,UAAU,OAAS,UAAY,CAC1C,GAAI,KAAK,MACL,MAAM,IAAI,MAAM,cAAc,EAElC,OAAO,KAAK,GAAG,MAAM,CACzB,EACOA,CACX,EAAE,EAEF,SAASC,GAAQxC,EAAO,CAChBA,GAAS,MAAQ,OAAOA,EAAM,MAAS,YACvCA,EAAM,KAAKyC,GAAMA,EAAI,CAE7B,CAIA,IAAIC,GAAU,EAEVC,GAAU,EAEVC,GAAU,EAEVC,GAAO,EAEPC,GAAW,EAEXC,GAAmB,KACnBN,GAAO,UAAY,CAAE,EAEzB,SAASO,GAAiBlB,EAAG,CACzB,IAAImB,EAAMnB,EAAE,IACRoB,EAAY,QAAQ,QAAQpB,EAAE,SAAS,EAAE,KAAK,SAAU9B,EAAO,CAC/D,GAAIiD,GAAO,KACP,MAAMA,EAEV,OAAOjD,CACX,CAAC,EACD,OAAA8B,EAAE,IAAM,OACRA,EAAE,UAAYoB,EAAU,KAAK,UAAY,CAAoB,EAAG,UAAY,CAAoB,CAAC,EAC1FpB,EAAE,UAAY,OAAYoB,EAAYpB,EAAE,QAAQ,KAAK,UAAY,CAAE,OAAOoB,CAAW,CAAC,CACjG,CAEA,SAASC,GAAgBrB,EAAG9B,EAAO,CAC/B,IAAIoD,EAAOtB,EAAE,OAASe,GACtB,OAAO,QAAQ,QAAQ7C,CAAK,EAAE,KAAK,SAAUA,EAAO,CAChD,MAAI,CAACoD,GAAQtB,EAAE,OAASgB,GACbE,GAAiBlB,CAAC,EAAE,KAAK,SAAU9B,EAAO,CAAE,MAAQ,CACvD,MAAOA,EACP,KAAM,EACV,CAAI,CAAC,EAEF,CAAE,MAAOA,EAAO,KAAMoD,CAAK,CACtC,CAAC,CACL,CAMA,SAASC,GAAKvB,EAAGmB,EAAK,CAClB,IAAIK,EAAKC,EACT,GAAI,EAAAzB,EAAE,OAASc,IASf,GANAd,EAAE,MAAQc,GACVd,EAAE,OAAO,EACTA,EAAE,OAAO,EACLA,EAAE,KAAO,OACTA,EAAE,IAAMmB,GAERnB,EAAE,OAAO,SAAW,IACnB,OAAOA,EAAE,OAAW,KAAeA,EAAE,OAAO,OAC7C0B,GAAO1B,CAAC,MAGR,IAAI,CACA,QAAS2B,EAAKtC,GAASW,EAAE,MAAM,EAAG4B,EAAKD,EAAG,KAAK,EAAG,CAACC,EAAG,KAAMA,EAAKD,EAAG,KAAK,EAAG,CACxE,IAAIE,EAASD,EAAG,MAChBC,EAAO,QAAQ,CACnB,CACJ,OACOC,EAAO,CAAEN,EAAM,CAAE,MAAOM,CAAM,CAAG,QACxC,CACI,GAAI,CACIF,GAAM,CAACA,EAAG,OAASH,EAAKE,EAAG,SAASF,EAAG,KAAKE,CAAE,CACtD,QACA,CAAU,GAAIH,EAAK,MAAMA,EAAI,KAAO,CACxC,CAER,CAMA,SAASE,GAAO1B,EAAG,CACf,IAAI+B,EAAKN,EACT,GAAI,EAAAzB,EAAE,OAASe,IAGf,CAAIf,EAAE,MAAQc,IACVS,GAAKvB,CAAC,EAEVA,EAAE,MAAQe,GACVf,EAAE,OAAS,OACX,GAAI,CACA,QAAS2B,EAAKtC,GAASW,EAAE,KAAK,EAAG4B,EAAKD,EAAG,KAAK,EAAG,CAACC,EAAG,KAAMA,EAAKD,EAAG,KAAK,EAAG,CACvE,IAAIK,EAAOJ,EAAG,MACVR,EAAYpB,EAAE,UAAY,OACxBkB,GAAiBlB,CAAC,EAClBA,EAAE,QAAQ,KAAK,UAAY,CAAE,OAAOkB,GAAiBlB,CAAC,CAAG,CAAC,EAChEgC,EAAK,QAAQX,GAAgBrB,EAAGoB,CAAS,CAAC,CAC9C,CACJ,OACOa,EAAO,CAAEF,EAAM,CAAE,MAAOE,CAAM,CAAG,QACxC,CACI,GAAI,CACIL,GAAM,CAACA,EAAG,OAASH,EAAKE,EAAG,SAASF,EAAG,KAAKE,CAAE,CACtD,QACA,CAAU,GAAII,EAAK,MAAMA,EAAI,KAAO,CACxC,CACA/B,EAAE,OAAS,CAAC,EACZA,EAAE,MAAQ,CAAC,EACf,CAMA,SAAS5B,GAAO4B,EAAG,CACXA,EAAE,OAASgB,KAGXhB,EAAE,MAAQe,IACVW,GAAO1B,CAAC,EAEZA,EAAE,MAAQgB,GACd,CAEA,SAASkB,GAAKlC,EAAG9B,EAAO,CAEpB,GADAwC,GAAQxC,CAAK,EACT8B,EAAE,OAAO,QAAUiB,GACnB,MAAM,IAAIf,GAAsB,gBAAkBe,GAAmB,0DAA0D,EAE9H,GAAIjB,EAAE,OAASc,GAChB,OAAO,QAAQ,QAAQ,MAAS,EAEpC,IAAIqB,EAASnC,EAAE,UAAY,OACrB,QAAQ,QAAQ9B,CAAK,EACrB8B,EAAE,QAAQ,KAAK,UAAY,CAAE,OAAO9B,CAAO,CAAC,EAClDiE,EAASA,EAAO,MAAM,SAAUhB,EAAK,CAC7BnB,EAAE,MAAQc,KACVd,EAAE,IAAMmB,GAEZ/C,GAAO4B,CAAC,CAEZ,CAAC,EACD,IAAIoC,EACJ,GAAIpC,EAAE,MAAM,OAAQ,CAChB,IAAIqC,EAASrC,EAAE,MAAM,MAAM,EAC3BqC,EAAO,QAAQhB,GAAgBrB,EAAGmC,CAAM,CAAC,EACrCnC,EAAE,MAAM,OACRoC,EAAQ,QAAQ,QAAQpC,EAAE,MAAM,CAAC,EAAE,KAAK,EAEnC,OAAOA,EAAE,OAAW,KAAe,CAACA,EAAE,OAAO,KAClDoC,EAAQ,QAAQ,QAAQ,MAAS,EAGjCA,EAAQ,IAAI,QAAQ,SAAUjE,EAAS,CAAE,OAAQ6B,EAAE,OAAS7B,CAAU,CAAC,CAE/E,MACS,OAAO6B,EAAE,OAAW,KAAe,CAACA,EAAE,OAAO,MAClDA,EAAE,OAAO,IAAImC,CAAM,EACnBC,EAAQ,QAAQ,QAAQ,MAAS,GAGjCA,EAAQ,IAAI,QAAQ,SAAUjE,EAAS,CAAE,OAAO6B,EAAE,OAAO,KAAK,CAAE,QAAS7B,EAAS,MAAOgE,CAAO,CAAC,CAAG,CAAC,EAIzG,IAAIG,EAAW,GACXN,EAAO,CAAC,EACRO,EAAYH,EAAM,MAAM,SAAUjB,EAAK,CACvC,GAAImB,EACA,MAAMnB,CAGd,CAAC,EACD,OAAAa,EAAK,KAAO,SAAUQ,EAAaC,EAAY,CAC3C,OAAAH,EAAW,GACJ,QAAQ,UAAU,KAAK,KAAKF,EAAOI,EAAaC,CAAU,CACrE,EACAT,EAAK,MAAQ,SAAUS,EAAY,CAC/B,OAAAH,EAAW,GACJ,QAAQ,UAAU,MAAM,KAAKF,EAAOK,CAAU,CACzD,EACAT,EAAK,QAAUI,EAAM,QAAQ,KAAKA,CAAK,EACvCpC,EAAE,QAAUmC,EACP,KAAK,UAAY,CAAE,OAAOI,CAAW,CAAC,EACtC,MAAM,SAAUpB,EAAK,CACtBnB,EAAE,IAAMmB,EACR/C,GAAO4B,CAAC,CACZ,CAAC,EACMgC,CACX,CAIA,SAASU,GAAW1C,EAAG,CACnB,IAAI2C,EAAQpB,GAAK,KAAK,KAAMvB,CAAC,EACzB4C,EAAQ,IAAI,QAAQ,SAAUzE,EAAS,CAAE,OAAQ6B,EAAE,OAAS7B,CAAU,CAAC,EAC3E,OAAAwE,EAAM,KAAOC,EAAM,KAAK,KAAKA,CAAK,EAClCD,EAAM,MAAQC,EAAM,MAAM,KAAKA,CAAK,EACpCD,EAAM,QAAUC,EAAM,QAAQ,KAAKA,CAAK,EACjCD,CACX,CAMA,SAASE,GAAQ7C,EAAG,CAChB,GAAI,EAAAA,EAAE,OAASa,IAGf,CAAAb,EAAE,MAAQa,GACV,IAAIiC,EAAQZ,GAAK,KAAK,KAAMlC,CAAC,EACzB2C,EAAQD,GAAW1C,CAAC,EACxBA,EAAE,UAAY,IAAI,QAAQ,SAAU7B,EAAS,CAAE,OAAOA,EAAQ6B,EAAE,SAAS8C,EAAOH,CAAK,CAAC,CAAG,CAAC,EAE1F3C,EAAE,UAAU,MAAM,UAAY,CAAE,OAAOuB,GAAKvB,CAAC,CAAG,CAAC,EACrD,CACA,IAAI+C,GAAU,IAAI,QAEdC,GAA0B,UAAY,CACtC,SAASA,EAASC,EAAUC,EAAQ,CAChCH,GAAQ,IAAI,KAAM,CACd,SAAUE,EACV,OAAQC,EACR,IAAK,OACL,MAAOtC,GACP,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,QAAS,OACT,UAAW,OACX,OAAQD,GACR,OAAQA,EACZ,CAAC,CACL,CACA,OAAAqC,EAAS,UAAU,KAAO,SAAU9E,EAAO,CACvCwC,GAAQxC,CAAK,EACb,IAAI,EAAI6E,GAAQ,IAAI,IAAI,EACxB,GAAI,IAAM,OACN,MAAM,IAAI,MAAM,eAAe,EAEnC,GAAI,EAAE,MAAM,QAAU9B,GAClB,MAAM,IAAIf,GAAsB,gBAAkBe,GAAmB,0DAA0D,EAMnI,GAJI,EAAE,OAASL,IACXiC,GAAQ,CAAC,EAEb,EAAE,OAAO3E,CAAK,EACV,OAAO,EAAE,OAAW,KAAe,CAAC,EAAE,OAAO,MAAO,CACpD,IAAIO,EAAS4C,GAAgB,EAAG,EAAE,OAAO,OAAO,CAAC,EACjD,GAAI,EAAE,OAAO,OAAQ,CACjB,IAAI8B,EAAS,EAAE,OAAO,MAAM,EAC5B,EAAE,OAAO,IAAIA,EAAO,KAAK,EACzB,EAAE,OAASA,EAAO,OACtB,CACA,OAAO1E,CACX,SACS,EAAE,OAAO,OAAQ,CACtB,IAAI2E,EAAS,EAAE,OAAO,MAAM,EAC5B,SAAE,OAASA,EAAO,QACX/B,GAAgB,EAAG+B,EAAO,KAAK,CAC1C,SACS,EAAE,OAAStC,GAChB,OAAAY,GAAO,CAAC,EACDL,GAAgB,EAAGH,GAAiB,CAAC,CAAC,EAEjD,OAAO,IAAI,QAAQ,SAAU/C,EAAS,CAAE,OAAO,EAAE,MAAM,KAAK,CAAE,QAASA,EAAS,MAAOD,CAAM,CAAC,CAAG,CAAC,CACtG,EACA8E,EAAS,UAAU,OAAS,SAAU9E,EAAO,CACzCwC,GAAQxC,CAAK,EACb,IAAI,EAAI6E,GAAQ,IAAI,IAAI,EACxB,GAAI,IAAM,OACN,MAAM,IAAI,MAAM,eAAe,EAEnC,OAAArB,GAAO,CAAC,EAER,EAAE,UAAY,QAAQ,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAY,CAAE,OAAOxD,CAAO,CAAC,EACtEmD,GAAgB,EAAGH,GAAiB,CAAC,CAAC,CACjD,EACA8B,EAAS,UAAU,MAAQ,SAAU7B,EAAK,CACtC,IAAI,EAAI4B,GAAQ,IAAI,IAAI,EACxB,GAAI,IAAM,OACN,MAAM,IAAI,MAAM,eAAe,EAEnC,OAAI,EAAE,OAASnC,IACX,EAAE,OAASE,IACV,OAAO,EAAE,OAAW,KAAe,CAAC,EAAE,OAAO,OAC9CY,GAAO,CAAC,EAEJ,EAAE,KAAO,OACT,EAAE,IAAMP,GAELE,GAAgB,EAAGH,GAAiB,CAAC,CAAC,GAE1C,KAAK,KAAK,QAAQ,OAAOC,CAAG,CAAC,CACxC,EACA6B,EAAS,UAAU,OAAO,aAAa,EAAI,UAAY,CACnD,OAAO,IACX,EAEAA,EAAS,KAAOK,GAChBL,EAAS,MAAQM,GACjBN,EAAS,IAAMO,GACfP,EAAS,OAASQ,GACXR,CACX,EAAE,EAGF,SAASS,GAAaC,EAAQC,EAAS,CACnC,IAAIC,EAAKnC,EACLoC,EAAQ,CAAC,EACTC,EAAU,SAAU5F,EAAO,CACvBA,GAAS,MAAQ,OAAOA,EAAM,OAAO,aAAa,GAAM,WACxD2F,EAAM,KAAK3F,EAAM,OAAO,aAAa,EAAE,CAAC,EAEnCA,GAAS,MAAQ,OAAOA,EAAM,OAAO,QAAQ,GAAM,WACxD2F,EAAM,KAAK3F,EAAM,OAAO,QAAQ,EAAE,CAAC,EAGnC2F,EAAM,KAAM,UAAgC,CACxC,OAAOlE,GAAiB,KAAM,UAAW,UAAkC,CACvE,OAAOjB,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,OAAKkC,EAAQ,YACN,CAAC,EAAajE,GAAQxB,CAAK,CAAC,EADF,CAAC,EAAa,CAAC,EAEpD,IAAK,GAAG,MAAO,CAAC,EAAauD,EAAG,KAAK,CAAC,EACtC,IAAK,GACDA,EAAG,KAAK,EACRA,EAAG,MAAQ,EACf,IAAK,GACD,OAAKkC,EAAQ,aACN,CAAC,EAAajE,GAAQxB,CAAK,CAAC,EADD,CAAC,EAAa,CAAC,EAErD,IAAK,GAAG,MAAO,CAAC,EAAcuD,EAAG,KAAK,CAAC,EACvC,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CACL,EAAG,CAAC,CAEZ,EACA,GAAI,CACA,QAASsC,EAAW1E,GAASqE,CAAM,EAAGM,EAAaD,EAAS,KAAK,EAAG,CAACC,EAAW,KAAMA,EAAaD,EAAS,KAAK,EAAG,CAChH,IAAI7F,EAAQ8F,EAAW,MACvBF,EAAQ5F,CAAK,CACjB,CACJ,OACO+F,EAAO,CAAEL,EAAM,CAAE,MAAOK,CAAM,CAAG,QACxC,CACI,GAAI,CACID,GAAc,CAACA,EAAW,OAASvC,EAAKsC,EAAS,SAAStC,EAAG,KAAKsC,CAAQ,CAClF,QACA,CAAU,GAAIH,EAAK,MAAMA,EAAI,KAAO,CACxC,CACA,OAAOC,CACX,CAEA,SAASR,GAAKa,EAAY,CACtB,IAAI7D,EAAQ,KACRwD,EAAQJ,GAAaS,EAAY,CAAE,aAAc,EAAK,CAAC,EAC3D,OAAO,IAAIlB,GAAS,SAAUd,EAAMX,EAAM,CAAE,OAAO3D,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5F,IAAI8D,EAASC,EAASC,EAAgBC,EAAWC,EAAKC,EACtD,OAAO9F,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,GAAI,CAACoC,EAAM,OACP,OAAAtC,EAAK,EACE,CAAC,CAAY,EAExB6C,EAAU,GACV7C,EAAK,KAAK,UAAY,CAClB4C,EAAQ,EACRC,EAAU,EACd,CAAC,EACD3C,EAAG,MAAQ,EACf,IAAK,GACDA,EAAG,KAAK,KAAK,CAAC,EAAG,CAAE,EAAG,CAAC,CAAC,EACxB6C,EAAY,OACZC,EAAM,EACNC,EAAU,UAAY,CAClB,IAAIC,EAAGC,EAASC,EAAWC,EACvBC,EAAKpD,EACT,OAAO/C,GAAY,KAAM,SAAUiD,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD8C,EAAIF,EACJ,GAAI,CACA,IAAKG,GAAWG,EAAM,OAAQxF,GAASwE,CAAK,GAAIc,EAAYD,EAAQ,KAAK,EAAG,CAACC,EAAU,KAAMA,EAAYD,EAAQ,KAAK,EAClHE,EAAOD,EAAU,MACjB,QAAQ,QAAQC,EAAK,KAAK,CAAC,EAAE,KAAK,SAAUN,EAAW,CAC/CA,EAAU,MACV/C,EAAK,EACD8C,IAAmB,SACnBA,EAAiBC,IAGhBC,IAAQE,IAEbF,IACAJ,EAAQG,CAAS,EAEzB,EAAG,SAAUnD,EAAK,CAAE,OAAOI,EAAKJ,CAAG,CAAG,CAAC,CAE/C,OACO2D,EAAO,CAAED,EAAM,CAAE,MAAOC,CAAM,CAAG,QACxC,CACI,GAAI,CACIH,GAAa,CAACA,EAAU,OAASlD,EAAKiD,EAAQ,SAASjD,EAAG,KAAKiD,CAAO,CAC9E,QACA,CAAU,GAAIG,EAAK,MAAMA,EAAI,KAAO,CACxC,CACA,MAAO,CAAC,EAAa,IAAI,QAAQ,SAAU1G,EAAS,CAAE,OAAQgG,EAAUhG,CAAU,CAAC,CAAC,EACxF,IAAK,GAED,OADAmG,EAAY3C,EAAG,KAAK,EACd2C,IAAc,OAAmB,CAAC,EAAa,CAAC,EAC/C,CAAC,EAAapC,EAAKoC,EAAU,KAAK,CAAC,EAC9C,IAAK,GACD3C,EAAG,KAAK,EACRA,EAAG,MAAQ,EACf,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,EACAF,EAAG,MAAQ,EACf,IAAK,GACD,OAAM2C,EAAgB,CAAC,EAAa,CAAC,EAC9B,CAAC,EAAcI,EAAQ,CAAC,EACnC,IAAK,GACD,OAAA/C,EAAG,KAAK,EACD,CAAC,EAAa,CAAC,EAC1B,IAAK,GAAG,MAAO,CAAC,EAAc4C,GAAkBA,EAAe,KAAK,EACpE,IAAK,GACD,OAAA9C,EAAK,EACE,CAAC,EAAa,QAAQ,KAAKsC,EAAM,IAAI,SAAUe,EAAM,CAAE,OAAOA,EAAK,QAAUA,EAAK,OAAO,CAAG,CAAC,CAAC,CAAC,EAC1G,IAAK,GACD,OAAAnD,EAAG,KAAK,EACD,CAAC,CAAgB,EAC5B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CACT,CACA,SAAS6B,GAAMY,EAAY,CACvB,IAAI7D,EAAQ,KACRwD,EAAQJ,GAAaS,EAAY,CAAE,YAAa,EAAK,CAAC,EAC1D,OAAO,IAAIlB,GAAS,SAAUd,EAAMX,EAAM,CAAE,OAAO3D,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5F,IAAI0E,EAAUX,EAASC,EACnBhE,EAAQ,KACZ,OAAO3B,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,GAAI,CAACoC,EAAM,OACP,OAAAtC,EAAK,EACE,CAAC,CAAY,EAExBwD,EAAW,CAAC,EACZX,EAAU,GACV7C,EAAK,KAAK,UAAY,CAClB,IAAIyD,EAAKvD,EACT2C,EAAU,GACV,GAAI,CACA,QAASa,EAAa5F,GAAS0F,CAAQ,EAAGG,EAAeD,EAAW,KAAK,EAAG,CAACC,EAAa,KAAMA,EAAeD,EAAW,KAAK,EAAG,CAC9H,IAAId,EAAUe,EAAa,MAC3Bf,EAAQ,CACZ,CACJ,OACOgB,EAAO,CAAEH,EAAM,CAAE,MAAOG,CAAM,CAAG,QACxC,CACI,GAAI,CACID,GAAgB,CAACA,EAAa,OAASzD,EAAKwD,EAAW,SAASxD,EAAG,KAAKwD,CAAU,CAC1F,QACA,CAAU,GAAID,EAAK,MAAMA,EAAI,KAAO,CACxC,CACJ,CAAC,EACDvD,EAAG,MAAQ,EACf,IAAK,GACD,OAAAA,EAAG,KAAK,KAAK,CAAC,EAAG,CAAE,EAAG,CAAC,CAAC,EACjB,CAAC,EAAa,QAAQ,IAAIoC,EAAM,IAAI,SAAUe,EAAMnF,EAAG,CAAE,OAAO7B,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5G,IAAIiE,EAAW7C,EACf,OAAO/C,GAAY,KAAM,SAAUiD,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACDA,EAAG,KAAK,KAAK,CAAC,EAAG,CAAE,EAAG,CAAC,CAAC,EACxBA,EAAG,MAAQ,EACf,IAAK,GACD,OAAMyC,EAAgB,CAAC,EAAa,CAAC,GACrC,QAAQ,QAAQQ,EAAK,KAAK,CAAC,EAAE,KAAK,SAAUN,EAAW,CAAE,OAAOS,EAAStF,CAAC,EAAE6E,CAAS,CAAG,EAAG,SAAUnD,EAAK,CAAE,OAAOI,EAAKJ,CAAG,CAAG,CAAC,EACxH,CAAC,EAAa,IAAI,QAAQ,SAAUhD,EAAS,CAC5C4G,EAAStF,CAAC,EAAItB,CAClB,CAAC,CAAC,GACV,IAAK,GAED,OADAmG,EAAY3C,EAAG,KAAK,EACd2C,IAAc,OAAmB,CAAC,EAAa,CAAC,EAClDA,EAAU,MACVD,EAAiBC,EACV,CAAC,CAAY,GAEjB,CAAC,EAAapC,EAAKoC,EAAU,KAAK,CAAC,EAC9C,IAAK,GACD3C,EAAG,KAAK,EACRA,EAAG,MAAQ,EACf,IAAK,GAAG,MAAO,CAAC,EAAa,CAAC,EAC9B,IAAK,GAAG,MAAO,CAAC,EAAa,CAAC,EAC9B,IAAK,GAED,OADAF,EAAKmD,EAAK,OACLnD,EACE,CAAC,EAAamD,EAAK,OAAO,CAAC,EADlB,CAAC,EAAa,CAAC,EAEnC,IAAK,GACDnD,EAAME,EAAG,KAAK,EACdA,EAAG,MAAQ,EACf,IAAK,GACD,MAAO,CAAC,CAAgB,EAC5B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CAAC,CAAC,EACf,IAAK,GACD,OAAAF,EAAG,KAAK,EACD,CAAC,EAAc4C,GAAkBA,EAAe,KAAK,EAChE,IAAK,GACD,OAAA9C,EAAK,EACE,CAAC,CAAgB,EAC5B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CACT,CACA,SAASgC,GAAIW,EAAY,CACrB,IAAI7D,EAAQ,KACRwD,EAAQJ,GAAaS,EAAY,CAAE,aAAc,EAAK,CAAC,EAC3D,OAAO,IAAIlB,GAAS,SAAUd,EAAMX,EAAM,CAAE,OAAO3D,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5F,IAAI8D,EAASC,EAASgB,EAAY1B,EAClC,OAAOhF,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,GAAI,CAACoC,EAAM,OACP,OAAAtC,EAAK,EACE,CAAC,EAAc,CAAC,CAAC,EAE5B6C,EAAU,GACV7C,EAAK,KAAK,UAAY,CAClB4C,EAAQ,EACRC,EAAU,EACd,CAAC,EACD3C,EAAG,MAAQ,EACf,IAAK,GACDA,EAAG,KAAK,KAAK,CAAC,EAAG,CAAE,EAAG,CAAC,CAAC,EACxBA,EAAG,MAAQ,EACf,IAAK,GACD,OAAM2C,EAAgB,CAAC,EAAa,CAAC,GACrC,QAAQ,IAAIP,EAAM,IAAI,SAAUe,EAAM,CAAE,OAAOA,EAAK,KAAK,CAAG,CAAC,CAAC,EAAE,KAAK,SAAUQ,EAAY,CAAE,OAAOjB,EAAQiB,CAAU,CAAG,EAAG,SAAUjE,EAAK,CAAE,OAAOI,EAAKJ,CAAG,CAAG,CAAC,EACzJ,CAAC,EAAa,IAAI,QAAQ,SAAUhD,EAAS,CAAE,OAAQgG,EAAUhG,CAAU,CAAC,CAAC,GACxF,IAAK,GAED,OADAiH,EAAa3D,EAAG,KAAK,EACjB2D,IAAe,OACR,CAAC,CAAY,GAExB1B,EAAS0B,EAAW,IAAI,SAAUd,EAAW,CAAE,OAAOA,EAAU,KAAO,CAAC,EACpEc,EAAW,KAAK,SAAUd,EAAW,CAAE,OAAOA,EAAU,IAAM,CAAC,EACxD,CAAC,EAAcZ,CAAM,EAEzB,CAAC,EAAaxB,EAAKwB,CAAM,CAAC,GACrC,IAAK,GACD,OAAAjC,EAAG,KAAK,EACD,CAAC,EAAa,CAAC,EAC1B,IAAK,GAAG,MAAO,CAAC,EAAa,CAAC,EAC9B,IAAK,GACD,OAAAF,EAAK,EACE,CAAC,EAAa,QAAQ,IAAIsC,EAAM,IAAI,SAAUe,EAAM,CAAE,OAAOA,EAAK,QAAUA,EAAK,OAAO,CAAG,CAAC,CAAC,CAAC,EACzG,IAAK,GACD,OAAAnD,EAAG,KAAK,EACD,CAAC,CAAgB,EAC5B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CACT,CACA,SAAS+B,GAAOU,EAAY,CACxB,IAAI7D,EAAQ,KACRwD,EAAQJ,GAAaS,EAAY,CACjC,YAAa,GACb,aAAc,EAClB,CAAC,EACD,OAAO,IAAIlB,GAAS,SAAUd,EAAMX,EAAM,CAAE,OAAO3D,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5F,IAAI8D,EAASY,EAAUX,EAASiB,EAAcC,EAC1CjF,EAAQ,KACZ,OAAO3B,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,GAAI,CAACoC,EAAM,OACP,OAAAtC,EAAK,EACE,CAAC,EAAc,CAAC,CAAC,EAE5BwD,EAAW,CAAC,EACZX,EAAU,GACV7C,EAAK,KAAK,UAAY,CAClB,IAAIgE,EAAK9D,EACT0C,EAAQ,EACR,GAAI,CACA,QAASqB,EAAanG,GAAS0F,CAAQ,EAAGU,EAAeD,EAAW,KAAK,EAAG,CAACC,EAAa,KAAMA,EAAeD,EAAW,KAAK,EAAG,CAC9H,IAAIE,EAAWD,EAAa,MAC5BC,EAAS,CACb,CACJ,OACOC,EAAO,CAAEJ,EAAM,CAAE,MAAOI,CAAM,CAAG,QACxC,CACI,GAAI,CACIF,GAAgB,CAACA,EAAa,OAAShE,EAAK+D,EAAW,SAAS/D,EAAG,KAAK+D,CAAU,CAC1F,QACA,CAAU,GAAID,EAAK,MAAMA,EAAI,KAAO,CACxC,CACAnB,EAAU,EACd,CAAC,EACD3C,EAAG,MAAQ,EACf,IAAK,GACD,OAAAA,EAAG,KAAK,KAAK,CAAC,EAAG,CAAE,EAAG,CAAC,CAAC,EACxB,QAAQ,IAAIoC,EAAM,IAAI,SAAUe,EAAM,CAAE,OAAOA,EAAK,KAAK,CAAG,CAAC,CAAC,EAAE,KAAK,SAAUQ,EAAY,CAAE,OAAOjB,EAAQiB,CAAU,CAAG,EAAG,SAAUjE,EAAK,CAAE,OAAOI,EAAKJ,CAAG,CAAG,CAAC,EACzJ,CAAC,EAAa,IAAI,QAAQ,SAAUhD,EAAS,CAAE,OAAQgG,EAAUhG,CAAU,CAAC,CAAC,EACxF,IAAK,GAED,OADAkH,EAAe5D,EAAG,KAAK,EACnB4D,IAAiB,OACV,CAAC,CAAY,GAExBC,EAAWD,EAAa,IAAI,SAAUf,EAAW,CAAE,OAAOA,EAAU,KAAO,CAAC,EACxEe,EAAa,MAAM,SAAUf,EAAW,CAAE,OAAOA,EAAU,IAAM,CAAC,EAC3D,CAAC,EAAcgB,CAAQ,EAG3B,CAAC,EAAapD,EAAKoD,EAAS,MAAM,CAAC,CAAC,GAC/C,IAAK,GAED,OAAA7D,EAAG,KAAK,EACD,CAAC,EAAa,QAAQ,IAAIoC,EAAM,IAAI,SAAUe,EAAMnF,EAAG,CAAE,OAAO7B,GAAUyC,EAAO,OAAQ,OAAQ,UAAY,CAC5G,IAAIiE,EACJ,OAAO5F,GAAY,KAAM,SAAU+C,EAAI,CACnC,OAAQA,EAAG,MAAO,CACd,IAAK,GACD,GAAI4D,EAAa5F,CAAC,EAAE,KAChB,MAAO,CAAC,EAAc4F,EAAa5F,CAAC,EAAE,KAAK,EAE/CgC,EAAG,MAAQ,EACf,IAAK,GACD,OAAM2C,EAAgB,CAAC,EAAa,CAAC,GACrC,QAAQ,QAAQQ,EAAK,KAAK,CAAC,EAAE,KAAK,SAAUN,EAAW,CAAE,OAAOS,EAAStF,CAAC,EAAE6E,CAAS,CAAG,EAAG,SAAUnD,EAAK,CAAE,OAAOI,EAAKJ,CAAG,CAAG,CAAC,EACxH,CAAC,EAAa,IAAI,QAAQ,SAAUhD,EAAS,CAAE,OAAQ4G,EAAStF,CAAC,EAAItB,CAAU,CAAC,CAAC,GAC5F,IAAK,GAED,OADAmG,EAAY7C,EAAG,KAAK,EAChB6C,IAAc,OACP,CAAC,EAAce,EAAa5F,CAAC,EAAE,KAAK,EAEtC6E,EAAU,KACR,CAAC,EAAcA,EAAU,KAAK,GAEzCgB,EAAS7F,CAAC,EAAI6E,EAAU,MACjB,CAAC,EAAapC,EAAKoD,EAAS,MAAM,CAAC,CAAC,GAC/C,IAAK,GACD,OAAA7D,EAAG,KAAK,EACD,CAAC,EAAa,CAAC,EAC1B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CAAC,CAAC,EACf,IAAK,GAAG,MAAO,CAAC,EAAcA,EAAG,KAAK,CAAC,EACvC,IAAK,GACD,OAAAF,EAAK,EACE,CAAC,EAAa,QAAQ,IAAIsC,EAAM,IAAI,SAAUe,EAAM,CAAE,OAAOA,EAAK,QAAUA,EAAK,OAAO,CAAG,CAAC,CAAC,CAAC,EACzG,IAAK,GACD,OAAAnD,EAAG,KAAK,EACD,CAAC,CAAgB,EAC5B,IAAK,GAAG,MAAO,CAAC,CAAY,CAChC,CACJ,CAAC,CACL,CAAC,CAAG,CAAC,CACT,CVv3BA,IAAAmE,GAAgB,SWxBhBC,IAAAC,IAAAC,ICAA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,oBAAAE,GAAA,eAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,cAAAC,GAAA,sBAAAC,GAAA,aAAAC,GAAA,cAAAC,KAAAC,IAAAC,IAAAC,ICAAC,IAAAC,IAAAC,IAKA,IAAIC,GAAyC,UAAY,CACrD,IAAIC,EAAgB,SAAUC,EAAGC,EAAG,CAChC,OAAAF,EAAgB,OAAO,gBAClB,CAAE,UAAW,CAAC,CAAE,YAAa,OAAS,SAAUC,EAAGC,EAAG,CAAED,EAAE,UAAYC,CAAG,GAC1E,SAAUD,EAAGC,EAAG,CAAE,QAASC,KAAKD,EAAOA,EAAE,eAAeC,CAAC,IAAGF,EAAEE,CAAC,EAAID,EAAEC,CAAC,EAAG,EACtEH,EAAcC,EAAGC,CAAC,CAC7B,EACA,OAAO,SAAUD,EAAGC,EAAG,CACnBF,EAAcC,EAAGC,CAAC,EAClB,SAASE,GAAK,CAAE,KAAK,YAAcH,CAAG,CACtCA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKE,EAAG,UAAYF,EAAE,UAAW,IAAIE,EACnF,CACJ,EAAG,EACCC,GAAkB,OAAO,UAAU,eAChC,SAASC,GAAeC,EAAKC,EAAK,CACrC,OAAOH,GAAgB,KAAKE,EAAKC,CAAG,CACxC,CACO,SAASC,GAAYF,EAAK,CAC7B,GAAI,MAAM,QAAQA,CAAG,EAAG,CAEpB,QADIG,EAAS,IAAI,MAAMH,EAAI,MAAM,EACxBI,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAC/BD,EAAOC,CAAC,EAAI,GAAKA,EAErB,OAAOD,CACX,CACA,GAAI,OAAO,KACP,OAAO,OAAO,KAAKH,CAAG,EAE1B,IAAIK,EAAO,CAAC,EACZ,QAAS,KAAKL,EACND,GAAeC,EAAK,CAAC,GACrBK,EAAK,KAAK,CAAC,EAGnB,OAAOA,CACX,CAQO,SAASC,GAAWN,EAAK,CAC5B,OAAQ,OAAOA,EAAK,CAChB,IAAK,SACD,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAG,CAAC,EACzC,IAAK,YACD,OAAO,KACX,QACI,OAAOA,CACf,CACJ,CAEO,SAASO,GAAUC,EAAK,CAI3B,QAHIC,EAAI,EACJC,EAAMF,EAAI,OACVG,EACGF,EAAIC,GAAK,CAEZ,GADAC,EAAWH,EAAI,WAAWC,CAAC,EACvBE,GAAY,IAAMA,GAAY,GAAI,CAClCF,IACA,QACJ,CACA,MAAO,EACX,CACA,MAAO,EACX,CAMO,SAASG,GAAoBC,EAAM,CACtC,OAAIA,EAAK,QAAQ,GAAG,IAAM,IAAMA,EAAK,QAAQ,GAAG,IAAM,GAC3CA,EACJA,EAAK,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,IAAI,CACvD,CAMO,SAASC,GAAsBD,EAAM,CACxC,OAAOA,EAAK,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,CACtD,CA+BO,SAASE,GAAaC,EAAK,CAC9B,GAAIA,IAAQ,OACR,MAAO,GAEX,GAAIA,GACA,GAAI,MAAM,QAAQA,CAAG,GACjB,QAASC,EAAM,EAAGC,EAAMF,EAAI,OAAQC,EAAMC,EAAKD,IAC3C,GAAIF,GAAaC,EAAIC,CAAG,CAAC,EACrB,MAAO,WAIV,OAAOD,GAAQ,UAGpB,QAFIG,EAAUC,GAAYJ,CAAG,EACzBK,EAAgBF,EAAQ,OACnBG,EAAI,EAAGA,EAAID,EAAeC,IAC/B,GAAIP,GAAaC,EAAIG,EAAQG,CAAC,CAAC,CAAC,EAC5B,MAAO,IAKvB,MAAO,EACX,CACA,SAASC,GAA2BC,EAASC,EAAM,CAC/C,IAAIC,EAAe,CAACF,CAAO,EAC3B,QAASG,KAAOF,EAAM,CAClB,IAAIG,EAAQ,OAAOH,EAAKE,CAAG,GAAM,SAAW,KAAK,UAAUF,EAAKE,CAAG,EAAG,KAAM,CAAC,EAAIF,EAAKE,CAAG,EACrF,OAAOC,EAAU,KACjBF,EAAa,KAAKC,EAAM,KAAOC,CAAK,CAE5C,CACA,OAAOF,EAAa,KAAK;AAAA,CAAI,CACjC,CACA,IAAIG,GAA4B,SAAUC,EAAQ,CAC9CC,GAAUF,EAAYC,CAAM,EAC5B,SAASD,EAAWL,EAASQ,EAAMC,EAAOC,EAAWC,EAAM,CACvD,IAAIC,EAAa,KAAK,YAClBC,EAAQP,EAAO,KAAK,KAAMP,GAA2BC,EAAS,CAAE,KAAMQ,EAAM,MAAOC,EAAO,UAAWC,EAAW,KAAMC,CAAK,CAAC,CAAC,GAAK,KACtI,OAAAE,EAAM,KAAOL,EACbK,EAAM,MAAQJ,EACdI,EAAM,UAAYH,EAClBG,EAAM,KAAOF,EACb,OAAO,eAAeE,EAAOD,EAAW,SAAS,EACjDC,EAAM,QAAUd,GAA2BC,EAAS,CAAE,KAAMQ,EAAM,MAAOC,EAAO,UAAWC,EAAW,KAAMC,CAAK,CAAC,EAC3GE,CACX,CACA,OAAOR,CACX,EAAE,KAAK,EDxKA,IAAIS,GAAiBC,GACjBC,GAAYC,GAQnBC,GAAS,CACT,IAAK,SAAUC,EAAKC,EAAKC,EAAU,CAC/B,OAAAF,EAAIC,CAAG,EAAI,KAAK,MACT,CAAE,YAAaC,CAAS,CACnC,EACA,OAAQ,SAAUF,EAAKC,EAAKC,EAAU,CAClC,IAAIC,EAAUH,EAAIC,CAAG,EACrB,cAAOD,EAAIC,CAAG,EACP,CAAE,YAAaC,EAAU,QAASC,CAAQ,CACrD,EACA,QAAS,SAAUH,EAAKC,EAAKC,EAAU,CACnC,IAAIC,EAAUH,EAAIC,CAAG,EACrB,OAAAD,EAAIC,CAAG,EAAI,KAAK,MACT,CAAE,YAAaC,EAAU,QAASC,CAAQ,CACrD,EACA,KAAM,SAAUH,EAAKC,EAAKC,EAAU,CAIhC,IAAIC,EAAUC,GAAkBF,EAAU,KAAK,IAAI,EAC/CC,IACAA,EAAUL,GAAWK,CAAO,GAEhC,IAAIE,EAAgBC,GAAeJ,EAAU,CAAE,GAAI,SAAU,KAAM,KAAK,IAAK,CAAC,EAAE,QAChF,OAAAI,GAAeJ,EAAU,CAAE,GAAI,MAAO,KAAM,KAAK,KAAM,MAAOG,CAAc,CAAC,EACtE,CAAE,YAAaH,EAAU,QAASC,CAAQ,CACrD,EACA,KAAM,SAAUH,EAAKC,EAAKC,EAAU,CAChC,IAAIK,EAAcH,GAAkBF,EAAU,KAAK,IAAI,EAEvD,OAAAI,GAAeJ,EAAU,CAAE,GAAI,MAAO,KAAM,KAAK,KAAM,MAAOJ,GAAWS,CAAW,CAAE,CAAC,EAChF,CAAE,YAAaL,CAAS,CACnC,EACA,KAAM,SAAUF,EAAKC,EAAKC,EAAU,CAChC,MAAO,CAAE,YAAaA,EAAU,KAAMM,GAAWR,EAAIC,CAAG,EAAG,KAAK,KAAK,CAAE,CAC3E,EACA,KAAM,SAAUD,EAAKC,EAAKC,EAAU,CAChC,YAAK,MAAQF,EAAIC,CAAG,EACb,CAAE,YAAaC,CAAS,CACnC,CACJ,EAEIO,GAAS,CACT,IAAK,SAAUC,EAAKC,EAAGT,EAAU,CAC7B,OAAIU,GAAUD,CAAC,EACXD,EAAI,OAAOC,EAAG,EAAG,KAAK,KAAK,EAG3BD,EAAIC,CAAC,EAAI,KAAK,MAGX,CAAE,YAAaT,EAAU,MAAOS,CAAE,CAC7C,EACA,OAAQ,SAAUD,EAAKC,EAAGT,EAAU,CAChC,IAAIW,EAAcH,EAAI,OAAOC,EAAG,CAAC,EACjC,MAAO,CAAE,YAAaT,EAAU,QAASW,EAAY,CAAC,CAAE,CAC5D,EACA,QAAS,SAAUH,EAAKC,EAAGT,EAAU,CACjC,IAAIC,EAAUO,EAAIC,CAAC,EACnB,OAAAD,EAAIC,CAAC,EAAI,KAAK,MACP,CAAE,YAAaT,EAAU,QAASC,CAAQ,CACrD,EACA,KAAMJ,GAAO,KACb,KAAMA,GAAO,KACb,KAAMA,GAAO,KACb,KAAMA,GAAO,IACjB,EASO,SAASK,GAAkBF,EAAUY,EAAS,CACjD,GAAIA,GAAW,GACX,OAAOZ,EAEX,IAAIa,EAAyB,CAAE,GAAI,OAAQ,KAAMD,CAAQ,EACzD,OAAAR,GAAeJ,EAAUa,CAAsB,EACxCA,EAAuB,KAClC,CAeO,SAAST,GAAeJ,EAAUc,EAAWC,EAAmBC,EAAgBC,EAA2BC,EAAO,CAcrH,GAbIH,IAAsB,SAAUA,EAAoB,IACpDC,IAAmB,SAAUA,EAAiB,IAC9CC,IAA8B,SAAUA,EAA4B,IACpEC,IAAU,SAAUA,EAAQ,GAC5BH,IACI,OAAOA,GAAqB,WAC5BA,EAAkBD,EAAW,EAAGd,EAAUc,EAAU,IAAI,EAGxDK,GAAUL,EAAW,CAAC,GAI1BA,EAAU,OAAS,GAAI,CACvB,IAAIM,EAAc,CAAE,YAAapB,CAAS,EAC1C,GAAIc,EAAU,KAAO,MACjB,OAAAM,EAAY,YAAcN,EAAU,MAC7BM,EAEN,GAAIN,EAAU,KAAO,UACtB,OAAAM,EAAY,YAAcN,EAAU,MACpCM,EAAY,QAAUpB,EACfoB,EAEN,GAAIN,EAAU,KAAO,QAAUA,EAAU,KAAO,OACjD,OAAAM,EAAY,YAAclB,GAAkBF,EAAUc,EAAU,IAAI,EAChEA,EAAU,KAAO,SACjBM,EAAY,QAAUpB,GAEnBoB,EAEN,GAAIN,EAAU,KAAO,OAAQ,CAE9B,GADAM,EAAY,KAAOd,GAAWN,EAAUc,EAAU,KAAK,EACnDM,EAAY,OAAS,GACrB,MAAM,IAAI3B,GAAe,wBAAyB,wBAAyByB,EAAOJ,EAAWd,CAAQ,EAEzG,OAAAoB,EAAY,YAAcpB,EACnBoB,CACX,KACK,IAAIN,EAAU,KAAO,SACtB,OAAAM,EAAY,QAAUpB,EACtBoB,EAAY,YAAc,KACnBA,EAEN,GAAIN,EAAU,KAAO,OACtB,OAAAA,EAAU,MAAQd,EACXoB,EAGP,GAAIL,EACA,MAAM,IAAItB,GAAe,uEAAwE,uBAAwByB,EAAOJ,EAAWd,CAAQ,EAGnJ,OAAOoB,EAGnB,KACK,CACIJ,IACDhB,EAAWJ,GAAWI,CAAQ,GAElC,IAAIqB,EAAOP,EAAU,MAAQ,GACzBQ,EAAOD,EAAK,MAAM,GAAG,EACrBvB,EAAME,EACNuB,EAAI,EACJC,EAAMF,EAAK,OACXG,EAAuB,OACvB1B,EAAM,OACN2B,EAAmB,OAOvB,IANI,OAAOX,GAAqB,WAC5BW,EAAmBX,EAGnBW,EAAmBP,KAEV,CAKT,GAJApB,EAAMuB,EAAKC,CAAC,EACRxB,GAAOA,EAAI,QAAQ,GAAG,GAAK,KAC3BA,EAAM4B,GAAsB5B,CAAG,GAE/BkB,IACClB,GAAO,aACHA,GAAO,aAAewB,EAAI,GAAKD,EAAKC,EAAI,CAAC,GAAK,eACnD,MAAM,IAAI,UAAU,+OAA+O,EAgBvQ,GAdIR,GACIU,IAAyB,SACrB3B,EAAIC,CAAG,IAAM,OACb0B,EAAuBH,EAAK,MAAM,EAAGC,CAAC,EAAE,KAAK,GAAG,EAE3CA,GAAKC,EAAM,IAChBC,EAAuBX,EAAU,MAEjCW,IAAyB,QACzBC,EAAiBZ,EAAW,EAAGd,EAAUyB,CAAoB,GAIzEF,IACI,MAAM,QAAQzB,CAAG,EAAG,CACpB,GAAIC,IAAQ,IACRA,EAAMD,EAAI,WAET,CACD,GAAIiB,GAAqB,CAACL,GAAUX,CAAG,EACnC,MAAM,IAAIN,GAAe,0HAA2H,qCAAsCyB,EAAOJ,EAAWd,CAAQ,EAE/MU,GAAUX,CAAG,IAClBA,EAAM,CAAC,CAACA,EAEhB,CACA,GAAIwB,GAAKC,EAAK,CACV,GAAIT,GAAqBD,EAAU,KAAO,OAASf,EAAMD,EAAI,OACzD,MAAM,IAAIL,GAAe,mFAAoF,gCAAiCyB,EAAOJ,EAAWd,CAAQ,EAE5K,IAAIoB,EAAcb,GAAOO,EAAU,EAAE,EAAE,KAAKA,EAAWhB,EAAKC,EAAKC,CAAQ,EACzE,GAAIoB,EAAY,OAAS,GACrB,MAAM,IAAI3B,GAAe,wBAAyB,wBAAyByB,EAAOJ,EAAWd,CAAQ,EAEzG,OAAOoB,CACX,CACJ,SAEQG,GAAKC,EAAK,CACV,IAAIJ,EAAcvB,GAAOiB,EAAU,EAAE,EAAE,KAAKA,EAAWhB,EAAKC,EAAKC,CAAQ,EACzE,GAAIoB,EAAY,OAAS,GACrB,MAAM,IAAI3B,GAAe,wBAAyB,wBAAyByB,EAAOJ,EAAWd,CAAQ,EAEzG,OAAOoB,CACX,CAKJ,GAHAtB,EAAMA,EAAIC,CAAG,EAGTgB,GAAqBQ,EAAIC,IAAQ,CAAC1B,GAAO,OAAOA,GAAQ,UACxD,MAAM,IAAIL,GAAe,+CAAgD,8BAA+ByB,EAAOJ,EAAWd,CAAQ,CAE1I,CACJ,CACJ,CAeO,SAAS4B,GAAW5B,EAAU6B,EAAOd,EAAmBC,EAAgBC,EAA2B,CAGtG,GAFID,IAAmB,SAAUA,EAAiB,IAC9CC,IAA8B,SAAUA,EAA4B,IACpEF,GACI,CAAC,MAAM,QAAQc,CAAK,EACpB,MAAM,IAAIpC,GAAe,kCAAmC,uBAAuB,EAGtFuB,IACDhB,EAAWJ,GAAWI,CAAQ,GAGlC,QADI8B,EAAU,IAAI,MAAMD,EAAM,MAAM,EAC3BpB,EAAI,EAAGsB,EAAWF,EAAM,OAAQpB,EAAIsB,EAAUtB,IAEnDqB,EAAQrB,CAAC,EAAIL,GAAeJ,EAAU6B,EAAMpB,CAAC,EAAGM,EAAmB,GAAME,EAA2BR,CAAC,EACrGT,EAAW8B,EAAQrB,CAAC,EAAE,YAE1B,OAAAqB,EAAQ,YAAc9B,EACf8B,CACX,CAUO,SAASE,GAAahC,EAAUc,EAAWI,EAAO,CACrD,IAAIe,EAAkB7B,GAAeJ,EAAUc,CAAS,EACxD,GAAImB,EAAgB,OAAS,GACzB,MAAM,IAAIxC,GAAe,wBAAyB,wBAAyByB,EAAOJ,EAAWd,CAAQ,EAEzG,OAAOiC,EAAgB,WAC3B,CAQO,SAASd,GAAUL,EAAWI,EAAOlB,EAAUyB,EAAsB,CACxE,GAAI,OAAOX,GAAc,UAAYA,IAAc,MAAQ,MAAM,QAAQA,CAAS,EAC9E,MAAM,IAAIrB,GAAe,6BAA8B,0BAA2ByB,EAAOJ,EAAWd,CAAQ,EAE3G,GAAKH,GAAOiB,EAAU,EAAE,EAGxB,IAAI,OAAOA,EAAU,MAAS,SAC/B,MAAM,IAAIrB,GAAe,4CAA6C,yBAA0ByB,EAAOJ,EAAWd,CAAQ,EAEzH,GAAIc,EAAU,KAAK,QAAQ,GAAG,IAAM,GAAKA,EAAU,KAAK,OAAS,EAElE,MAAM,IAAIrB,GAAe,gDAAiD,yBAA0ByB,EAAOJ,EAAWd,CAAQ,EAE7H,IAAKc,EAAU,KAAO,QAAUA,EAAU,KAAO,SAAW,OAAOA,EAAU,MAAS,SACvF,MAAM,IAAIrB,GAAe,wFAAyF,0BAA2ByB,EAAOJ,EAAWd,CAAQ,EAEtK,IAAKc,EAAU,KAAO,OAASA,EAAU,KAAO,WAAaA,EAAU,KAAO,SAAWA,EAAU,QAAU,OAC9G,MAAM,IAAIrB,GAAe,mGAAoG,2BAA4ByB,EAAOJ,EAAWd,CAAQ,EAElL,IAAKc,EAAU,KAAO,OAASA,EAAU,KAAO,WAAaA,EAAU,KAAO,SAAWoB,GAAapB,EAAU,KAAK,EACtH,MAAM,IAAIrB,GAAe,mGAAoG,2CAA4CyB,EAAOJ,EAAWd,CAAQ,EAElM,GAAIA,GACL,GAAIc,EAAU,IAAM,MAAO,CACvB,IAAIqB,EAAUrB,EAAU,KAAK,MAAM,GAAG,EAAE,OACpCsB,EAAkBX,EAAqB,MAAM,GAAG,EAAE,OACtD,GAAIU,IAAYC,EAAkB,GAAKD,IAAYC,EAC/C,MAAM,IAAI3C,GAAe,wDAAyD,4BAA6ByB,EAAOJ,EAAWd,CAAQ,CAEjJ,SACSc,EAAU,KAAO,WAAaA,EAAU,KAAO,UAAYA,EAAU,KAAO,QACjF,GAAIA,EAAU,OAASW,EACnB,MAAM,IAAIhC,GAAe,6DAA8D,8BAA+ByB,EAAOJ,EAAWd,CAAQ,UAG/Ic,EAAU,KAAO,QAAUA,EAAU,KAAO,OAAQ,CACzD,IAAIuB,EAAgB,CAAE,GAAI,OAAQ,KAAMvB,EAAU,KAAM,MAAO,MAAU,EACrEwB,EAAQC,GAAS,CAACF,CAAa,EAAGrC,CAAQ,EAC9C,GAAIsC,GAASA,EAAM,OAAS,8BACxB,MAAM,IAAI7C,GAAe,+DAAgE,8BAA+ByB,EAAOJ,EAAWd,CAAQ,CAE1J,OArCA,OAAM,IAAIP,GAAe,uEAAwE,uBAAwByB,EAAOJ,EAAWd,CAAQ,CAuC3J,CAQO,SAASuC,GAASC,EAAUxC,EAAUyC,EAAmB,CAC5D,GAAI,CACA,GAAI,CAAC,MAAM,QAAQD,CAAQ,EACvB,MAAM,IAAI/C,GAAe,kCAAmC,uBAAuB,EAEvF,GAAIO,EAEA4B,GAAWhC,GAAWI,CAAQ,EAAGJ,GAAW4C,CAAQ,EAAGC,GAAqB,EAAI,MAE/E,CACDA,EAAoBA,GAAqBtB,GACzC,QAASV,EAAI,EAAGA,EAAI+B,EAAS,OAAQ/B,IACjCgC,EAAkBD,EAAS/B,CAAC,EAAGA,EAAGT,EAAU,MAAS,CAE7D,CACJ,OACO0C,EAAG,CACN,GAAIA,aAAajD,GACb,OAAOiD,EAGP,MAAMA,CAEd,CACJ,CAmBO,SAASpC,GAAWqC,EAAGC,EAAG,CAC7B,GAAID,IAAMC,EACN,MAAO,GACX,GAAID,GAAKC,GAAK,OAAOD,GAAK,UAAY,OAAOC,GAAK,SAAU,CACxD,IAAIC,EAAO,MAAM,QAAQF,CAAC,EAAGG,EAAO,MAAM,QAAQF,CAAC,EAAG,EAAGG,EAAQhD,EACjE,GAAI8C,GAAQC,EAAM,CAEd,GADAC,EAASJ,EAAE,OACPI,GAAUH,EAAE,OACZ,MAAO,GACX,IAAK,EAAIG,EAAQ,MAAQ,GACrB,GAAI,CAACzC,GAAWqC,EAAE,CAAC,EAAGC,EAAE,CAAC,CAAC,EACtB,MAAO,GACf,MAAO,EACX,CACA,GAAIC,GAAQC,EACR,MAAO,GACX,IAAIxB,EAAO,OAAO,KAAKqB,CAAC,EAExB,GADAI,EAASzB,EAAK,OACVyB,IAAW,OAAO,KAAKH,CAAC,EAAE,OAC1B,MAAO,GACX,IAAK,EAAIG,EAAQ,MAAQ,GACrB,GAAI,CAACH,EAAE,eAAetB,EAAK,CAAC,CAAC,EACzB,MAAO,GACf,IAAK,EAAIyB,EAAQ,MAAQ,GAErB,GADAhD,EAAMuB,EAAK,CAAC,EACR,CAAChB,GAAWqC,EAAE5C,CAAG,EAAG6C,EAAE7C,CAAG,CAAC,EAC1B,MAAO,GAEf,MAAO,EACX,CACA,OAAO4C,IAAMA,GAAKC,IAAMA,CAC5B,CE/aA,IAAAI,GAAA,GAAAC,GAAAD,GAAA,aAAAE,GAAA,aAAAC,GAAA,YAAAC,GAAA,cAAAC,KAAAC,IAAAC,IAAAC,IAOA,IAAIC,GAAa,IAAI,QACjBC,GAAwB,UAAY,CACpC,SAASA,EAAOC,EAAK,CACjB,KAAK,UAAY,IAAI,IACrB,KAAK,IAAMA,CACf,CACA,OAAOD,CACX,EAAE,EACEE,GAA8B,UAAY,CAC1C,SAASA,EAAaC,EAAUC,EAAU,CACtC,KAAK,SAAWD,EAChB,KAAK,SAAWC,CACpB,CACA,OAAOF,CACX,EAAE,EACF,SAASG,GAAUJ,EAAK,CACpB,OAAOF,GAAW,IAAIE,CAAG,CAC7B,CACA,SAASK,GAAsBC,EAAQJ,EAAU,CAC7C,OAAOI,EAAO,UAAU,IAAIJ,CAAQ,CACxC,CACA,SAASK,GAAyBD,EAAQH,EAAU,CAChDG,EAAO,UAAU,OAAOH,EAAS,QAAQ,CAC7C,CAIO,SAASK,GAAUC,EAAMN,EAAU,CACtCA,EAAS,UAAU,CACvB,CAIO,SAASO,GAAQV,EAAKE,EAAU,CACnC,IAAIS,EAAU,CAAC,EACXR,EACAG,EAASF,GAAUJ,CAAG,EAC1B,GAAI,CAACM,EACDA,EAAS,IAAIP,GAAOC,CAAG,EACvBF,GAAW,IAAIE,EAAKM,CAAM,MAEzB,CACD,IAAIM,EAAeP,GAAsBC,EAAQJ,CAAQ,EACzDC,EAAWS,GAAgBA,EAAa,QAC5C,CACA,GAAIT,EACA,OAAOA,EAIX,GAFAA,EAAW,CAAC,EACZG,EAAO,MAAQO,GAAWb,CAAG,EACzBE,EAAU,CACVC,EAAS,SAAWD,EACpBC,EAAS,KAAO,KAChB,IAAIW,EAAa,UAAY,CACzBC,GAASZ,CAAQ,CACrB,EACIa,EAAY,UAAY,CACxB,aAAab,EAAS,IAAI,EAC1BA,EAAS,KAAO,WAAWW,CAAU,CACzC,EACI,OAAO,OAAW,MAClB,OAAO,iBAAiB,UAAWE,CAAS,EAC5C,OAAO,iBAAiB,QAASA,CAAS,EAC1C,OAAO,iBAAiB,YAAaA,CAAS,EAC9C,OAAO,iBAAiB,UAAWA,CAAS,EAC5C,OAAO,iBAAiB,SAAUA,CAAS,EAEnD,CACA,OAAAb,EAAS,QAAUQ,EACnBR,EAAS,OAASH,EAClBG,EAAS,UAAY,UAAY,CAC7BY,GAASZ,CAAQ,EACjB,aAAaA,EAAS,IAAI,EAC1BI,GAAyBD,EAAQH,CAAQ,EACrC,OAAO,OAAW,MAClB,OAAO,oBAAoB,UAAWa,CAAS,EAC/C,OAAO,oBAAoB,QAASA,CAAS,EAC7C,OAAO,oBAAoB,YAAaA,CAAS,EACjD,OAAO,oBAAoB,UAAWA,CAAS,EAC/C,OAAO,oBAAoB,SAAUA,CAAS,EAEtD,EACAV,EAAO,UAAU,IAAIJ,EAAU,IAAID,GAAaC,EAAUC,CAAQ,CAAC,EAC5DA,CACX,CAIO,SAASY,GAASZ,EAAUc,EAAY,CACvCA,IAAe,SAAUA,EAAa,IAC1C,IAAIX,EAASR,GAAW,IAAIK,EAAS,MAAM,EAC3Ce,GAAUZ,EAAO,MAAOH,EAAS,OAAQA,EAAS,QAAS,GAAIc,CAAU,EACrEd,EAAS,QAAQ,QACjBgB,GAAWb,EAAO,MAAOH,EAAS,OAAO,EAE7C,IAAIiB,EAAOjB,EAAS,QACpB,OAAIiB,EAAK,OAAS,IACdjB,EAAS,QAAU,CAAC,EAChBA,EAAS,UACTA,EAAS,SAASiB,CAAI,GAGvBA,CACX,CAEA,SAASF,GAAUZ,EAAQN,EAAKW,EAASU,EAAMJ,EAAY,CACvD,GAAIjB,IAAQM,EAGZ,CAAI,OAAON,EAAI,QAAW,aACtBA,EAAMA,EAAI,OAAO,GAOrB,QALIsB,EAAUC,GAAYvB,CAAG,EACzBwB,EAAUD,GAAYjB,CAAM,EAC5BmB,EAAU,GACVC,EAAU,GAELC,EAAIH,EAAQ,OAAS,EAAGG,GAAK,EAAGA,IAAK,CAC1C,IAAIC,EAAMJ,EAAQG,CAAC,EACfE,EAASvB,EAAOsB,CAAG,EACvB,GAAIE,GAAe9B,EAAK4B,CAAG,GAAK,EAAE5B,EAAI4B,CAAG,IAAM,QAAaC,IAAW,QAAa,MAAM,QAAQ7B,CAAG,IAAM,IAAQ,CAC/G,IAAI+B,EAAS/B,EAAI4B,CAAG,EAChB,OAAOC,GAAU,UAAYA,GAAU,MAAQ,OAAOE,GAAU,UAAYA,GAAU,MAAQ,MAAM,QAAQF,CAAM,IAAM,MAAM,QAAQE,CAAM,EAC5Ib,GAAUW,EAAQE,EAAQpB,EAASU,EAAO,IAAMW,GAAoBJ,CAAG,EAAGX,CAAU,EAGhFY,IAAWE,IACXN,EAAU,GACNR,GACAN,EAAQ,KAAK,CAAE,GAAI,OAAQ,KAAMU,EAAO,IAAMW,GAAoBJ,CAAG,EAAG,MAAOf,GAAWgB,CAAM,CAAE,CAAC,EAEvGlB,EAAQ,KAAK,CAAE,GAAI,UAAW,KAAMU,EAAO,IAAMW,GAAoBJ,CAAG,EAAG,MAAOf,GAAWkB,CAAM,CAAE,CAAC,EAGlH,MACS,MAAM,QAAQzB,CAAM,IAAM,MAAM,QAAQN,CAAG,GAC5CiB,GACAN,EAAQ,KAAK,CAAE,GAAI,OAAQ,KAAMU,EAAO,IAAMW,GAAoBJ,CAAG,EAAG,MAAOf,GAAWgB,CAAM,CAAE,CAAC,EAEvGlB,EAAQ,KAAK,CAAE,GAAI,SAAU,KAAMU,EAAO,IAAMW,GAAoBJ,CAAG,CAAE,CAAC,EAC1EF,EAAU,KAGNT,GACAN,EAAQ,KAAK,CAAE,GAAI,OAAQ,KAAMU,EAAM,MAAOf,CAAO,CAAC,EAE1DK,EAAQ,KAAK,CAAE,GAAI,UAAW,KAAMU,EAAM,MAAOrB,CAAI,CAAC,EACtDyB,EAAU,GAElB,CACA,GAAI,GAACC,GAAWJ,EAAQ,QAAUE,EAAQ,QAG1C,QAASG,EAAI,EAAGA,EAAIL,EAAQ,OAAQK,IAAK,CACrC,IAAIC,EAAMN,EAAQK,CAAC,EACf,CAACG,GAAexB,EAAQsB,CAAG,GAAK5B,EAAI4B,CAAG,IAAM,QAC7CjB,EAAQ,KAAK,CAAE,GAAI,MAAO,KAAMU,EAAO,IAAMW,GAAoBJ,CAAG,EAAG,MAAOf,GAAWb,EAAI4B,CAAG,CAAC,CAAE,CAAC,CAE5G,EACJ,CAIO,SAASK,GAAQC,EAAOC,EAAOlB,EAAY,CAC1CA,IAAe,SAAUA,EAAa,IAC1C,IAAIN,EAAU,CAAC,EACf,OAAAO,GAAUgB,EAAOC,EAAOxB,EAAS,GAAIM,CAAU,EACxCN,CACX,CHxJA,IAAOyB,GAAQ,OAAO,OAAO,CAAC,EAAGC,GAAMC,GAAQ,CAC3C,eAAAC,GACA,UAAAC,GACA,oBAAAC,GACA,sBAAAC,EACJ,CAAC,EX6BM,IAAMC,GAAN,KAYP,CACqB,GACA,OAAiB,QACjB,mBAA6B,MAC7B,IAEnB,YAAYC,EAAgCC,EAAW,CACrD,KAAK,IAAMA,GAAO,IAAI,GAAAC,QAAI,CAAE,OAAQ,EAAM,CAAC,EAC3C,KAAK,OAASF,GAAS,YAAc,KAAK,OAC1C,KAAK,mBACHA,GAAS,oBAAsB,KAAK,mBACtC,IAAMG,EAAiB,CACrB,KAAM,aACN,GAAGH,GAAS,cACd,EACA,KAAK,GAAK,IAAII,GACZD,EAAe,KACfA,CACF,EAEA,KAAK,GAEF,IAAI,CACH,IAAK,kBACL,MAAO,CACL,iCAAkC,CAChC,IAAK,SAAUE,EAA4B,CACzC,IAAMC,EAAqBD,EAAO,aAC/B,SAAS,EACT,SAAS,GAAI,GAAG,EACnBA,EAAO,SAAS,QAAQ,SAAUE,EAAS,CACzC,IAAMC,EACJ,mBAAmBD,CAAO,EAAI,IAAMD,EAEtC,KAAKE,CAAE,CACT,CAAC,CACH,EAAE,SAAS,CACb,EACA,+BAAgC,CAC9B,IAAK,SAAUH,EAA4B,CACzC,GAAIA,EAAO,SAAS,SAAW,EAAG,CAChC,IAAMC,EAAqBD,EAAO,aAC/B,SAAS,EACT,SAAS,GAAI,GAAG,EACbG,EACJ,mBAAmBH,EAAO,KAAK,EAAI,IAAMC,EAE3C,KAAKE,CAAE,CACT,CACF,EAAE,SAAS,CACb,EACA,qBAAsB,CACpB,IAAK,SAAUH,EAA4B,CACrCA,EAAO,WACXA,EAAO,SAAS,QAAQ,SAAUE,EAAS,CACzC,IAAMC,EACJ,mBAAmBH,EAAO,KAAK,EAC/B,IACA,mBAAmBE,CAAO,EAE5B,KAAKC,EAAIH,EAAO,YAAY,CAC9B,CAAC,CACH,EAAE,SAAS,EACX,OAAQ,QACV,CACF,CACF,CAAC,EAEA,MAAOI,GAAU,CAChB,GACE,EAAAA,GACA,OAAOA,GAAU,UACjB,SAAUA,GACVA,EAAM,OAAS,YAKf,MAAMA,CAEV,CAAC,CACL,CAEA,MAAgB,gBAAgBC,EAA4B,CAC1D,IAAMC,EAAMC,GAAcF,CAAQ,EAAI,IAiBtC,OAhBgB,MAAM,KAAK,GAAG,QAAQ,CACpC,SAAUC,EACV,OAAQA,EAAM,SACd,aAAc,EAChB,CAAC,GACoB,KAClB,IAAKE,GAAQA,EAAI,GAAG,EAEpB,OAIC,CAACC,EAAKC,KACFA,GAAKD,EAAI,KAAKC,CAAG,EACdD,GACN,CAAC,CAAC,CAET,CAEU,MAAMJ,EAA4B,CAC1C,OAAOE,GAAcF,CAAQ,EAAI,IAAMM,GAAa,CACtD,CAEA,IAAuB,SAAUC,IAAS,CACxC,GAAM,CAACC,EAAeC,EAAQC,CAAO,EAAIH,EACnC,CAAE,SAAAP,CAAS,EAAIW,GAAoBH,CAAa,EAKhDI,GAHU,MAAM,KAAK,gBAAgBZ,CAAQ,GAG9B,OAAQK,GAC3BQ,GAA6BR,EAAKK,CAAO,CAC3C,EACA,GAAI,CAACE,EAAK,OAAQ,MAAM,IAAIE,GAG5B,IAAMT,EAAMO,EAAK,OAAO,CAACE,EAAG,IAAOC,GAAcD,EAAG,CAAC,EAAIA,EAAI,CAAE,EAGzD,CAAE,IAAAE,EAAK,KAAAC,EAAM,GAAGtB,CAAO,EAAIU,EAOjC,GAHAa,GAAmBvB,EAAQ,CAAC,EAAGe,CAAO,EAGlC,CADaS,GAAkB,KAAK,IAAKV,CAAM,EACrCd,CAAM,EAClB,MAAM,IAAIyB,GAEZ,OAAOzB,CACT,EAUA,MAAgB,iBACdK,EACAqB,EAAsB,GACtB,CAEA,IAAMC,GADoB,MAAM,KAAK,gBAAgBtB,CAAQ,GACpB,OAAQK,GAAQ,CAACA,EAAI,SAAS,EACvE,GAAI,CAACiB,EAAe,OAAQ,OAG5B,IAAMC,EAAiBD,EACpB,IAAKjB,GAAQA,EAAI,YAAY,EAC7B,OAAO,CAACS,EAAGU,IAAOV,EAAIU,EAAIV,EAAIU,CAAE,EAG7BC,EAAeH,EAAe,OACjCjB,GAAQ,CAACgB,GAAchB,EAAI,aAAekB,CAC7C,EAKMG,EAAoBJ,EAAe,OACtCjB,GAAQgB,GAAchB,EAAI,eAAiBkB,CAC9C,EACA,GAAIG,EAAkB,OAAQ,CAC5B,IAAMC,EAAYD,EACf,IAAKrB,GAAQA,EAAI,GAAG,EACpB,OAAO,CAACS,EAAG,IAAOA,EAAI,EAAIA,EAAI,CAAE,EAC7Bc,EAAyBF,EAAkB,OAC9CrB,GAAQA,EAAI,MAAQsB,CACvB,EACAF,EAAa,KAAK,GAAGG,CAAsB,CAC7C,CAEA,IAAMC,EAAeR,EAAaE,EAAiB,IAAI,KAAK,EAAE,QAAQ,EAEhEO,EAAgB,MAAM,KAAK,GAAG,SAClCL,EAAa,IAAKpB,IAAS,CACzB,GAAGA,EACH,UAAW,GACX,aAAAwB,CACF,EAAE,CACJ,EAGIE,EACJ,QAAWC,KAAiBF,EAC1B,GAAI,OAAQE,EAAe,CACzB,GAAM,CAAE,GAAAlC,CAAG,EAAIkC,EACTC,EAAaR,EAAa,KAAMpB,GAAQA,EAAI,MAAQP,CAAE,EAC5D,GAAImC,EAAY,CACd,GAAM,CAAE,IAAAjB,EAAK,KAAAC,EAAM,WAAAiB,EAAY,aAAAC,EAAc,GAAGxC,CAAO,EAAIsC,EAC3DF,EAAgB,CACd,GAAGpC,EACH,UAAW,GACX,aAAAkC,CACF,EACA,KACF,CACF,CAGF,OAAOE,CACT,CAEA,OAA6B,SAAUxB,IAAS,CAC9C,GAAM,CAACC,EAAeE,CAAO,EAAIH,EAC3B,CAAE,SAAAP,CAAS,EAAIW,GAAoBH,CAAa,EACtD,GAAIR,EAAS,QAAUU,EAAQ,MAC7B,MAAM,IAAI0B,GAGZ,IAAML,EAAgB,MAAM,KAAK,iBAAiB/B,CAAQ,EAC1D,GAAI,CAAC+B,EACH,MAAM,IAAIjB,GAEZ,OAAOiB,CACT,EAEA,IAAuB,SAAUxB,IAAS,CACxC,GAAM,CAAC8B,EAAe3B,CAAO,EAAIH,EACjC,GAAI8B,EAAc,OAASA,EAAc,QAAU3B,EAAQ,MACzD,MAAM,IAAI0B,GAEZ,GAAIC,EAAc,QAAUA,EAAc,SAAW,KAAK,OACxD,MAAM,IAAID,GACR,mDACF,EAGF,IAAMzC,EAA6B,CACjC,MAAO0C,EAAc,MACrB,SAAUA,EAAc,SACxB,QAASA,EAAc,QACvB,KAAMA,EAAc,MAAQ/B,GAAa,EACzC,OAAQ,KAAK,OACb,MAAOI,EAAQ,MACf,UAAW,GACX,aAAc,IAAI,KAAK,EAAE,QAAQ,CACnC,EAEA,MAAM,KAAK,GAAG,IAAI,CAChB,IAAK,KAAK,MAAMf,CAAM,EACtB,GAAGA,CACL,CAAC,EAGD,IAAM2C,EAAiB,MAAM,KAAK,iBAAiB3C,EAAQ,EAAI,EAC/D,OAAI2C,GAGK,CACL,GAAG3C,EACH,MAAO,CAAC,EACR,SAAU,CAAC,EACX,QAAS,OACT,UAAW,EACb,CAEJ,EAEA,MAA2B,SAAUY,IAAS,CAC5C,GAAM,CAACgC,EAAO/B,EAAeE,CAAO,EAAIH,EAClC,CAAE,SAAAP,CAAS,EAAIW,GAAoBH,CAAa,EACtD,GAAIR,EAAS,QAAUU,EAAQ,MAC7B,MAAM,IAAI0B,GAEZ,IAAMI,EAAiB,MAAM,KAAK,IAAIhC,EAAe,CAAC,EAAGE,CAAO,EAChE,GAAI8B,EAAe,UACjB,MAAM,IAAI1B,GACR,qDACF,EAIF,IAAM2B,EAAkC,CAAE,GAAGD,CAAe,EAC5D,QAAWE,IAAQ,CAAC,QAAS,WAAY,SAAS,EAChDC,GAAmBC,GAAYF,EAAMH,EAAOE,CAAW,EAIzD,GACE,OAAOA,EAAY,OAAU,UAC7B,MAAM,QAAQA,EAAY,KAAK,GAC/B,CAACA,EAAY,MAEb,MAAM,IAAII,GAAwB,8BAA8B,EAIlE,GACE,CAAC,MAAM,QAAQJ,EAAY,QAAQ,GACnC,CAACA,EAAY,SAAS,MAAO5C,GAAY,OAAOA,GAAY,QAAQ,EAEpE,MAAM,IAAIgD,GACR,4CACF,EAIF,GACEJ,EAAY,UACX,CAAC,MAAM,QAAQA,EAAY,OAAO,GACjC,CAACA,EAAY,QAAQ,MAAOK,GAAY,OAAOA,GAAY,QAAQ,GAErE,MAAM,IAAID,GACR,yCACF,EAGF,OAAAJ,EAAY,aAAe,IAAI,KAAK,EAAE,QAAQ,EAC9C,MAAM,KAAK,GAAG,IAAI,CAChB,GAAGA,EACH,IAAK,KAAK,MAAMA,CAAW,CAC7B,CAAC,EAGD,MAAM,KAAK,iBAAiBA,EAAa,EAAI,EAEtC,CACL,GAAGD,EACH,UAAW,GACX,aAAcC,EAAY,YAC5B,CACF,EAEU,0BAA0BhC,EAAqB,CAEvD,IAAIsC,EAAiB,GACjBC,EAAe,SACbC,EAAqBxC,EAAO,YAAY,aAC9C,GAAIwC,GAAoB,QAAS,CAC/B,IAAIC,EAAU,KAAK,KAAKD,EAAmB,OAAO,EAClDC,IAAYD,EAAmB,SAC7BA,EAAmB,kBACnBC,IACFH,EAAiBG,EAAQ,SAAS,EAAE,SAAS,GAAI,GAAG,CACtD,CACA,GAAID,GAAoB,QAAS,CAC/B,IAAIE,EAAU,KAAK,MAAMF,EAAmB,OAAO,EACnDE,IAAYF,EAAmB,SAC7BA,EAAmB,kBACnBE,IACFH,EAAeG,EAAQ,SAAS,EAAE,SAAS,GAAI,GAAG,CACpD,CACA,MAAO,CACL,eAAAJ,EACA,aAAAC,CACF,CACF,CAEA,SAAiC,IAAIzC,IAAS,CAC5C,GAAM,CAAC6C,EAAU3C,EAAQC,CAAO,EAAIH,EAC9B8C,EAAWlC,GAAkB,KAAK,IAAKV,CAAM,EAE7C,CAAE,eAAAsC,EAAgB,aAAAC,CAAa,EACnC,KAAK,0BAA0BvC,CAAM,EA+CvC,OA3CI,IAAI6C,GAAS,MAAOC,EAAMC,IAAS,CACrC,IAAMC,EAAe,IAAI,IAEzB,QAAW5D,KAAWuD,EAAU,CAC9B,IAAMM,EAAY,mBAAmB7D,CAAO,EAAI,IAC1C8D,EAAWD,EAAYX,EACvBa,EAASF,EAAYV,EAErBa,EAAS,MAAM,KAAK,GAAG,MAC3B,2CACA,CAAE,SAAAF,EAAU,OAAAC,EAAQ,aAAc,EAAK,CACzC,EAEA,QAAWzD,KAAO0D,EAAO,KAAM,CAC7B,IAAMxD,EAAMF,EAAI,IAChB,GAAI,CAACE,EAAK,SAEV,GAAM,CAAE,IAAAW,EAAK,KAAAC,EAAM,GAAGtB,CAAO,EAAIU,EAI7BoD,EAAa,IAAIzC,CAAG,IACxByC,EAAa,IAAIzC,CAAG,EAGfH,GAA6BR,EAAKK,CAAO,IAI9CQ,GAAmBvB,EAAQyD,EAAU1C,CAAO,EAGxC2C,EAAS1D,CAAM,GACjB,MAAM4D,EAAK,CAAE,MAAO5D,CAAO,CAAC,GAEhC,CACF,CACA,OAAA6D,EAAK,EACE,CACL,mBAAoB,KAAK,kBAC3B,CACF,CAAC,CAGH,EAEA,eAA6C,CAAC/C,EAAQC,IAAY,CAChE,IAAM2C,EAAWlC,GAAkB,KAAK,IAAKV,CAAM,EAE7C,CAAE,eAAAsC,EAAgB,aAAAC,CAAa,EACnC,KAAK,0BAA0BvC,CAAM,EACjCiD,EAAY,mBAAmBhD,EAAQ,KAAK,EAAI,IAChDiD,EAAWD,EAAYX,EACvBa,EAASF,EAAYV,EA4B3B,OAxBI,IAAIM,GAAS,MAAOC,EAAMC,IAAS,CACrC,IAAMK,EAAS,MAAM,KAAK,GAAG,MAC3B,yCACA,CAAE,SAAAF,EAAU,OAAAC,EAAQ,aAAc,EAAK,CACzC,EAEA,QAAWzD,KAAO0D,EAAO,KAAM,CAC7B,IAAMxD,EAAMF,EAAI,IAChB,GAAI,CAACE,EAAK,SAKV,GAAM,CAAE,IAAAW,EAAK,KAAAC,EAAM,GAAGtB,CAAO,EAAIU,EAC7BgD,EAAS1D,CAAM,GACjB,MAAM4D,EAAK,CAAE,MAAO5D,CAAO,CAAC,CAEhC,CACA,OAAA6D,EAAK,EACE,CACL,mBAAoB,KAAK,kBAC3B,CACF,CAAC,CAGH,EAEA,aAA0C9C,GAEtC,IAAI4C,GAAS,MAAOC,EAAMC,IAAS,CACjC,IAAME,EAAY,mBAAmBhD,EAAQ,KAAK,EAAI,IAChDmD,EAAS,MAAM,KAAK,GAAG,MAAM,+BAAgC,CACjE,SAAUH,EACV,OAAQA,EAAY,SACpB,OAAQ,GACR,MAAO,EACT,CAAC,EACD,QAAWvD,KAAO0D,EAAO,KAAM,CAC7B,IAAMC,EAAiB3D,EAAI,IAAI,MAAM,GAAG,EAAE,CAAC,EAC3C,GAAI,OAAO2D,GAAmB,SAAU,SACxC,GAAM,CAAE,MAAAC,EAAO,IAAKlC,CAAa,EAAI1B,EAAI,MACrC,OAAO4D,GAAU,UAAY,OAAOlC,GAAiB,UAEzD,MAAM0B,EAAK,CACT,MAAO,CACL,QAAS,mBAAmBO,CAAc,EAC1C,MAAAC,EACA,aAAAlC,CACF,CACF,CAAC,CACH,CACA2B,EAAK,CACP,CAAC,CAIP,EeniBAQ,IAAAC,IAAAC,IAAA,IAAAC,GAAgB,SAkCT,IAAMC,GAAN,KAcP,CACqB,kBAAoB,IAAI,YACxB,IACA,SAInB,YAAYC,EAAmCC,EAAW,CACxD,KAAK,IAAMA,GAAO,IAAI,GAAAC,QAAI,CAAE,OAAQ,EAAM,CAAC,EAC3C,KAAK,SAAWF,CAClB,CAEU,oBACRG,EACAC,EACA,CACA,IAAMC,EAA0B,IAAI,YAAY,SAAU,CACxD,OAAQ,CACN,UAAAF,EACA,UAAAC,CACF,CACF,CAAC,EACD,KAAK,kBAAkB,cAAcC,CAAK,CAC5C,CAEA,IAAuB,SAAUC,IAAS,CACxC,IAAMC,EAAS,MAAM,KAAK,SAAS,IAAI,GAAGD,CAAI,EAC9C,YAAK,oBAAoBC,CAAM,EACxBA,CACT,EAEA,IAAuB,SAAUD,IAAS,CACxC,IAAMH,EAAY,MAAM,KAAK,SAAS,IAAI,GAAGG,CAAI,EAC3CE,EAAgBF,EAAK,CAAC,EACtBF,EAAgC,CACpC,GAAGD,EACH,MAAOK,EAAc,MACrB,SAAUA,EAAc,SACxB,QAASA,EAAc,QACvB,UAAW,EACb,EACA,YAAK,oBAAoBL,EAAWC,CAAS,EACtCD,CACT,EAEA,MAA2B,SAAUG,IAAS,CAC5C,IAAMH,EAAY,MAAM,KAAK,SAAS,MAAM,GAAGG,CAAI,EAC7CF,EAAgC,CAAE,GAAGD,CAAU,EACrDC,EAAU,UAAY,GACtB,QAAWK,IAAQ,CAAC,QAAS,WAAY,SAAS,EAChDC,GAAmBC,GAAYF,EAAMH,EAAK,CAAC,EAAGF,CAAS,EAEzD,YAAK,oBAAoBD,EAAWC,CAAS,EACtCD,CACT,EAEA,OAA6B,SAAUG,IAAS,CAC9C,IAAMH,EAAY,MAAM,KAAK,SAAS,OAAO,GAAGG,CAAI,EACpD,YAAK,oBAAoBH,CAAS,EAC3BA,CACT,EAEU,aACRS,EACA,CACA,IAAMC,EAAW,KAAK,oBAAoB,KAAK,IAAI,EAYnD,OAXgB,iBAAmB,CACjC,IAAIC,EAAS,MAAMF,EAAS,KAAK,EACjC,KAAO,CAACE,EAAO,MACRA,EAAO,MAAM,OAChBD,EAASC,EAAO,MAAM,KAAK,EAE7B,MAAMA,EAAO,MACbA,EAAS,MAAMF,EAAS,KAAK,EAE/B,OAAOE,EAAO,KAChB,EACe,CACjB,CAEA,SAAiC,IAAIR,IAAS,CAC5C,IAAMM,EAAW,KAAK,SAAS,SAAS,GAAGN,CAAI,EAC/C,OAAO,KAAK,aAAaM,CAAQ,CACnC,EAEA,eAA6C,IAAIN,IAAS,CACxD,IAAMM,EAAW,KAAK,SAAS,eAAe,GAAGN,CAAI,EACrD,OAAO,KAAK,aAAaM,CAAQ,CACnC,EAEU,YACRG,EACAC,EACAC,EACAC,EACA,CACA,IAAMC,EAAWC,GAAkB,KAAK,IAAKH,CAAM,EAoCnD,OAhCI,IAAII,GAAS,MAAOC,EAAMC,IAAS,CACrC,IAAMC,EAAYnB,GAA4B,CAC5C,GAAM,CAAE,UAAWoB,EAAc,UAAWC,CAAa,EACvDrB,EAAM,OAER,QAAWsB,IAAa,CAACD,EAAcD,CAAY,EACjD,GACEE,GACAZ,EAAYY,CAAS,GACrBC,GAA6BD,EAAWT,CAAO,EAC/C,CACA,IAAMX,EAAS,CAAE,GAAGoB,CAAU,EAE9B,GADAE,GAAmBtB,EAAQS,EAAUE,CAAO,EACxCC,EAASZ,CAAM,EAAG,CACpBe,EAAK,CAAE,MAAOf,CAAO,CAAC,EACtB,KACF,CACF,CAEJ,EAEA,KAAK,kBAAkB,iBACrB,SACAiB,CACF,EACA,MAAMD,EACN,KAAK,kBAAkB,oBACrB,SACAC,CACF,CACF,CAAC,CAGH,CAEA,oBAAuD,IAAIlB,IAAS,CAClE,GAAM,CAACU,EAAUC,EAAQC,CAAO,EAAIZ,EACpC,SAASS,EAAYR,EAA4B,CAC/C,OAAOA,EAAO,SAAS,KAAMuB,GAAYd,EAAS,SAASc,CAAO,CAAC,CACrE,CACA,OAAO,KAAK,YAAYf,EAAaC,EAAUC,EAAQC,CAAO,CAChE,EAEA,eAA6C,IAAIZ,IAAS,CACxD,GAAM,CAACyB,EAAed,EAAQC,CAAO,EAAIZ,EACzC,SAASS,EAAYR,EAA4B,CAC/C,IAAMyB,EAAYC,GAAc1B,CAAM,EAChC,CAAE,IAAA2B,CAAI,EAAIC,GAAoBJ,CAAa,EACjD,OAAOC,IAAcE,CACvB,CACA,OAAO,KAAK,YAAYnB,EAAa,CAAC,EAAGE,EAAQC,CAAO,CAC1D,EAEA,0BAAmE,IAC9DZ,IACA,CACH,GAAM,CAACW,EAAQC,CAAO,EAAIZ,EAC1B,SAASS,EAAYR,EAA4B,CAC/C,OAAOA,EAAO,QAAUW,EAAQ,OAASX,EAAO,SAAS,SAAW,CACtE,CACA,OAAO,KAAK,YAAYQ,EAAa,CAAC,EAAGE,EAAQC,CAAO,CAC1D,CACF,EnB/LO,IAAMkB,GAAN,cAA4BC,EAAS,CAC1C,cAAgBC,GAChB,cAAgBC,GAEhB,MACA,OACA,cACA,IACA,IACA,MACA,OACA,SACA,eACA,eACA,oBACA,0BACA,aAEA,YAAYC,EAAgC,CAC1C,MAAM,EAEN,IAAMC,EAAsB,IAAIC,GAChC,KAAK,MAAQD,EAAoB,MAAM,KAAKA,CAAmB,EAC/D,KAAK,OAASA,EAAoB,OAAO,KAAKA,CAAmB,EACjE,KAAK,cAAgBA,EAAoB,cAEzC,IAAME,EAAM,IAAI,GAAAC,QAAI,CAAE,OAAQ,EAAM,CAAC,EAC/BC,EAAsB,IAAIC,GAAsBN,EAASG,CAAG,EAC5DI,EAAsB,IAAIC,GAC9BH,EACAF,CACF,EAEA,KAAK,IAAMI,EAAoB,IAAI,KAAKA,CAAmB,EAC3D,KAAK,IAAMA,EAAoB,IAAI,KAAKA,CAAmB,EAC3D,KAAK,MAAQA,EAAoB,MAAM,KAAKA,CAAmB,EAC/D,KAAK,OAASA,EAAoB,OAAO,KAAKA,CAAmB,EACjE,KAAK,SAAWA,EAAoB,SAAS,KAAKA,CAAmB,EACrE,KAAK,eACHA,EAAoB,eAAe,KAAKF,CAAmB,EAC7D,KAAK,aACHA,EAAoB,aAAa,KAAKA,CAAmB,EAC3D,KAAK,oBACHE,EAAoB,oBAAoB,KAAKA,CAAmB,EAClE,KAAK,eACHA,EAAoB,eAAe,KAAKA,CAAmB,EAC7D,KAAK,0BACHA,EAAoB,0BAA0B,KAAKA,CAAmB,CAC1E,CACF",
6
6
  "names": ["init_dirname", "__esmMin", "process_exports", "__export", "_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", "browser", "chdir", "config", "cpuUsage", "cwd", "debugPort", "process", "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", "unimplemented", "name", "cleanUpNextTick", "draining", "currentQueue", "queue", "queueIndex", "drainQueue", "timeout", "len", "fun", "args", "i", "Item", "array", "noop", "condition", "message", "_performance", "previousTimestamp", "baseNow", "clocktime", "seconds", "nanoseconds", "nanoPerSec", "nowOffset", "init_process", "__esmMin", "init_dirname", "init_buffer", "type", "mask", "dir", "time", "diff", "init_process", "__esmMin", "dew$2", "_dewExec$2", "exports$2", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "i", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "dew$1", "_dewExec$1", "exports$1", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "d", "s", "value", "rt", "dew", "_dewExec", "exports", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "actual", "fromArrayLike", "array", "arrayView", "copy", "byteOffset", "obj", "numberIsNaN", "a", "x", "y", "list", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "init_chunk_DtuTasat", "__esmMin", "init_dirname", "init_buffer", "init_process", "exports", "Buffer", "INSPECT_MAX_BYTES", "kMaxLength", "init_buffer", "__esmMin", "init_dirname", "init_process", "init_chunk_DtuTasat", "dew", "init_buffer", "__esmMin", "_CodeOrName", "exports", "Name", "s", "_Code", "code", "item", "_a", "c", "names", "_", "strs", "args", "i", "addCodeArg", "plus", "str", "expr", "safeStringify", "optimize", "arg", "interpolate", "res", "mergeExprItems", "a", "b", "strConcat", "c1", "c2", "x", "stringify", "getProperty", "key", "getEsmExportName", "regexpCode", "rx", "code_1", "ValueError", "name", "UsedValueState", "exports", "Scope", "prefixes", "parent", "nameOrPrefix", "prefix", "ng", "_b", "_a", "ValueScopeName", "nameStr", "value", "property", "itemIndex", "line", "ValueScope", "opts", "valueKey", "vs", "_name", "s", "keyOrRef", "scopeName", "values", "usedValues", "getCode", "valueCode", "code", "nameSet", "c", "def", "code_1", "scope_1", "code_2", "exports", "scope_2", "Node", "_names", "_constants", "Def", "varKind", "name", "rhs", "es5", "_n", "names", "constants", "optimizeExpr", "Assign", "lhs", "sideEffects", "addExprNames", "AssignOp", "op", "Label", "label", "Break", "Throw", "error", "AnyCode", "code", "ParentNode", "nodes", "opts", "i", "n", "subtractNames", "addNames", "BlockNode", "Root", "Else", "If", "_If", "condition", "cond", "e", "ns", "not", "_a", "For", "ForLoop", "iteration", "ForRange", "from", "to", "ForIter", "loop", "iterable", "Func", "args", "async", "Return", "Try", "_b", "Catch", "Finally", "CodeGen", "extScope", "prefix", "prefixOrName", "value", "keyOrRef", "scopeName", "nameOrPrefix", "constant", "_constant", "c", "keyValues", "key", "thenBody", "elseBody", "node", "forBody", "arr", "obj", "tryBody", "catchCode", "finallyCode", "body", "nodeCount", "len", "toClose", "funcBody", "N1", "N2", "expr", "replaceName", "canOptimize", "items", "x", "par", "andCode", "mappend", "and", "orCode", "or", "y", "codegen_1", "code_1", "toHash", "arr", "hash", "item", "exports", "alwaysValidSchema", "it", "schema", "checkUnknownRules", "schemaHasRules", "opts", "self", "rules", "key", "checkStrictMode", "schemaHasRulesButRef", "RULES", "schemaRefOrVal", "topSchemaRef", "schemaPath", "keyword", "$data", "unescapeFragment", "str", "unescapeJsonPointer", "escapeFragment", "escapeJsonPointer", "eachItem", "xs", "f", "x", "makeMergeEvaluated", "mergeNames", "mergeToName", "mergeValues", "resultToName", "gen", "from", "to", "toName", "res", "setEvaluated", "evaluatedPropsToName", "items", "ps", "props", "p", "snippets", "useFunc", "Type", "getErrorPath", "dataProp", "dataPropType", "jsPropertySyntax", "isNumber", "msg", "mode", "codegen_1", "names", "exports", "codegen_1", "util_1", "names_1", "exports", "keyword", "schemaType", "reportError", "cxt", "error", "errorPaths", "overrideAllErrors", "it", "gen", "compositeRule", "allErrors", "errObj", "errorObjectCode", "addError", "returnErrors", "reportExtraError", "resetErrorsCount", "errsCount", "extendErrors", "schemaValue", "data", "err", "i", "errs", "validateName", "schemaEnv", "E", "createErrors", "errorObject", "keyValues", "errorInstancePath", "errorSchemaPath", "extraErrorProps", "errorPath", "instancePath", "instPath", "errSchemaPath", "schemaPath", "parentSchema", "schPath", "params", "message", "opts", "propertyName", "topSchemaRef", "errors_1", "codegen_1", "names_1", "boolError", "topBoolOrEmptySchema", "it", "gen", "schema", "validateName", "falseSchemaError", "exports", "boolOrEmptySchema", "valid", "overrideAllErrors", "data", "cxt", "_jsonTypes", "jsonTypes", "isJSONType", "x", "exports", "getRules", "groups", "schemaHasRulesForType", "schema", "self", "type", "group", "shouldUseGroup", "exports", "rule", "shouldUseRule", "_a", "kwd", "rules_1", "applicability_1", "errors_1", "codegen_1", "util_1", "DataType", "exports", "getSchemaTypes", "schema", "types", "getJSONTypes", "ts", "coerceAndCheckDataType", "it", "gen", "data", "opts", "coerceTo", "coerceToTypes", "checkTypes", "wrongType", "checkDataTypes", "coerceData", "reportTypeError", "COERCIBLE", "coerceTypes", "t", "dataType", "coerced", "coerceSpecificType", "assignParentData", "parentData", "parentDataProperty", "expr", "checkDataType", "strictNums", "correct", "EQ", "cond", "numCond", "_cond", "dataTypes", "notObj", "typeError", "schemaValue", "cxt", "getTypeErrorContext", "schemaCode", "codegen_1", "util_1", "assignDefaults", "it", "ty", "properties", "items", "key", "assignDefault", "sch", "i", "exports", "prop", "defaultValue", "gen", "compositeRule", "data", "opts", "childData", "condition", "codegen_1", "util_1", "names_1", "util_2", "checkReportMissingProp", "cxt", "prop", "gen", "data", "it", "noPropertyInData", "exports", "checkMissingProp", "opts", "properties", "missing", "reportMissingProp", "hasPropFunc", "isOwnProperty", "property", "propertyInData", "ownProperties", "cond", "allSchemaProperties", "schemaMap", "p", "schemaProperties", "callValidateCode", "schemaCode", "topSchemaRef", "schemaPath", "errorPath", "func", "context", "passSchema", "dataAndSchema", "valCxt", "args", "newRegExp", "usePattern", "pattern", "u", "regExp", "rx", "validateArray", "keyword", "valid", "validArr", "validateItems", "notValid", "len", "i", "validateUnion", "schema", "sch", "schValid", "_sch", "schCxt", "codegen_1", "names_1", "code_1", "errors_1", "macroKeywordCode", "cxt", "def", "gen", "keyword", "schema", "parentSchema", "it", "macroSchema", "schemaRef", "useKeyword", "valid", "exports", "funcKeywordCode", "$data", "checkAsyncKeyword", "validate", "validateRef", "validateKeyword", "_a", "assignValid", "modifyData", "reportErrs", "ruleErrs", "validateAsync", "validateSync", "addErrs", "e", "validateErrs", "_await", "passCxt", "passSchema", "errors", "data", "errs", "schemaEnv", "result", "validSchemaType", "schemaType", "allowUndefined", "st", "validateKeywordUsage", "opts", "self", "errSchemaPath", "deps", "kwd", "msg", "codegen_1", "util_1", "getSubschema", "it", "keyword", "schemaProp", "schema", "schemaPath", "errSchemaPath", "topSchemaRef", "sch", "exports", "extendSubschemaData", "subschema", "dataProp", "dpType", "data", "dataTypes", "propertyName", "gen", "errorPath", "dataPathArr", "opts", "nextData", "dataContextProps", "_nextData", "extendSubschemaMode", "jtdDiscriminator", "jtdMetadata", "compositeRule", "createErrors", "allErrors", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "equal", "a", "b", "length", "keys", "key", "require_json_schema_traverse", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "traverse", "schema", "opts", "cb", "pre", "post", "_traverse", "jsonPtr", "rootSchema", "parentJsonPtr", "parentKeyword", "parentSchema", "keyIndex", "key", "sch", "i", "prop", "escapeJsonPtr", "str", "util_1", "equal", "traverse", "SIMPLE_INLINED", "inlineRef", "schema", "limit", "hasRef", "countKeys", "exports", "REF_KEYWORDS", "key", "sch", "count", "getFullPath", "resolver", "id", "normalize", "normalizeId", "p", "_getFullPath", "TRAILING_SLASH_HASH", "resolveUrl", "baseId", "ANCHOR", "getSchemaRefs", "schemaId", "uriResolver", "schId", "baseIds", "pathPrefix", "localRefs", "schemaRefs", "jsonPtr", "parentJsonPtr", "fullPath", "innerBaseId", "addRef", "addAnchor", "ref", "_resolve", "ambiguos", "schOrRef", "checkAmbiguosRef", "anchor", "sch1", "sch2", "boolSchema_1", "dataType_1", "applicability_1", "dataType_2", "defaults_1", "keyword_1", "subschema_1", "codegen_1", "names_1", "resolve_1", "util_1", "errors_1", "validateFunctionCode", "it", "isSchemaObj", "checkKeywords", "schemaCxtHasRules", "topSchemaObjCode", "validateFunction", "exports", "gen", "validateName", "schema", "schemaEnv", "opts", "body", "funcSourceUrl", "destructureValCxtES5", "destructureValCxt", "commentKeyword", "checkNoDefault", "resetEvaluated", "typeAndKeywords", "returnResults", "schId", "subschemaCode", "valid", "subSchemaObjCode", "self", "key", "updateContext", "checkAsyncSchema", "errsCount", "checkRefsAndKeywords", "schemaKeywords", "types", "checkedTypes", "errSchemaPath", "msg", "schemaPath", "rootName", "ValidationError", "assignEvaluated", "evaluated", "props", "items", "typeErrors", "data", "allErrors", "RULES", "keywordCode", "checkStrictTypes", "group", "groupKeywords", "iterateKeywords", "useDefaults", "rule", "checkContextTypes", "checkMultipleTypes", "checkKeywordTypes", "t", "includesType", "strictTypesError", "narrowSchemaTypes", "ts", "rules", "keyword", "type", "hasApplicableType", "schTs", "kwdT", "withTypes", "KeywordCxt", "def", "getData", "condition", "successAction", "failAction", "schemaCode", "append", "errorParams", "errorPaths", "cond", "obj", "assign", "codeBlock", "$dataValid", "schemaType", "wrong$DataType", "invalid$DataSchema", "st", "validateSchemaRef", "appl", "subschema", "nextContext", "schemaCxt", "toName", "ruleType", "cxt", "JSON_POINTER", "RELATIVE_JSON_POINTER", "$data", "dataLevel", "dataNames", "dataPathArr", "jsonPointer", "matches", "up", "errorMsg", "expr", "segments", "segment", "pointerType", "ValidationError", "errors", "exports", "resolve_1", "MissingRefError", "resolver", "baseId", "ref", "msg", "exports", "codegen_1", "validation_error_1", "names_1", "resolve_1", "util_1", "validate_1", "SchemaEnv", "env", "schema", "_a", "exports", "compileSchema", "sch", "_sch", "getCompilingSchema", "rootId", "es5", "lines", "ownProperties", "gen", "_ValidationError", "validateName", "schemaCxt", "sourceCode", "validateCode", "validate", "props", "items", "e", "resolveRef", "root", "baseId", "ref", "schOrFunc", "resolve", "schemaId", "inlineOrCompile", "schEnv", "sameSchemaEnv", "s1", "s2", "resolveSchema", "p", "refPath", "getJsonPointer", "id", "schOrRef", "schId", "PREVENT_SCOPE_CHANGE", "parsedRef", "part", "partSchema", "$ref", "require_data", "__commonJSMin", "exports", "module", "require_scopedChars", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "HEX", "require_utils", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "HEX", "IPV4_REG", "normalizeIPv4", "host", "findToken", "matches", "address", "stripLeadingZeros", "stringArrayToHexStripped", "input", "keepZero", "acc", "strip", "c", "getIPV6", "tokenCount", "output", "buffer", "isZone", "endipv6Encountered", "endIpv6", "consume", "hex", "i", "cursor", "normalizeIPv6", "ipv6", "newHost", "escapedHost", "str", "token", "out", "skip", "l", "ind", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "normalizeComponentEncoding", "components", "esc", "func", "recomposeAuthority", "uriTokens", "ipV4res", "ipV6res", "require_schemes", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "UUID_REG", "URN_REG", "isSecure", "wsComponents", "httpParse", "components", "httpSerialize", "secure", "wsParse", "wsSerialize", "path", "query", "urnParse", "urnComponents", "options", "matches", "scheme", "urnScheme", "schemeHandler", "SCHEMES", "urnSerialize", "nid", "uriComponents", "nss", "urnuuidParse", "uuidComponents", "urnuuidSerialize", "http", "https", "ws", "wss", "urn", "urnuuid", "require_fast_uri", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "normalizeIPv6", "normalizeIPv4", "removeDotSegments", "recomposeAuthority", "normalizeComponentEncoding", "SCHEMES", "normalize", "uri", "options", "serialize", "parse", "resolve", "baseURI", "relativeURI", "schemelessOptions", "resolved", "resolveComponents", "base", "relative", "skipNormalization", "target", "equal", "uriA", "uriB", "cmpts", "opts", "components", "uriTokens", "schemeHandler", "authority", "s", "hexLookUp", "_v", "k", "nonSimpleDomain", "value", "code", "i", "len", "URI_PARSE", "parsed", "gotEncoding", "isIP", "matches", "ipv4result", "ipv6result", "e", "fastUri", "uri", "exports", "validate_1", "exports", "codegen_1", "validation_error_1", "ref_error_1", "rules_1", "compile_1", "codegen_2", "resolve_1", "dataType_1", "util_1", "$dataRefSchema", "uri_1", "defaultRegExp", "str", "flags", "META_IGNORE_OPTIONS", "EXT_SCOPE_NAMES", "removedOptions", "deprecatedOptions", "MAX_EXPRESSION", "requiredOptions", "o", "s", "_optz", "_a", "optimize", "regExp", "_c", "_b", "uriResolver", "_d", "_f", "_e", "_h", "_g", "_k", "_j", "_m", "_l", "_p", "_o", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "Ajv", "opts", "es5", "lines", "getLogger", "formatOpt", "checkOptions", "getMetaSchemaOptions", "addInitialFormats", "addInitialKeywords", "addInitialSchemas", "$data", "meta", "schemaId", "_dataRefSchema", "schemaKeyRef", "data", "v", "valid", "schema", "_meta", "sch", "loadSchema", "runCompileAsync", "_schema", "loadMetaSchema", "_compileAsync", "$ref", "e", "checkLoaded", "loadMissingSchema", "ref", "missingRef", "_loadSchema", "p", "key", "_validateSchema", "id", "throwOrLogError", "$schema", "message", "keyRef", "getSchEnv", "root", "cacheKey", "definitions", "def", "kwdOrDef", "keyword", "checkKeyword", "kwd", "addRule", "keywordMetaschema", "definition", "k", "t", "rule", "RULES", "group", "name", "format", "errors", "separator", "dataVar", "text", "msg", "metaSchema", "keywordsJsonPointers", "rules", "jsonPointer", "segments", "keywords", "seg", "schemaOrData", "schemas", "regex", "baseId", "validateSchema", "addSchema", "localRefs", "currentOpts", "checkOpts", "options", "log", "opt", "optsSchemas", "defs", "metaOpts", "noLogs", "logger", "KEYWORD_NAME", "dataType", "post", "ruleGroup", "addBeforeRule", "before", "i", "_rule", "$dataRef", "ref_error_1", "code_1", "codegen_1", "names_1", "compile_1", "util_1", "def", "cxt", "gen", "$ref", "it", "baseId", "env", "validateName", "opts", "self", "root", "callRootRef", "schOrEnv", "callValidate", "inlineRefSchema", "callRef", "rootName", "sch", "v", "getValidate", "schName", "valid", "schCxt", "exports", "$async", "allErrors", "passCxt", "callAsyncRef", "callSyncRef", "addEvaluatedFrom", "e", "addErrorsFrom", "source", "errs", "schEvaluated", "_a", "props", "items", "ref_1", "core", "exports", "core_1", "codegen_1", "ops", "KWDs", "error", "cxt", "kwdOp", "def", "data", "schemaCode", "keyword", "opsIdx", "_a", "exports", "KWDs", "def", "keyword", "parentSchema", "limitKwd", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "gen", "data", "it", "prec", "res", "invalid", "exports", "ucs2length", "str", "len", "length", "pos", "value", "exports", "codegen_1", "util_1", "ucs2length_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "it", "op", "len", "exports", "code_1", "codegen_1", "error", "schemaCode", "def", "cxt", "data", "$data", "schema", "it", "u", "regExp", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "code_1", "codegen_1", "util_1", "error", "missingProperty", "def", "cxt", "gen", "schema", "schemaCode", "data", "$data", "it", "opts", "useLoop", "allErrorsMode", "exitOnErrorMode", "props", "definedProperties", "requiredKey", "schemaPath", "msg", "loopAllRequired", "prop", "missing", "valid", "loopUntilMissing", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "equal", "exports", "dataType_1", "codegen_1", "util_1", "equal_1", "error", "i", "j", "def", "cxt", "gen", "data", "$data", "schema", "parentSchema", "schemaCode", "it", "valid", "itemTypes", "validateUniqueItems", "canOptimize", "loopN", "loopN2", "t", "item", "wrongType", "indices", "eql", "outer", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "it", "useLoop", "eql", "getEql", "valid", "loopEnum", "vSchema", "_x", "i", "equalCode", "v", "sch", "exports", "limitNumber_1", "limitNumberExclusive_1", "multipleOf_1", "limitLength_1", "pattern_1", "limitProperties_1", "required_1", "limitItems_1", "uniqueItems_1", "const_1", "enum_1", "validation", "exports", "codegen_1", "util_1", "error", "len", "def", "cxt", "parentSchema", "it", "items", "validateAdditionalItems", "gen", "schema", "data", "keyword", "valid", "validateItems", "i", "exports", "codegen_1", "util_1", "code_1", "def", "cxt", "schema", "it", "validateTuple", "extraItems", "schArr", "gen", "parentSchema", "data", "keyword", "checkStrictTuple", "valid", "len", "sch", "i", "opts", "errSchemaPath", "l", "fullTuple", "msg", "exports", "items_1", "def", "cxt", "exports", "codegen_1", "util_1", "code_1", "additionalItems_1", "error", "len", "def", "cxt", "schema", "parentSchema", "it", "prefixItems", "exports", "codegen_1", "util_1", "error", "min", "max", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "minContains", "maxContains", "len", "cond", "valid", "validateItems", "validateItemsWithCount", "schValid", "count", "checkLimits", "_valid", "block", "i", "exports", "codegen_1", "util_1", "code_1", "exports", "property", "depsCount", "deps", "property_ies", "missingProperty", "def", "cxt", "propDeps", "schDeps", "splitDependencies", "validatePropertyDeps", "validateSchemaDeps", "schema", "propertyDeps", "schemaDeps", "key", "gen", "data", "it", "missing", "prop", "hasProperty", "depProp", "keyword", "valid", "schCxt", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "data", "it", "valid", "key", "exports", "code_1", "codegen_1", "names_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "data", "errsCount", "it", "allErrors", "opts", "props", "patProps", "checkAdditionalProperties", "key", "additionalPropertyCode", "isAdditional", "definedProp", "propsSchema", "p", "deleteAdditional", "valid", "applyAdditionalSchema", "errors", "subschema", "exports", "validate_1", "code_1", "util_1", "additionalProperties_1", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "allProps", "prop", "properties", "p", "valid", "hasDefault", "applyPropertySchema", "exports", "code_1", "codegen_1", "util_1", "util_2", "def", "cxt", "gen", "schema", "data", "parentSchema", "it", "opts", "patterns", "alwaysValidPatterns", "p", "checkProperties", "valid", "props", "validatePatternProperties", "pat", "checkMatchingProperties", "validateProperties", "prop", "key", "alwaysValid", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "exports", "code_1", "def", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "it", "schArr", "valid", "passing", "schValid", "validateOneOf", "sch", "i", "schCxt", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "sch", "i", "schCxt", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "parentSchema", "it", "hasThen", "hasSchema", "hasElse", "valid", "schValid", "validateIf", "ifClause", "validateClause", "schCxt", "keyword", "schema", "exports", "util_1", "def", "keyword", "parentSchema", "it", "exports", "additionalItems_1", "prefixItems_1", "items_1", "items2020_1", "contains_1", "dependencies_1", "propertyNames_1", "additionalProperties_1", "properties_1", "patternProperties_1", "not_1", "anyOf_1", "oneOf_1", "allOf_1", "if_1", "thenElse_1", "getApplicator", "draft2020", "applicator", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "ruleType", "gen", "data", "$data", "schema", "it", "opts", "errSchemaPath", "schemaEnv", "self", "validate$DataFormat", "validateFormat", "fmts", "fDef", "fType", "format", "unknownFmt", "invalidFmt", "callFormat", "validData", "formatDef", "unknownFormat", "fmtType", "fmtRef", "getFormat", "validCondition", "unknownMsg", "fmtDef", "code", "fmt", "exports", "format_1", "format", "exports", "core_1", "validation_1", "applicator_1", "format_1", "metadataVocabulary", "draft4Vocabularies", "exports", "DiscrError", "exports", "codegen_1", "types_1", "compile_1", "ref_error_1", "util_1", "error", "discrError", "tagName", "tag", "def", "cxt", "gen", "data", "schema", "parentSchema", "it", "oneOf", "valid", "validateMapping", "mapping", "getMapping", "tagValue", "applyTagSchema", "schemaProp", "_valid", "schCxt", "oneOfMapping", "topRequired", "hasRequired", "tagRequired", "i", "sch", "ref", "propSch", "_a", "addMappings", "required", "addMapping", "exports", "require_json_schema_draft_04", "__commonJSMin", "exports", "module", "core_1", "draft4_1", "discriminator_1", "draft4MetaSchema", "META_SUPPORT_DATA", "META_SCHEMA_ID", "Ajv", "opts", "v", "metaSchema", "module", "exports", "core_2", "core_3", "require_spark_md5", "__commonJSMin", "exports", "module", "init_dirname", "init_buffer", "init_process", "factory", "glob", "undefined", "add32", "a", "b", "hex_chr", "cmn", "q", "x", "s", "t", "md5cycle", "k", "c", "d", "md5blk", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "y", "lsw", "msw", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "require_vuvuzela", "__commonJSMin", "exports", "init_dirname", "init_buffer", "init_process", "input", "queue", "res", "next", "obj", "prefix", "val", "i", "arrayPrefix", "keys", "k", "key", "value", "objPrefix", "pop", "stack", "metaStack", "lastMetaElement", "element", "lastElementIndex", "str", "collationIndex", "parsedNum", "numChar", "parsedString", "lastCh", "numConsecutiveSlashes", "ch", "arrayElement", "objElement", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "Graffiti", "object", "GraffitiErrorForbidden", "_GraffitiErrorForbidden", "message", "GraffitiErrorNotFound", "_GraffitiErrorNotFound", "GraffitiErrorInvalidSchema", "_GraffitiErrorInvalidSchema", "GraffitiErrorSchemaMismatch", "_GraffitiErrorSchemaMismatch", "GraffitiErrorPatchTestFailed", "_GraffitiErrorPatchTestFailed", "GraffitiErrorPatchError", "_GraffitiErrorPatchError", "GraffitiErrorInvalidUri", "_GraffitiErrorInvalidUri", "import_ajv_draft_04", "init_dirname", "init_buffer", "init_process", "GraffitiLocalSessionManager", "actor", "event", "actorsString", "actors", "proposal", "response", "detail", "existingActors", "session", "exists", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "import_spark_md5", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "getRandomValues", "rnds8", "rng", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "regex_default", "validate", "uuid", "regex_default", "validate_default", "byteToHex", "i", "stringify", "arr", "offset", "uuid", "validate_default", "stringify_default", "init_dirname", "init_buffer", "init_process", "v4", "options", "buf", "offset", "rnds", "rng", "stringify_default", "v4_default", "import_vuvuzela", "init_dirname", "init_buffer", "init_process", "exports$1", "_dewExec", "dew", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "exports", "event", "eventListener", "unconsumedEventValues", "unconsumedPromises", "error", "finished", "iterator", "p", "eventHandler", "errorHandler", "promise", "toError", "init", "on", "isBinaryObject", "object", "cloneBinaryObject", "funcToString", "objectCtorString", "isPlainObject", "value", "proto", "Ctor", "clone", "newObject", "i", "len", "once", "fun", "called", "args", "toPromise", "func", "self", "usedCB", "promise", "fulfill", "reject", "resp", "callback", "err", "mesg", "e", "result", "logApiCall", "name", "logArgs", "origCallback", "res", "responseArgs", "adapterFun", "failed", "pick", "obj", "arr", "prop", "MAX_NUM_CONCURRENT_REQUESTS", "identityFunction", "x", "formatResultForOpenRevsGet", "bulkGet", "db", "opts", "requests", "requestsById", "request", "numDocs", "numDone", "perDocResults", "collapseResultsAndFinish", "results", "info", "checkDone", "gotResult", "docIndex", "id", "docs", "allRequests", "key", "nextBatch", "upTo", "batch", "processBatch", "offset", "docId", "j", "docIdx", "docRequests", "docOpts", "formatResult", "param", "hasLocal", "hasLocalStorage", "nextTick", "fn", "Changes", "exports", "dbName", "inprogress", "eventFunction", "changesOpts", "onError", "c", "guardedConsole", "method", "randomNumber", "min", "max", "maxTimeout", "ratio", "range", "defaultBackOff", "explainError", "status", "str", "PouchError", "error", "reason", "UNAUTHORIZED", "MISSING_BULK_DOCS", "MISSING_DOC", "REV_CONFLICT", "INVALID_ID", "MISSING_ID", "RESERVED_ID", "NOT_OPEN", "UNKNOWN_ERROR", "BAD_ARG", "INVALID_REQUEST", "QUERY_PARSE_ERROR", "DOC_VALIDATION", "BAD_REQUEST", "NOT_AN_OBJECT", "DB_MISSING", "IDB_ERROR", "WSQ_ERROR", "LDB_ERROR", "FORBIDDEN", "INVALID_REV", "FILE_EXISTS", "MISSING_STUB", "INVALID_URL", "createError", "CustomPouchError", "names", "generateErrorFromResponse", "data", "tryFilter", "filter", "doc", "req", "msg", "filterChange", "hasFilter", "change", "filterReturn", "att", "invalidIdError", "isRemote", "listenerCount", "ee", "type", "parseDesignDocFunctionName", "s", "parts", "normalizeDesignDocFunctionName", "normalized", "keys", "qName", "qParser", "parser", "parseUri", "m", "uri", "encoded", "$0", "$1", "$2", "scopeEval", "source", "scope", "values", "upsert", "diffFun", "docRev", "newDoc", "tryAndPut", "thisAtob", "thisBtoa", "createBlob", "properties", "Builder", "builder", "binaryStringToArrayBuffer", "bin", "length", "buf", "binStringToBluffer", "binString", "b64ToBluffer", "b64", "arrayBufferToBinaryString", "buffer", "binary", "bytes", "readAsBinaryString", "blob", "reader", "hasBinaryString", "blobToBinaryString", "blobOrBuffer", "blobToBase64", "base64", "readAsArrayBuffer", "setImmediateShim", "MD5_CHUNK_SIZE", "rawToBase64", "raw", "appendBlob", "start", "end", "arrayBuffer", "appendString", "string", "binaryMd5", "inputIsString", "chunkSize", "chunks", "currentChunk", "Md5", "append", "next", "loadNextChunk", "done", "stringMd5", "rev", "deterministic_revs", "v4_default", "mutateableDoc", "uuid", "winningRev", "metadata", "winningId", "winningPos", "winningDeleted", "toVisit", "node", "tree", "branches", "pos", "deleted", "traverseRevTree", "revs", "newCtx", "sortByPos", "a", "b", "collectLeaves", "leaves", "isLeaf", "acc", "collectConflicts", "win", "conflicts", "leaf", "compactTree", "revHash", "ctx", "findPathToLeaf", "targetRev", "path", "rootToLeaf", "paths", "history", "sortByPos$1", "binarySearch", "item", "comparator", "low", "high", "mid", "insertSorted", "idx", "pathToTree", "numStemmed", "root", "currentLeaf", "compareTree", "mergeTree", "in_tree1", "in_tree2", "queue", "tree1", "tree2", "merged", "doMerge", "dontExpand", "restree", "branch", "t1", "t2", "diff", "candidateParents", "trees", "elements", "elementsLen", "el", "stem", "depth", "stemmedRevs", "stemmed", "merge", "newTree", "revExists", "splitRev", "targetPos", "targetId", "getTrees", "isDeleted", "isLocalId", "latest", "historyNode", "historyRev", "l", "tryCatchInChangeListener", "pending", "lastSeq", "processChange", "changeList", "Changes$1", "complete", "onDestroy", "PouchDB", "newPromise", "cancel", "yankError", "cleanDocs", "atts", "compareByIdThenRev", "aStart", "bStart", "computeHeight", "height", "edges", "prnt", "rev$$1", "edge", "allDocsKeysParse", "doNextCompaction", "task", "appendPurgeSeq", "purgeSeq", "attachmentNameError", "isNotSingleDoc", "validRevRegex", "isValidRev", "AbstractPouchDB", "cb", "putDoc", "transformForceOptionToNewEditsOption", "oldRevId", "oldRevNum", "newRevNum", "newRevId", "attachmentId", "api", "createAttachment", "prevrevpos", "docOrId", "optsOrRev", "ids", "count", "missing", "addToMissing", "revId", "processDoc", "rev_tree", "missingForId", "missingObj", "maxHeight", "revTree", "candidates", "finishOpenRevs", "existing", "splittedRev", "revNo", "currentPath", "hashIndex", "hashFoundAtRevPos", "pathId", "indexOfRev", "howMany", "attachments", "incompatibleOpt", "attachmentError", "adapter", "dependentDb", "dbOptions", "depDB", "usePrefix", "destroyDb", "localDoc", "dependentDbs", "deletedMap", "trueName", "promises", "taskId", "compactedDocs", "onChange", "row", "onComplete", "TaskQueue", "parseAdapter", "match", "adapters", "preferredAdapters", "prefix", "adapterName", "inherits", "A", "B", "createClass", "parent", "init", "klass", "prepareForDestruction", "onDestroyed", "from_constructor", "onClosed", "PouchInternal", "prefixedName", "backend", "f$1", "h", "ActiveTasks", "updatedTask", "mergedTask", "eventEmitter", "setUpEventEmitter", "Pouch", "destructListeners", "dbList", "addToPreferredAdapters", "defaultOpts", "PouchWithDefaults", "url", "version", "getFieldFromDoc", "parsedField", "compare", "left", "right", "parseField", "fieldName", "fields", "current", "ch", "combinationFields", "isCombinationalField", "field", "getKey", "getValue", "mergeAndedSelectors", "selectors", "first", "selector", "matcher", "entries", "longest", "fieldMatchers", "operator", "mergeGtGte", "mergeLtLte", "mergeNe", "mergeEq", "mergeRegex", "mergeAndedSelectorsNested", "isAndInSelector", "isAnd", "massageSelector", "input", "orOrNor", "subSelector", "normalizeArrayOperators", "matcherItem", "pad", "padWith", "upToLength", "padding", "targetLength", "padLeft", "MIN_MAGNITUDE", "MAGNITUDE_DIGITS", "SEP", "collate", "normalizeKey", "ai", "collationIndex", "bi", "stringCollate", "arrayCollate", "objectCollate", "origKey", "k", "val", "indexify", "numToIndexableString", "isArray", "toIndexableString", "objKey", "zero", "parseNumber", "originalIdx", "num", "neg", "numAsString", "magAsString", "magnitude", "pop", "stack", "metaStack", "lastMetaElement", "element", "lastElementIndex", "parseIndexableString", "parsedNum", "parsedStr", "arrayElement", "objElement", "sort", "ak", "bk", "expFormat", "magForComparison", "magString", "factor", "factorStr", "createFieldSorter", "getFieldValuesAsArray", "sorting", "docFieldValue", "aRow", "bRow", "aFieldValues", "bFieldValues", "collation", "filterInMemoryFields", "rows", "requestDef", "inMemoryFields", "rowFilter", "fieldSorter", "skip", "limit", "matchCominationalSelector", "matchSelector", "maybeUserOperator", "userValue", "subParsedField", "subDocFieldValue", "orMatchers", "userOperator", "matchers", "fieldExists", "fieldIsNotUndefined", "modField", "divisor", "mod", "arrayContainsValue", "docFieldValueItem", "arrayContainsAllValues", "arraySize", "regexMatch", "re", "typeMatch", "neValue", "regexValue", "matchesSelector", "rowsMatched", "evalFilter", "evalView", "code", "validate", "filterName", "normalize", "shouldFilter", "changesHandler", "viewName", "ddoc", "mapFun", "filterFun", "applyChangesFilterPlugin", "checkBlobSupport", "txn", "store", "docIdOrCreateDoc", "resolve", "blob$$1", "matchedChrome", "matchedEdge", "toObject", "array", "reservedWords", "dataWords", "parseRevisionInfo", "makeRevTreeFromRevisions", "revisions", "revisionIds", "parseDoc", "newEdits", "dbOpts", "nRevNum", "revInfo", "specialKey", "parseBase64", "preprocessString", "blobType", "asBinary", "preprocessBlob", "md5", "preprocessAttachment", "preprocessAttachments", "docInfos", "docv", "overallErr", "docInfo", "recv", "processedAttachment", "updateDoc", "revLimit", "prev", "writeDoc", "previousWinningRev", "previouslyDeleted", "isRoot", "inConflict", "newRev", "winningRev$$1", "winningRevIsDeleted", "delta", "newRevIsDeleted", "rootIsMissing", "processDocs", "fetchedDocs", "tx", "overallCallback", "insertDoc", "resultsIdx", "idsToDocs", "docsDone", "docsToDo", "checkAllDocsDone", "currentDoc", "docWritten", "nextDoc", "ADAPTER_VERSION", "DOC_STORE", "BY_SEQ_STORE", "ATTACH_STORE", "ATTACH_AND_SEQ_STORE", "META_STORE", "LOCAL_STORE", "DETECT_BLOB_SUPPORT_STORE", "safeJsonParse", "vuvuzela", "safeJsonStringify", "json", "idbError", "evt", "message", "encodeMetadata", "decodeMetadata", "storedObject", "decodeDoc", "readBlobData", "body", "asBlob", "fetchAttachmentsIfNecessary", "fetchAttachment", "attObj", "digest", "postProcessAttachments", "attNames", "compactRevs", "possiblyOrphanedDigests", "seqStore", "attStore", "attAndSeqStore", "deleteOrphanedAttachments", "countReq", "index", "seq", "cursor", "event", "openTransactionSafely", "idb", "stores", "mode", "idbBulkDocs", "docStore", "bySeqStore", "attachStore", "attachAndSeqStore", "metaStore", "docInfoError", "metaDoc", "allDocsProcessed", "docCountDelta", "preconditionErrored", "startTransaction", "txnResult", "updateDocCountIfReady", "verifyAttachments", "fetchExistingDocs", "onAllDocsProcessed", "idbProcessDocs", "numFetched", "readMetadata", "verifyAttachment", "finish", "digests", "filename", "attErr", "isUpdate", "hasAttachments", "writeAttachments", "finishDoc", "afterPutDoc", "revsToDelete", "metadataToStore", "metaDataReq", "afterPutMetadata", "afterPutDocError", "getKeyReq", "putReq", "insertAttachmentMappings", "collectResults", "attachmentSaved", "saveAttachment", "attsAdded", "attsToAdd", "add", "newAtt", "runBatchedCursor", "objectStore", "keyRange", "descending", "batchSize", "onBatch", "useGetAll", "keysBatch", "valuesBatch", "pseudoCursor", "onGetAll", "onGetAllKeys", "continuePseudoCursor", "lastKey", "newKeyRange", "onCursor", "getAll", "onSuccess", "allDocsKeys", "createKeyRange", "inclusiveEnd", "idbAllDocs", "keyRangeError", "onTxnComplete", "docIdRevIndex", "docCount", "updateSeq", "fetchDocAsynchronously", "allDocsInner", "batchValues", "batchValue", "batchKeys", "onResultsReady", "returnVal", "countDocs", "running", "tryCode", "applyNext", "enqueueTask", "action", "changes", "docIds", "numResults", "docIdsToMetadata", "winningDocs", "metadatas", "processMetadataAndWinningDoc", "winningDoc", "filtered", "onBatchDone", "fetchWinningDocAndMetadata", "onGetMetadata", "docIdRev", "objectStores", "cachedDBs", "blobSupportPromise", "openReqList", "IdbPouch", "thisCallback", "idbGlobalFailureError", "enrichCallbackError", "createSchema", "addDeletedOrLocalIndex", "createLocalStoreSchema", "migrateLocalStore", "localStore", "local", "seqCursor", "addAttachAndSeqStore", "migrateAttsAndSeqs", "digestMap", "migrateMetadata", "decodeMetadataCompat", "fetchMetadataSeq", "metadataSeq", "onGetMetadataSeq", "reqOpts", "attachId", "attachment", "blobData", "oldRev", "ret", "oStore", "oldDoc", "openReq", "cached", "migrations", "migration", "storedMetaDoc", "blobSupport", "instanceId", "completeSetup", "storeMetaDocIfReady", "instanceKey", "IDBPouch", "pool", "promiseFactories", "runNext", "doNext", "runNextBatch", "thisErr", "CHANGES_BATCH_SIZE", "MAX_SIMULTANEOUS_REVS", "CHANGES_TIMEOUT_BUFFER", "DEFAULT_HEARTBEAT", "supportsBulkGetMap", "readAttachmentsAsBlobOrBuffer", "encodeDocId", "preprocessAttachments$1", "hasUrlPrefix", "protocol", "getHost", "genDBUrl", "genUrl", "pathDel", "paramsToStr", "params", "paramKeys", "shouldCacheBust", "ua", "isIE", "isTrident", "isEdge", "isGET", "HttpPouch", "host", "dbUrl", "ourFetch", "options", "nAuth", "token", "headers", "adapterFun$$1", "setup", "fetchJSON", "response", "v", "setupPromise", "uuid$$1", "ping", "doBulkGet", "doBulkGetShim", "numBatches", "onResult", "batchNum", "subOpts", "supportsBulkGet", "fetchAttachments", "filenames", "fetchData", "encodeAttachmentId", "typeFieldDescriptor", "fetchAllAttachments", "docOrDocs", "contentType", "process_exports", "paramStr", "requestTimeout", "leftToFetch", "param_name", "controller", "lastFetchedSeq", "since", "fetchOpts", "fetched", "raw_results_length", "finished", "HttpPouch$1", "QueryParseError", "_QueryParseError", "NotFoundError", "_NotFoundError", "BuiltInError", "_BuiltInError", "promisedCallback", "callbackify", "fin", "finalPromiseFactory", "sequentialize", "promiseFactory", "that", "uniq", "theSet", "mapToKeysArray", "map", "createBuiltInError", "sum", "jLen", "jNum", "log", "toJSON", "evalFunctionWithEval", "emit", "TaskQueue$1", "stringify", "createViewSignature", "reduceFun", "createView", "sourceDB", "temporary", "localDocName", "viewSignature", "cachedViews", "promiseForView", "depDbName", "diffFunction", "fullViewName", "depDbs", "view", "lastSeqDoc", "persistentQueues", "tempViewQueue", "CHANGES_BATCH_SIZE$1", "parseViewName", "isGenOne", "emitError", "createAbstractMapReduce", "mapper", "reducer", "ddocValidator", "tryMap", "tryReduce", "rereduce", "sortByKeyThenValue", "y", "keyCompare", "sliceResults", "rowToDocId", "postprocessAttachments", "addHttpParam", "paramName", "asJson", "coerceInteger", "integerCandidate", "asNumber", "coerceOptions", "checkPositiveInteger", "number", "checkQueryParseError", "startkeyName", "endkeyName", "optionName", "httpQuery", "ok", "keysAsString", "customQuery", "customViewCleanup", "defaultsTo", "getDocsToPersist", "docIdsToChangesAndEmits", "metaDocId", "defaultMetaDoc", "docData", "indexableKeysToKeyValues", "getMetaDoc", "getKeyValueDocs", "processKeyValueDocs", "kvDocsRes", "kvDocs", "oldKeys", "keyValue", "newKeys", "kvDoc", "keyValueDocs", "updatePurgeSeq", "saveKeyValues", "seqDocId", "listOfDocsToPersist", "docsToPersist", "getQueue", "updateView", "updateViewInQueue", "mapResults", "output", "currentSeq", "createTask", "indexed_docs", "progress", "processNextBatch", "purges", "getRecentPurges", "recentPurges", "purge", "uniquePurges", "entry", "createDocIdsToChangesAndEmits", "createIndexableKeysToKeyValues", "emittedKeyValue", "complexKey", "reduceView", "shouldGroup", "groups", "lvl", "last", "groupKey", "group", "reduceTry", "queryView", "queryViewInQueue", "totalRows", "shouldReduce", "fetchFromView", "viewOpts", "expectedKeys", "parsedKeyAndDocId", "onMapResultsReady", "finalResults", "allDocsRes", "docIdsToDocs", "fetchPromises", "flattenedResult", "startkey", "endkey", "keyStart", "keyEnd", "httpViewCleanup", "localViewCleanup", "docsToViews", "designDocName", "views", "viewsToStatus", "ddocName", "viewDBNames", "statusIsGood", "viewDBName", "destroyPromises", "queryPromised", "updateViewOpts", "abstractQuery", "abstractViewCleanup", "builtInReduce", "sumsqr", "_sumsqr", "getBuiltIn", "reduceFunString", "origMap", "builtIn", "abstract", "query", "viewCleanup", "mapreduce", "fileHasChanged", "remoteDoc", "getDocAttachments", "getDocAttachmentsFromTargetOrSource", "target", "src", "doCheckForLocalAttachments", "createBulkGetOpts", "diffs", "missingRevs", "missingRev", "getDocs", "state", "resultDocs", "getAllDocs", "bulkGetOpts", "bulkGetResponse", "bulkGetInfo", "returnResult", "CHECKPOINT_VERSION", "REPLICATOR", "CHECKPOINT_HISTORY_SIZE", "LOWEST_SEQ", "updateCheckpoint", "checkpoint", "session", "returnValue", "CheckpointerInternal", "isForbiddenError", "sourceDoc", "targetDoc", "comparisons", "compareReplicationLogs", "srcDoc", "tgtDoc", "compareReplicationHistory", "sourceHistory", "targetHistory", "S", "sourceRest", "T", "targetRest", "sourceId", "hasSessionId", "sessionId", "props", "rest", "Checkpointer", "STARTING_BACK_OFF", "backOff", "backOffSet", "removeBackOffSetter", "sortObjectPropertiesByKey", "queryParams", "generateReplicationId", "filterViewName", "queryData", "md5sum", "replicate", "batches", "currentBatch", "pendingBatch", "writingCheckpoint", "changesCompleted", "replicationCompleted", "initial_last_seq", "last_seq", "continuous", "batch_size", "batches_limit", "style", "changesPending", "doc_ids", "repId", "checkpointer", "changedDocs", "initCheckpointer", "checkpointOpts", "writeDocs", "bulkOpts", "completeReplication", "errorsById", "errorsNo", "errorName", "finishBatch", "outResult", "completed", "total_items", "getChanges", "onCheckpointError", "getDiffs", "getBatchDocs", "got", "startNextBatch", "processPendingBatch", "abortReplication", "immediate", "fatalError", "onChangesComplete", "onChangesError", "abortChanges", "removeListener", "startChanges", "Replication", "cleanup", "toPouch", "PouchConstructor", "replicateWrapper", "replicateRet", "srcPouch", "targetPouch", "sync", "Sync", "optsPush", "optsPull", "pullChange", "pushChange", "pushDenied", "pullDenied", "pushPaused", "pullPaused", "pushActive", "pullActive", "removed", "removeAll", "addOneListener", "listener", "out", "success", "replication", "other", "index_browser_es_default", "init_dirname", "init_buffer", "init_process", "locationToUri", "location", "uriToLocation", "uri", "parts", "nameEncoded", "webIdEncoded", "m", "randomBase64", "numBytes", "bytes", "unpackLocationOrUri", "locationOrUri", "isObjectNewer", "left", "right", "applyGraffitiPatch", "apply", "prop", "patch", "object", "ops", "e", "n", "f", "attemptAjvCompile", "ajv", "schema", "error", "o", "maskGraffitiObject", "channels", "session", "channel", "isActorAllowedGraffitiObject", "init_dirname", "init_buffer", "init_process", "extendStatics", "d", "b", "p", "__extends", "__", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "v", "op", "__values", "o", "s", "m", "i", "__await", "__asyncGenerator", "q", "a", "resume", "settle", "r", "fulfill", "RepeaterOverflowError", "_super", "message", "_this", "FixedBuffer", "capacity", "SlidingBuffer", "DroppingBuffer", "swallow", "NOOP", "Initial", "Started", "Stopped", "Done", "Rejected", "MAX_QUEUE_LENGTH", "consumeExecution", "err", "execution", "createIteration", "done", "stop", "e_1", "_a", "finish", "_b", "_d", "push_1", "e_1_1", "e_2", "next", "e_2_1", "push", "valueP", "nextP", "next_1", "floating", "unhandled", "onfulfilled", "onrejected", "createStop", "stop1", "stopP", "execute", "push1", "records", "Repeater", "executor", "buffer", "push_2", "push_3", "race", "merge", "zip", "latest", "getIterators", "values", "options", "e_3", "iters", "_loop_1", "values_1", "values_1_1", "e_3_1", "contenders", "advance", "stopped", "finalIteration", "iteration", "i_1", "_loop_2", "j", "iters_1", "iters_1_1", "iter", "e_4", "e_4_1", "advances", "e_5", "advances_1", "advances_1_1", "e_5_1", "iterations", "iterations_1", "values_2", "e_6", "advances_2", "advances_2_1", "advance1", "e_6_1", "import_ajv_draft_04", "init_dirname", "init_buffer", "init_process", "core_exports", "__export", "JsonPatchError", "_areEquals", "applyOperation", "applyPatch", "applyReducer", "deepClone", "getValueByPointer", "validate", "validator", "init_dirname", "init_buffer", "init_process", "init_dirname", "init_buffer", "init_process", "__extends", "extendStatics", "d", "b", "p", "__", "_hasOwnProperty", "hasOwnProperty", "obj", "key", "_objectKeys", "keys_1", "k", "keys", "_deepClone", "isInteger", "str", "i", "len", "charCode", "escapePathComponent", "path", "unescapePathComponent", "hasUndefined", "obj", "i_1", "len", "objKeys", "_objectKeys", "objKeysLength", "i", "patchErrorMessageFormatter", "message", "args", "messageParts", "key", "value", "PatchError", "_super", "__extends", "name", "index", "operation", "tree", "_newTarget", "_this", "JsonPatchError", "PatchError", "deepClone", "_deepClone", "objOps", "obj", "key", "document", "removed", "getValueByPointer", "originalValue", "applyOperation", "valueToCopy", "_areEquals", "arrOps", "arr", "i", "isInteger", "removedList", "pointer", "getOriginalDestination", "operation", "validateOperation", "mutateDocument", "banPrototypeModifications", "index", "validator", "returnValue", "path", "keys", "t", "len", "existingPathFragment", "validateFunction", "unescapePathComponent", "applyPatch", "patch", "results", "length_1", "applyReducer", "operationResult", "hasUndefined", "pathLen", "existingPathLen", "existingValue", "error", "validate", "sequence", "externalValidator", "e", "a", "b", "arrA", "arrB", "length", "duplex_exports", "__export", "compare", "generate", "observe", "unobserve", "init_dirname", "init_buffer", "init_process", "beforeDict", "Mirror", "obj", "ObserverInfo", "callback", "observer", "getMirror", "getObserverFromMirror", "mirror", "removeObserverFromMirror", "unobserve", "root", "observe", "patches", "observerInfo", "_deepClone", "dirtyCheck", "generate", "fastCheck", "invertible", "_generate", "applyPatch", "temp", "path", "newKeys", "_objectKeys", "oldKeys", "changed", "deleted", "t", "key", "oldVal", "hasOwnProperty", "newVal", "escapePathComponent", "compare", "tree1", "tree2", "fast_json_patch_default", "core_exports", "duplex_exports", "PatchError", "_deepClone", "escapePathComponent", "unescapePathComponent", "GraffitiLocalDatabase", "options", "ajv", "Ajv", "pouchDbOptions", "index_browser_es_default", "object", "paddedLastModified", "channel", "id", "error", "location", "uri", "locationToUri", "row", "acc", "doc", "randomBase64", "args", "locationOrUri", "schema", "session", "unpackLocationOrUri", "docs", "isActorAllowedGraffitiObject", "a", "isObjectNewer", "_id", "_rev", "maskGraffitiObject", "attemptAjvCompile", "c", "keepLatest", "docsAtLocation", "latestModified", "b", "docsToDelete", "concurrentDocsAll", "keepDocId", "concurrentDocsToDelete", "lastModified", "deleteResults", "deletedObject", "resultOrError", "deletedDoc", "_conflicts", "_attachments", "i", "objectPartial", "previousObject", "patch", "originalObject", "patchObject", "prop", "applyGraffitiPatch", "applyPatch", "f", "allowed", "startKeySuffix", "endKeySuffix", "lastModifiedSchema", "minimum", "maximum", "channels", "validate", "Repeater", "push", "stop", "processedIds", "keyPrefix", "startkey", "endkey", "result", "channelEncoded", "count", "init_dirname", "init_buffer", "init_process", "import_ajv_draft_04", "GraffitiSynchronize", "graffiti", "ajv", "Ajv", "oldObject", "newObject", "event", "args", "object", "partialObject", "prop", "applyGraffitiPatch", "applyPatch", "iterator", "dispatch", "result", "matchObject", "channels", "schema", "session", "validate", "attemptAjvCompile", "Repeater", "push", "stop", "callback", "oldObjectRaw", "newObjectRaw", "objectRaw", "isActorAllowedGraffitiObject", "maskGraffitiObject", "channel", "locationOrUri", "objectUri", "locationToUri", "uri", "unpackLocationOrUri", "GraffitiLocal", "r", "locationToUri", "uriToLocation", "options", "sessionManagerLocal", "GraffitiLocalSessionManager", "ajv", "Ajv", "graffitiPouchDbBase", "GraffitiLocalDatabase", "graffitiSynchronize", "GraffitiSynchronize"]
7
7
  }