lib0 0.2.39 → 0.2.43

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.
Files changed (117) hide show
  1. package/README.md +84 -76
  2. package/bin/gendocs.js +1 -1
  3. package/broadcastchannel.js +1 -1
  4. package/component.d.ts +4 -1
  5. package/component.d.ts.map +1 -1
  6. package/component.js +4 -1
  7. package/decoding.d.ts +0 -12
  8. package/decoding.d.ts.map +1 -1
  9. package/decoding.js +8 -8
  10. package/diff.d.ts.map +1 -1
  11. package/dist/{broadcastchannel-cb74c2ae.cjs → broadcastchannel-044f32d2.cjs} +3 -3
  12. package/dist/broadcastchannel-044f32d2.cjs.map +1 -0
  13. package/dist/broadcastchannel.cjs +4 -4
  14. package/dist/{buffer-097552c3.cjs → buffer-49880125.cjs} +16 -15
  15. package/dist/buffer-49880125.cjs.map +1 -0
  16. package/dist/buffer.cjs +3 -3
  17. package/dist/component.cjs +5 -2
  18. package/dist/component.cjs.map +1 -1
  19. package/dist/component.d.ts +4 -1
  20. package/dist/component.d.ts.map +1 -1
  21. package/dist/decoding.cjs +3 -3
  22. package/dist/decoding.d.ts +0 -12
  23. package/dist/decoding.d.ts.map +1 -1
  24. package/dist/diff.d.ts.map +1 -1
  25. package/dist/encoding.cjs +3 -3
  26. package/dist/encoding.d.ts.map +1 -1
  27. package/dist/{environment-bf1f625d.cjs → environment-7e2ffaea.cjs} +1 -1
  28. package/dist/{environment-bf1f625d.cjs.map → environment-7e2ffaea.cjs.map} +1 -1
  29. package/dist/environment.cjs +1 -1
  30. package/dist/{error-55a9a8c8.cjs → error-873c9cbf.cjs} +4 -4
  31. package/dist/error-873c9cbf.cjs.map +1 -0
  32. package/dist/error.cjs +1 -1
  33. package/dist/error.d.ts.map +1 -1
  34. package/dist/index.cjs +9 -9
  35. package/dist/{indexeddb-44227700.cjs → indexeddb-5b4b0e13.cjs} +27 -25
  36. package/dist/indexeddb-5b4b0e13.cjs.map +1 -0
  37. package/dist/indexeddb.cjs +3 -3
  38. package/dist/indexeddb.d.ts +2 -2
  39. package/dist/indexeddb.d.ts.map +1 -1
  40. package/dist/isomorphic.cjs +2 -6
  41. package/dist/isomorphic.cjs.map +1 -1
  42. package/dist/{logging-4941d274.cjs → logging-7cc36806.cjs} +2 -2
  43. package/dist/{logging-4941d274.cjs.map → logging-7cc36806.cjs.map} +1 -1
  44. package/dist/logging.cjs +2 -2
  45. package/dist/{number-24f1eabe.cjs → number-e62129bc.cjs} +5 -2
  46. package/dist/number-e62129bc.cjs.map +1 -0
  47. package/dist/number.cjs +2 -1
  48. package/dist/number.cjs.map +1 -1
  49. package/dist/number.d.ts +1 -0
  50. package/dist/number.d.ts.map +1 -1
  51. package/dist/observable.d.ts.map +1 -1
  52. package/dist/pair.d.ts.map +1 -1
  53. package/dist/{prng-70808343.cjs → prng-97174619.cjs} +2 -2
  54. package/dist/{prng-70808343.cjs.map → prng-97174619.cjs.map} +1 -1
  55. package/dist/prng.cjs +4 -4
  56. package/dist/{promise-f0a086b2.cjs → promise-1a9fe712.cjs} +10 -1
  57. package/dist/{promise-f0a086b2.cjs.map → promise-1a9fe712.cjs.map} +1 -1
  58. package/dist/promise.cjs +2 -1
  59. package/dist/promise.cjs.map +1 -1
  60. package/dist/promise.d.ts +1 -0
  61. package/dist/promise.d.ts.map +1 -1
  62. package/dist/storage.cjs +16 -4
  63. package/dist/storage.cjs.map +1 -1
  64. package/dist/storage.d.ts +5 -0
  65. package/dist/storage.d.ts.map +1 -1
  66. package/dist/storage.test.d.ts +3 -0
  67. package/dist/storage.test.d.ts.map +1 -0
  68. package/dist/string.cjs +1 -3
  69. package/dist/string.cjs.map +1 -1
  70. package/dist/test.cjs +264 -225
  71. package/dist/test.cjs.map +1 -1
  72. package/dist/test.js +266 -227
  73. package/dist/test.js.map +1 -1
  74. package/dist/testing.cjs +15 -12
  75. package/dist/testing.cjs.map +1 -1
  76. package/dist/testing.d.ts +1 -1
  77. package/dist/testing.d.ts.map +1 -1
  78. package/dist/testing.test.d.ts +1 -1
  79. package/dist/tree.d.ts +1 -1
  80. package/dist/tree.d.ts.map +1 -1
  81. package/dist/websocket.d.ts +1 -1
  82. package/dist/websocket.d.ts.map +1 -1
  83. package/encoding.d.ts.map +1 -1
  84. package/encoding.js +5 -4
  85. package/error.d.ts.map +1 -1
  86. package/error.js +3 -3
  87. package/indexeddb.d.ts +2 -2
  88. package/indexeddb.d.ts.map +1 -1
  89. package/indexeddb.js +25 -23
  90. package/number.d.ts +1 -0
  91. package/number.d.ts.map +1 -1
  92. package/number.js +1 -0
  93. package/observable.d.ts.map +1 -1
  94. package/package.json +11 -10
  95. package/pair.d.ts.map +1 -1
  96. package/promise.d.ts +1 -0
  97. package/promise.d.ts.map +1 -1
  98. package/promise.js +7 -0
  99. package/storage.d.ts +5 -0
  100. package/storage.d.ts.map +1 -1
  101. package/storage.js +15 -4
  102. package/storage.test.d.ts +3 -0
  103. package/storage.test.d.ts.map +1 -0
  104. package/test.js +3 -1
  105. package/testing.d.ts +1 -1
  106. package/testing.d.ts.map +1 -1
  107. package/testing.js +9 -6
  108. package/testing.test.d.ts +1 -1
  109. package/tree.d.ts +1 -1
  110. package/tree.d.ts.map +1 -1
  111. package/websocket.d.ts +1 -1
  112. package/websocket.d.ts.map +1 -1
  113. package/dist/broadcastchannel-cb74c2ae.cjs.map +0 -1
  114. package/dist/buffer-097552c3.cjs.map +0 -1
  115. package/dist/error-55a9a8c8.cjs.map +0 -1
  116. package/dist/indexeddb-44227700.cjs.map +0 -1
  117. package/dist/number-24f1eabe.cjs.map +0 -1
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sources":["../map.js","../string.js","../conditions.js","../storage.js","../environment.js","../symbol.js","../pair.js","../dom.js","../json.js","../eventloop.js","../math.js","../metric.js","../time.js","../array.js","../object.js","../function.js","../logging.js","../diff.js","../node_modules/isomorphic.js/browser.mjs","../random.js","../binary.js","../prng/Xorshift32.js","../prng/Xoroshiro128plus.js","../number.js","../encoding.js","../decoding.js","../buffer.js","../prng.js","../statistics.js","../promise.js","../testing.js","../array.test.js","../logging.test.js","../string.test.js","../encoding.test.js","../diff.test.js","../testing.test.js","../error.js","../indexeddb.js","../indexeddb.test.js","../prng/Mt19937.js","../prng.test.js","../statistics.test.js","../binary.test.js","../random.test.js","../promise.test.js","../queue.js","../queue.test.js","../map.test.js","../eventloop.test.js","../time.test.js","../pair.test.js","../object.test.js","../math.test.js","../number.test.js","../buffer.test.js","../sort.js","../sort.test.js","../url.js","../url.test.js","../metric.test.js","../function.test.js","../test.js"],"sourcesContent":["/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template X,Y\n * @param {Map<X,Y>} m\n * @return {Map<X,Y>}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template T,K\n * @param {Map<K, T>} map\n * @param {K} key\n * @param {function():T} createT\n * @return {T}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* istanbul ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* istanbul ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* istanbul ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* istanbul ignore next */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* istanbul ignore next */\n utf8TextDecoder = null\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* istanbul ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* istanbul ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* global localStorage */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* istanbul ignore next */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} value\n */\n setItem (key, value) {\n this.map.set(key, value)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n\n/* istanbul ignore next */\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\n\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n /* istanbul ignore next */\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n }\n} catch (e) { }\n\n/* istanbul ignore next */\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\nexport const varStorage = _localStorage\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair<L,R>}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair<L,R>}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):X} f\n * @return {Array<X>}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* istanbul ignore next */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const createTextNode = text => doc.createTextNode(text)\n\n/* istanbul ignore next */\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\n/* istanbul ignore next */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\n/* istanbul ignore next */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\n/* istanbul ignore next */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\n/* istanbul ignore next */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\n/* istanbul ignore next */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\n/* istanbul ignore next */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\n/* istanbul ignore next */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\n/* istanbul ignore next */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\n/* istanbul ignore next */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array<function>}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* istanbul ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/* istanbul ignore next */\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* istanbul ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/* istanbul ignore next */\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility module to convert metric values.\n *\n * @module metric\n */\n\nimport * as math from './math.js'\n\nexport const yotta = 1e24\nexport const zetta = 1e21\nexport const exa = 1e18\nexport const peta = 1e15\nexport const tera = 1e12\nexport const giga = 1e9\nexport const mega = 1e6\nexport const kilo = 1e3\nexport const hecto = 1e2\nexport const deca = 10\nexport const deci = 0.1\nexport const centi = 0.01\nexport const milli = 1e-3\nexport const micro = 1e-6\nexport const nano = 1e-9\nexport const pico = 1e-12\nexport const femto = 1e-15\nexport const atto = 1e-18\nexport const zepto = 1e-21\nexport const yocto = 1e-24\n\nconst prefixUp = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']\nconst prefixDown = ['', 'm', 'μ', 'n', 'p', 'f', 'a', 'z', 'y']\n\n/**\n * Calculate the metric prefix for a number. Assumes E.g. `prefix(1000) = { n: 1, prefix: 'k' }`\n *\n * @param {number} n\n * @param {number} [baseMultiplier] Multiplier of the base (10^(3*baseMultiplier)). E.g. `convert(time, -3)` if time is already in milli seconds\n * @return {{n:number,prefix:string}}\n */\nexport const prefix = (n, baseMultiplier = 0) => {\n const nPow = n === 0 ? 0 : math.log10(n)\n let mult = 0\n while (nPow < mult * 3 && baseMultiplier > -8) {\n baseMultiplier--\n mult--\n }\n while (nPow >= 3 + mult * 3 && baseMultiplier < 8) {\n baseMultiplier++\n mult++\n }\n const prefix = baseMultiplier < 0 ? prefixDown[-baseMultiplier] : prefixUp[baseMultiplier]\n return {\n n: math.round((mult > 0 ? n / math.exp10(mult * 3) : n * math.exp10(mult * -3)) * 1e12) / 1e12,\n prefix\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* istanbul ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {Array<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n *\n * @param {Array<ITEM>} arr\n * @param {function(ITEM, number, Array<ITEM>):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => arr.every(f)\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @param {Array<S>} arr\n * @param {function(S, number, Array<S>):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => arr.some(f)\n\n/**\n * @template ELEM\n *\n * @param {Array<ELEM>} a\n * @param {Array<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => arr.reduce((acc, val) => acc.concat(val), [])\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((a instanceof Array && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as symbol from './symbol.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as time from './time.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [BOLD]: pair.create('font-weight', 'bold'),\n [UNBOLD]: pair.create('font-weight', 'normal'),\n [BLUE]: pair.create('color', 'blue'),\n [GREEN]: pair.create('color', 'green'),\n [GREY]: pair.create('color', 'grey'),\n [RED]: pair.create('color', 'red'),\n [PURPLE]: pair.create('color', 'purple'),\n [ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [UNCOLOR]: pair.create('color', 'black')\n}\n\nconst _nodeStyleMap = {\n [BOLD]: '\\u001b[1m',\n [UNBOLD]: '\\u001b[2m',\n [BLUE]: '\\x1b[34m',\n [GREEN]: '\\x1b[32m',\n [GREY]: '\\u001b[37m',\n [RED]: '\\x1b[31m',\n [PURPLE]: '\\x1b[35m',\n [ORANGE]: '\\x1b[38;5;208m',\n [UNCOLOR]: '\\x1b[0m'\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nconst computeBrowserLoggingArgs = args => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nconst computeNodeLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n /* istanbul ignore else */\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/* istanbul ignore next */\nconst computeLoggingArgs = env.isNode ? computeNodeLoggingArgs : computeBrowserLoggingArgs\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(ORANGE)\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Error} err\n */\nexport const printError = err => {\n console.error(err)\n vconsoles.forEach(vc => vc.printError(err))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log('%c ', `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`)\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach(vc => vc.printImg(url, height))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} base64\n * @param {number} height\n */\nexport const printImgBase64 = (base64, height) => printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupEnd())\n}\n\n/* istanbul ignore next */\n/**\n * @param {function():Node} createNode\n */\nexport const printDom = createNode =>\n vconsoles.forEach(vc => vc.printDom(createNode()))\n\n/* istanbul ignore next */\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\nexport const printCanvas = (canvas, height) => printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = new Set()\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\nconst _computeLineSpans = args => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [pair.create('style', dom.mapToStyleString(currentStyle))], [dom.text(arg)])\n if (span.innerHTML === '') {\n span.innerHTML = '&nbsp;'\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(dom.element('span', [], [dom.text(/** @type {string} */ (content))]))\n }\n }\n return spans\n}\n\nconst lineStyle = 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* istanbul ignore next */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [pair.create('hidden', collapsed), pair.create('style', 'color:grey;font-size:120%;')], [dom.text('▼')])\n const triangleRight = dom.element('span', [pair.create('hidden', !collapsed), pair.create('style', 'color:grey;font-size:125%;')], [dom.text('▶')])\n const content = dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], [triangleDown, triangleRight, dom.text(' ')].concat(_computeLineSpans(args)))\n const nextContainer = dom.element('div', [pair.create('hidden', collapsed)])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', event => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], _computeLineSpans(args))])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([RED, BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('img', [pair.create('src', url), pair.create('height', `${math.round(height * 1.5)}px`)])])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n\n/* istanbul ignore next */\n/**\n * @param {Element} dom\n */\nexport const createVConsole = dom => new VConsole(dom)\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = moduleName => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null && (debugRegexVar === '*' || debugRegexVar === 'true' || new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n\n return !doLogging ? func.nop : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n print(color, moduleName, UNCOLOR, ...args.map(arg => (typeof arg === 'string' || typeof arg === 'symbol') ? arg : JSON.stringify(arg)), color, ' +' + timeDiff + 'ms')\n }\n}\n","/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n","/* eslint-env browser */\nexport const performance = typeof window !== 'undefined' && typeof window.performance === 'undefined' ? null : window.performance\n\nconst isoCrypto = typeof crypto === 'undefined' ? null : crypto\n\n/**\n * @type {function(number):ArrayBuffer}\n */\nexport const cryptoRandomBuffer = isoCrypto !== null\n ? len => {\n // browser\n const buf = new ArrayBuffer(len)\n const arr = new Uint8Array(buf)\n isoCrypto.getRandomValues(arr)\n return buf\n }\n : len => {\n // polyfill\n const buf = new ArrayBuffer(len)\n const arr = new Uint8Array(buf)\n for (let i = 0; i < len; i++) {\n arr[i] = Math.ceil((Math.random() * 0xFFFFFFFF) >>> 0)\n }\n return buf\n }\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\n\n/* istanbul ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array<Uint8Array>}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nconst verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer.\n *\n * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num >>>= 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * Encodes integers in the range from [-2147483648, -2147483647].\n *\n * We don't use zig-zag encoding because we want to keep the option open\n * to use the same function for BigInt and 53bit integers (doubles).\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num >>>= 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num >>>= 7\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeVarString = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object<string,any>|Array<any>|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && data <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (data instanceof Array) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array<string>}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = buffer.createUint8ArrayViewFromArrayBuffer(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing position.\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let len = 0\n while (true) {\n const r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return num >>> 0 // return unsigned number!\n }\n /* istanbul ignore if */\n if (len > 35) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if unmber is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let len = 6\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n while (true) {\n r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return sign * (num >>> 0)\n }\n /* istanbul ignore if */\n if (len > 41) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\nexport const readVarString = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0)\n\n/**\n * @type {Array<function(Decoder):any>}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object<string,any>\n const len = readVarUint(decoder)\n /**\n * @type {Object<string,any>}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array<any>\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = diff >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* istanbul ignore next */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* istanbul ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* istanbul ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A 32bit integer\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\n\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n","/**\n * Utility helpers for generating statistics.\n *\n * @module statistics\n */\n\nimport * as math from './math.js'\n\n/**\n * @param {Array<number>} arr Array of values\n * @return {number} Returns null if the array is empty\n */\nexport const median = arr => arr.length === 0 ? NaN : (arr.length % 2 === 1 ? arr[(arr.length - 1) / 2] : (arr[math.floor((arr.length - 1) / 2)] + arr[math.ceil((arr.length - 1) / 2)]) / 2)\n\n/**\n * @param {Array<number>} arr\n * @return {number}\n */\nexport const average = arr => arr.reduce(math.add, 0) / arr.length\n","/**\n * Utility helpers to work with promises.\n *\n * @module promise\n */\n\nimport * as time from './time.js'\n\n/**\n * @template T\n * @callback PromiseResolve\n * @param {T|PromiseLike<T>} [result]\n */\n\n/**\n * @template T\n * @param {function(PromiseResolve<T>,function(Error):void):any} f\n * @return {Promise<T>}\n */\nexport const create = f => /** @type {Promise<T>} */ (new Promise(f))\n\n/**\n * @param {function(function():void,function(Error):void):void} f\n * @return {Promise<void>}\n */\nexport const createEmpty = f => new Promise(f)\n\n/**\n * `Promise.all` wait for all promises in the array to resolve and return the result\n * @template T\n * @param {Array<Promise<T>>} arrp\n * @return {Promise<Array<T>>}\n */\nexport const all = arrp => Promise.all(arrp)\n\n/**\n * @param {Error} [reason]\n * @return {Promise<never>}\n */\nexport const reject = reason => Promise.reject(reason)\n\n/**\n * @template T\n * @param {T|void} res\n * @return {Promise<T|void>}\n */\nexport const resolve = res => Promise.resolve(res)\n\n/**\n * @todo Next version, reorder parameters: check, [timeout, [intervalResolution]]\n *\n * @param {number} timeout\n * @param {function():boolean} check\n * @param {number} [intervalResolution]\n * @return {Promise<void>}\n */\nexport const until = (timeout, check, intervalResolution = 10) => create((resolve, reject) => {\n const startTime = time.getUnixTime()\n const hasTimeout = timeout > 0\n const untilInterval = () => {\n if (check()) {\n clearInterval(intervalHandle)\n resolve()\n } else if (hasTimeout) {\n /* istanbul ignore else */\n if (time.getUnixTime() - startTime > timeout) {\n clearInterval(intervalHandle)\n reject(new Error('Timeout'))\n }\n }\n }\n const intervalHandle = setInterval(untilInterval, intervalResolution)\n})\n\n/**\n * @param {number} timeout\n * @return {Promise<undefined>}\n */\nexport const wait = timeout => create((resolve, reject) => setTimeout(resolve, timeout))\n\n/**\n * Checks if an object is a promise using ducktyping.\n *\n * Promises are often polyfilled, so it makes sense to add some additional guarantees if the user of this\n * library has some insane environment where global Promise objects are overwritten.\n *\n * @param {any} p\n * @return {boolean}\n */\nexport const isPromise = p => p instanceof Promise || (p && p.then && p.catch && p.finally)\n","/**\n * Testing framework with support for generating tests.\n *\n * ```js\n * // test.js template for creating a test executable\n * import { runTests } from 'lib0/testing.js'\n * import * as log from 'lib0/logging.js'\n * import * as mod1 from './mod1.test.js'\n * import * as mod2 from './mod2.test.js'\n\n * import { isBrowser, isNode } from 'lib0/environment.js'\n *\n * if (isBrowser) {\n * // optional: if this is ran in the browser, attach a virtual console to the dom\n * log.createVConsole(document.body)\n * }\n *\n * runTests({\n * mod1,\n * mod2,\n * }).then(success => {\n * if (isNode) {\n * process.exit(success ? 0 : 1)\n * }\n * })\n * ```\n *\n * ```js\n * // mod1.test.js\n * /**\n * * runTests automatically tests all exported functions that start with \"test\".\n * * The name of the function should be in camelCase and is used for the logging output.\n * *\n * * @param {t.TestCase} tc\n * *\\/\n * export const testMyFirstTest = tc => {\n * t.compare({ a: 4 }, { a: 4 }, 'objects are equal')\n * }\n * ```\n *\n * Now you can simply run `node test.js` to run your test or run test.js in the browser.\n *\n * @module testing\n */\n\nimport * as log from './logging.js'\nimport { simpleDiff } from './diff.js'\nimport * as object from './object.js'\nimport * as string from './string.js'\nimport * as math from './math.js'\nimport * as random from './random.js'\nimport * as prng from './prng.js'\nimport * as statistics from './statistics.js'\nimport * as array from './array.js'\nimport * as env from './environment.js'\nimport * as json from './json.js'\nimport * as time from './time.js'\nimport * as promise from './promise.js'\n\nimport { performance } from './isomorphic.js'\n\nexport { production } from './environment.js'\n\nexport const extensive = env.hasConf('extensive')\n\n/* istanbul ignore next */\nexport const envSeed = env.hasParam('--seed') ? Number.parseInt(env.getParam('--seed', '0')) : null\n\nexport class TestCase {\n /**\n * @param {string} moduleName\n * @param {string} testName\n */\n constructor (moduleName, testName) {\n /**\n * @type {string}\n */\n this.moduleName = moduleName\n /**\n * @type {string}\n */\n this.testName = testName\n this._seed = null\n this._prng = null\n }\n\n resetSeed () {\n this._seed = null\n this._prng = null\n }\n\n /**\n * @type {number}\n */\n /* istanbul ignore next */\n get seed () {\n /* istanbul ignore else */\n if (this._seed === null) {\n /* istanbul ignore next */\n this._seed = envSeed === null ? random.uint32() : envSeed\n }\n return this._seed\n }\n\n /**\n * A PRNG for this test case. Use only this PRNG for randomness to make the test case reproducible.\n *\n * @type {prng.PRNG}\n */\n get prng () {\n /* istanbul ignore else */\n if (this._prng === null) {\n this._prng = prng.create(this.seed)\n }\n return this._prng\n }\n}\n\nexport const repititionTime = Number(env.getParam('--repitition-time', '50'))\n/* istanbul ignore next */\nconst testFilter = env.hasParam('--filter') ? env.getParam('--filter', '') : null\n\n/* istanbul ignore next */\nconst testFilterRegExp = testFilter !== null ? new RegExp(testFilter) : new RegExp('.*')\n\nconst repeatTestRegex = /^(repeat|repeating)\\s/\n\n/**\n * @param {string} moduleName\n * @param {string} name\n * @param {function(TestCase):void|Promise<any>} f\n * @param {number} i\n * @param {number} numberOfTests\n */\nexport const run = async (moduleName, name, f, i, numberOfTests) => {\n const uncamelized = string.fromCamelCase(name.slice(4), ' ')\n const filtered = !testFilterRegExp.test(`[${i + 1}/${numberOfTests}] ${moduleName}: ${uncamelized}`)\n /* istanbul ignore if */\n if (filtered) {\n return true\n }\n const tc = new TestCase(moduleName, name)\n const repeat = repeatTestRegex.test(uncamelized)\n const groupArgs = [log.GREY, `[${i + 1}/${numberOfTests}] `, log.PURPLE, `${moduleName}: `, log.BLUE, uncamelized]\n /* istanbul ignore next */\n if (testFilter === null) {\n log.groupCollapsed(...groupArgs)\n } else {\n log.group(...groupArgs)\n }\n const times = []\n const start = performance.now()\n let lastTime = start\n let err = null\n performance.mark(`${name}-start`)\n do {\n try {\n const p = f(tc)\n if (promise.isPromise(p)) {\n await p\n }\n } catch (_err) {\n err = _err\n }\n const currTime = performance.now()\n times.push(currTime - lastTime)\n lastTime = currTime\n if (repeat && err === null && (lastTime - start) < repititionTime) {\n tc.resetSeed()\n } else {\n break\n }\n } while (err === null && (lastTime - start) < repititionTime)\n performance.mark(`${name}-end`)\n /* istanbul ignore if */\n if (err !== null && err.constructor !== SkipError) {\n log.printError(err)\n }\n performance.measure(name, `${name}-start`, `${name}-end`)\n log.groupEnd()\n const duration = lastTime - start\n let success = true\n times.sort((a, b) => a - b)\n /* istanbul ignore next */\n const againMessage = env.isBrowser\n ? ` - ${window.location.href}?filter=\\\\[${i + 1}/${tc._seed === null ? '' : `&seed=${tc._seed}`}`\n : `\\nrepeat: npm run test -- --filter \"\\\\[${i + 1}/\" ${tc._seed === null ? '' : `--seed ${tc._seed}`}`\n const timeInfo = (repeat && err === null)\n ? ` - ${times.length} repititions in ${time.humanizeDuration(duration)} (best: ${time.humanizeDuration(times[0])}, worst: ${time.humanizeDuration(array.last(times))}, median: ${time.humanizeDuration(statistics.median(times))}, average: ${time.humanizeDuration(statistics.average(times))})`\n : ` in ${time.humanizeDuration(duration)}`\n if (err !== null) {\n /* istanbul ignore else */\n if (err.constructor === SkipError) {\n log.print(log.GREY, log.BOLD, 'Skipped: ', log.UNBOLD, uncamelized)\n } else {\n success = false\n log.print(log.RED, log.BOLD, 'Failure: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n } else {\n log.print(log.GREEN, log.BOLD, 'Success: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n return success\n}\n\n/**\n * Describe what you are currently testing. The message will be logged.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.describe('crunching numbers', 'already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} description\n * @param {string} info\n */\nexport const describe = (description, info = '') => log.print(log.BLUE, description, ' ', log.GREY, info)\n\n/**\n * Describe the state of the current computation.\n * ```js\n * export const testMyFirstTest = tc => {\n * t.info(already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} info\n */\nexport const info = info => describe('', info)\n\nexport const printDom = log.printDom\n\nexport const printCanvas = log.printCanvas\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):void} f\n */\nexport const group = (description, f) => {\n log.group(log.BLUE, description)\n try {\n f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):Promise<any>} f\n */\nexport const groupAsync = async (description, f) => {\n log.group(log.BLUE, description)\n try {\n await f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTime('measurement', () => {\n * heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():void} f\n * @return {number} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTime = (message, f) => {\n let duration\n const start = performance.now()\n try {\n f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTimeAsync('measurement', async () => {\n * await heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():Promise<any>} f\n * @return {Promise<number>} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTimeAsync = async (message, f) => {\n let duration\n const start = performance.now()\n try {\n await f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * @template T\n * @param {Array<T>} as\n * @param {Array<T>} bs\n * @param {string} [m]\n * @return {boolean}\n */\nexport const compareArrays = (as, bs, m = 'Arrays match') => {\n if (as.length !== bs.length) {\n fail(m)\n }\n for (let i = 0; i < as.length; i++) {\n if (as[i] !== bs[i]) {\n fail(m)\n }\n }\n return true\n}\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {string} [m]\n * @throws {TestError} Throws if tests fails\n */\nexport const compareStrings = (a, b, m = 'Strings match') => {\n if (a !== b) {\n const diff = simpleDiff(a, b)\n log.print(log.GREY, a.slice(0, diff.index), log.RED, a.slice(diff.index, diff.remove), log.GREEN, diff.insert, log.GREY, a.slice(diff.index + diff.remove))\n fail(m)\n }\n}\n\n/**\n * @template K,V\n * @param {Object<K,V>} a\n * @param {Object<K,V>} b\n * @param {string} [m]\n * @throws {TestError} Throws if test fails\n */\nexport const compareObjects = (a, b, m = 'Objects match') => { object.equalFlat(a, b) || fail(m) }\n\n/**\n * @param {any} constructor\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @throws {TestError}\n */\nconst compareValues = (constructor, a, b, path) => {\n if (a !== b) {\n fail(`Values ${json.stringify(a)} and ${json.stringify(b)} don't match (${path})`)\n }\n return true\n}\n\n/**\n * @param {string?} message\n * @param {string} reason\n * @param {string} path\n * @throws {TestError}\n */\nconst _failMessage = (message, reason, path) => fail(\n message === null\n ? `${reason} ${path}`\n : `${message} (${reason}) ${path}`\n)\n\n/**\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @param {string?} message\n * @param {function(any,any,any,string,any):boolean} customCompare\n */\nconst _compare = (a, b, path, message, customCompare) => {\n // we don't use assert here because we want to test all branches (istanbul errors if one branch is not tested)\n if (a == null || b == null) {\n return compareValues(null, a, b, path)\n }\n if (a.constructor !== b.constructor) {\n _failMessage(message, 'Constructors don\\'t match', path)\n }\n let success = true\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n _failMessage(message, 'ArrayBuffer lengths match', path)\n }\n for (let i = 0; success && i < a.length; i++) {\n success = success && a[i] === b[i]\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n _failMessage(message, 'Sets have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach(value => {\n if (!b.has(value)) {\n _failMessage(message, `b.${path} does have ${value}`, path)\n }\n })\n break\n }\n case Map: {\n if (a.size !== b.size) {\n _failMessage(message, 'Maps have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, key) => {\n if (!b.has(key)) {\n _failMessage(message, `Property ${path}[\"${key}\"] does not exist on second argument`, path)\n }\n _compare(value, b.get(key), `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n _failMessage(message, 'Objects have a different number of attributes', path)\n }\n object.forEach(a, (value, key) => {\n if (!object.hasProperty(b, key)) {\n _failMessage(message, `Property ${path} does not exist on second argument`, path)\n }\n _compare(value, b[key], `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n case Array:\n if (a.length !== b.length) {\n _failMessage(message, 'Arrays have a different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, i) => _compare(value, b[i], `${path}[${i}]`, message, customCompare))\n break\n /* istanbul ignore next */\n default:\n if (!customCompare(a.constructor, a, b, path, compareValues)) {\n _failMessage(message, `Values ${json.stringify(a)} and ${json.stringify(b)} don't match`, path)\n }\n }\n assert(success, message)\n return true\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @param {string?} [message]\n * @param {function(any,T,T,string,any):boolean} [customCompare]\n */\nexport const compare = (a, b, message = null, customCompare = compareValues) => _compare(a, b, 'obj', message, customCompare)\n\n/* istanbul ignore next */\n/**\n * @param {boolean} condition\n * @param {string?} [message]\n * @throws {TestError}\n */\nexport const assert = (condition, message = null) => condition || fail(`Assertion failed${message !== null ? `: ${message}` : ''}`)\n\n/**\n * @param {function():void} f\n * @throws {TestError}\n */\nexport const fails = f => {\n let err = null\n try {\n f()\n } catch (_err) {\n err = _err\n log.print(log.GREEN, '⇖ This Error was expected')\n }\n /* istanbul ignore if */\n if (err === null) {\n fail('Expected this to fail')\n }\n}\n\n/**\n * @param {Object<string, Object<string, function(TestCase):void|Promise<any>>>} tests\n */\nexport const runTests = async tests => {\n const numberOfTests = object.map(tests, mod => object.map(mod, f => /* istanbul ignore next */ f ? 1 : 0).reduce(math.add, 0)).reduce(math.add, 0)\n let successfulTests = 0\n let testnumber = 0\n const start = performance.now()\n for (const modName in tests) {\n const mod = tests[modName]\n for (const fname in mod) {\n const f = mod[fname]\n /* istanbul ignore else */\n if (f) {\n const repeatEachTest = 1\n let success = true\n for (let i = 0; success && i < repeatEachTest; i++) {\n success = await run(modName, fname, f, testnumber, numberOfTests)\n }\n testnumber++\n /* istanbul ignore else */\n if (success) {\n successfulTests++\n }\n }\n }\n }\n const end = performance.now()\n log.print('')\n const success = successfulTests === numberOfTests\n /* istanbul ignore next */\n if (success) {\n /* istanbul ignore next */\n log.print(log.GREEN, log.BOLD, 'All tests successful!', log.GREY, log.UNBOLD, ` in ${time.humanizeDuration(end - start)}`)\n /* istanbul ignore next */\n log.printImgBase64(nyanCatImage, 50)\n } else {\n const failedTests = numberOfTests - successfulTests\n log.print(log.RED, log.BOLD, `> ${failedTests} test${failedTests > 1 ? 's' : ''} failed`)\n }\n return success\n}\n\nclass TestError extends Error {}\n\n/**\n * @param {string} reason\n * @throws {TestError}\n */\nexport const fail = reason => {\n log.print(log.RED, log.BOLD, 'X ', log.UNBOLD, reason)\n throw new TestError('Test Failed')\n}\n\nclass SkipError extends Error {}\n\n/**\n * @param {boolean} cond If true, this tests will be skipped\n * @throws {SkipError}\n */\nexport const skip = (cond = true) => {\n if (cond) {\n throw new SkipError('skipping..')\n }\n}\n\n// eslint-disable-next-line\nconst nyanCatImage = 'R0lGODlhjABMAPcAAMiSE0xMTEzMzUKJzjQ0NFsoKPc7//FM/9mH/z9x0HIiIoKCgmBHN+frGSkZLdDQ0LCwsDk71g0KCUzDdrQQEOFz/8yYdelmBdTiHFxcXDU2erR/mLrTHCgoKK5szBQUFNgSCTk6ymfpCB9VZS2Bl+cGBt2N8kWm0uDcGXhZRUvGq94NCFPhDiwsLGVlZTgqIPMDA1g3aEzS5D6xAURERDtG9JmBjJsZGWs2AD1W6Hp6eswyDeJ4CFNTU1LcEoJRmTMzSd14CTg5ser2GmDzBd17/xkZGUzMvoSMDiEhIfKruCwNAJaWlvRzA8kNDXDrCfi0pe1U/+GS6SZrAB4eHpZwVhoabsx9oiYmJt/TGHFxcYyMjOid0+Zl/0rF6j09PeRr/0zU9DxO6j+z0lXtBtp8qJhMAEssLGhoaPL/GVn/AAsWJ/9/AE3Z/zs9/3cAAOlf/+aa2RIyADo85uhh/0i84WtrazQ0UyMlmDMzPwUFBe16BTMmHau0E03X+g8pMEAoS1MBAf++kkzO8pBaqSZoe9uB/zE0BUQ3Sv///4WFheuiyzo880gzNDIyNissBNqF/8RiAOF2qG5ubj0vL1z6Avl5ASsgGkgUSy8vL/8n/z4zJy8lOv96uEssV1csAN5ZCDQ0Wz1a3tbEGHLeDdYKCg4PATE7PiMVFSoqU83eHEi43gUPAOZ8reGogeKU5dBBC8faHEez2lHYF4bQFMukFtl4CzY3kkzBVJfMGZkAAMfSFf27mP0t//g4/9R6Dfsy/1DRIUnSAPRD/0fMAFQ0Q+l7rnbaD0vEntCDD6rSGtO8GNpUCU/MK07LPNEfC7RaABUWWkgtOst+71v9AfD7GfDw8P19ATtA/NJpAONgB9yL+fm6jzIxMdnNGJxht1/2A9x//9jHGOSX3+5tBP27l35+fk5OTvZ9AhYgTjo0PUhGSDs9+LZjCFf2Aw0IDwcVAA8PD5lwg9+Q7YaChC0kJP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERjQ0NEY0QkI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERjQ0NEY0QUI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OEE3RTIwRjcyQTlFMTExOTQ1QkY2QTU5QzVCQjJBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1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'\n","\nimport * as array from './array.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAppend = tc => {\n const arr = [1, 2, 3]\n array.appendTo(arr, arr.slice())\n t.compareArrays(arr, [1, 2, 3, 1, 2, 3])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testflatten = tc => {\n const arr = [[1, 2, 3], [4]]\n t.compareArrays(array.flatten(arr), [1, 2, 3, 4])\n}\n","\nimport * as log from './logging.js'\n\nexport const testLogging = () => {\n log.print(log.BLUE, 'blue ')\n log.print(log.BLUE, 'blue ', log.BOLD, 'blue,bold')\n log.print(log.GREEN, log.RED, 'red ', 'red')\n log.print(log.ORANGE, 'orange')\n log.print(log.BOLD, 'bold ', log.UNBOLD, 'nobold')\n log.print(log.GREEN, 'green ', log.UNCOLOR, 'nocolor')\n log.print('expecting objects from now on!')\n log.print({ 'my-object': 'isLogged' })\n log.print(log.GREEN, 'green ', { 'my-object': 'isLogged' })\n log.print(log.GREEN, 'green ', { 'my-object': 'isLogged' }, 'unformatted')\n log.print(log.BLUE, log.BOLD, 'number', 1)\n log.print(log.BLUE, log.BOLD, 'number', 1, {}, 's', 2)\n log.print({}, 'dtrn')\n}\n","import * as prng from './prng.js'\nimport * as string from './string.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testLowercaseTransformation = tc => {\n t.compareStrings(string.fromCamelCase('ThisIsATest', ' '), 'this is a test')\n t.compareStrings(string.fromCamelCase('Testing', ' '), 'testing')\n t.compareStrings(string.fromCamelCase('testingThis', ' '), 'testing this')\n t.compareStrings(string.fromCamelCase('testYAY', ' '), 'test y a y')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringUtf8Encoding = tc => {\n t.skip(!string.utf8TextDecoder)\n const str = prng.utf16String(tc.prng, 1000000)\n let nativeResult, polyfilledResult\n t.measureTime('TextEncoder utf8 encoding', () => {\n nativeResult = string._encodeUtf8Native(str)\n })\n t.measureTime('Polyfilled utf8 encoding', () => {\n polyfilledResult = string._encodeUtf8Polyfill(str)\n })\n t.compare(nativeResult, polyfilledResult, 'Encoded utf8 buffers match')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringUtf8Decoding = tc => {\n t.skip(!string.utf8TextDecoder)\n const buf = string.encodeUtf8(prng.utf16String(tc.prng, 1000000))\n let nativeResult, polyfilledResult\n t.measureTime('TextEncoder utf8 decoding', () => {\n nativeResult = string._decodeUtf8Native(buf)\n })\n t.measureTime('Polyfilled utf8 decoding', () => {\n polyfilledResult = string._decodeUtf8Polyfill(buf)\n })\n t.compare(nativeResult, polyfilledResult, 'Decoded utf8 buffers match')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBomEncodingDecoding = tc => {\n const bomStr = 'bom'\n t.assert(bomStr.length === 4)\n const polyfilledResult = string._decodeUtf8Polyfill(string._encodeUtf8Polyfill(bomStr))\n t.assert(polyfilledResult.length === 4)\n t.assert(polyfilledResult === bomStr)\n if (string.utf8TextDecoder) {\n const nativeResult = string._decodeUtf8Native(string._encodeUtf8Native(bomStr))\n t.assert(nativeResult === polyfilledResult)\n }\n}\n","/* global BigInt */\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\nimport * as prng from './prng.js'\nimport * as t from './testing.js'\nimport * as string from './string.js'\nimport * as binary from './binary.js'\nimport * as buffer from './buffer.js'\nimport * as number from './number.js'\n\n/**\n * @type {Array<function(prng.PRNG, number, boolean):any>}\n */\nlet genAnyLookupTable = [\n gen => BigInt(prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER)), // TYPE 122\n gen => undefined, // TYPE 127\n gen => null, // TYPE 126\n gen => prng.int53(gen, number.LOWEST_INT32, number.HIGHEST_INT32), // TYPE 125\n gen => prng.real53(gen), // TYPE 124 and 123\n gen => true, // TYPE 121\n gen => false, // TYPE 120\n gen => prng.utf16String(gen), // TYPE 119\n (gen, depth, toJsonCompatible) => ({ val: genAny(gen, depth + 1, toJsonCompatible) }), // TYPE 118\n (gen, depth, toJsonCompatible) => Array.from({ length: prng.uint32(gen, 0, 20 - depth) }).map(() => genAny(gen, depth + 1, toJsonCompatible)), // TYPE 117\n gen => prng.uint8Array(gen, prng.uint32(gen, 0, 50)) // TYPE 116\n]\n\nconst genAnyLookupTableJsonCompatible = genAnyLookupTable.slice(1)\n\nif (typeof BigInt === 'undefined') {\n genAnyLookupTable = genAnyLookupTable.slice(1)\n}\n\n/**\n * @param {prng.PRNG} gen\n * @param {number} _depth The current call-depth\n */\nconst genAny = (gen, _depth = 0, toJsonCompatible = false) => prng.oneOf(gen, toJsonCompatible ? genAnyLookupTableJsonCompatible : genAnyLookupTable)(gen, _depth, toJsonCompatible)\n\n/**\n * Check if binary encoding is compatible with golang binary encoding - binary.PutVarUint.\n *\n * Result: is compatible up to 32 bit: [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n */\nexport const testGolangBinaryEncodingCompatibility = () => {\n const tests = [\n { in: 0, out: [0] },\n { in: 1, out: [1] },\n { in: 128, out: [128, 1] },\n { in: 200, out: [200, 1] },\n { in: 32, out: [32] },\n { in: 500, out: [244, 3] },\n { in: 256, out: [128, 2] },\n { in: 700, out: [188, 5] },\n { in: 1024, out: [128, 8] },\n { in: 1025, out: [129, 8] },\n { in: 4048, out: [208, 31] },\n { in: 5050, out: [186, 39] },\n { in: 1000000, out: [192, 132, 61] },\n { in: 34951959, out: [151, 166, 213, 16] },\n { in: 2147483646, out: [254, 255, 255, 255, 7] },\n { in: 2147483647, out: [255, 255, 255, 255, 7] },\n { in: 2147483648, out: [128, 128, 128, 128, 8] },\n { in: 2147483700, out: [180, 128, 128, 128, 8] },\n { in: 4294967294, out: [254, 255, 255, 255, 15] },\n { in: 4294967295, out: [255, 255, 255, 255, 15] }\n ]\n tests.forEach(test => {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, test.in)\n const buffer = encoding.toUint8Array(encoder)\n t.assert(buffer.byteLength === test.out.length)\n t.assert(buffer.length > 0)\n for (let j = 0; j < buffer.length; j++) {\n t.assert(buffer[j] === test.out[j])\n }\n })\n}\n\n/**\n * @template T\n * @param {string} testname\n * @param {function(encoding.Encoder, T):void} write\n * @param {function(decoding.Decoder):T} read\n * @param {T} val\n * @param {boolean} doLog\n */\nfunction test (testname, write, read, val, doLog = true) {\n const encoder = encoding.createEncoder()\n write(encoder, val)\n const reader = decoding.createDecoder(encoding.toUint8Array(encoder))\n const result = read(reader)\n const utf8ByteLength = string.utf8ByteLength(val + '')\n const binaryByteLength = encoding.length(encoder)\n if (doLog) {\n t.describe(testname, ` utf8 encode: ${utf8ByteLength} bytes / binary encode: ${binaryByteLength} bytes`)\n }\n t.compare(val, result)\n return {\n utf8ByteLength,\n binaryByteLength\n }\n}\n\n/**\n * @param {string} s\n */\nconst testVarString = s => {\n const encoder = encoding.createEncoder()\n encoding.writeVarString(encoder, s)\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n const peeked = decoding.peekVarString(decoder)\n const result = decoding.readVarString(decoder)\n t.compareStrings(s, result)\n t.compareStrings(s, peeked)\n}\n\nexport const testStringDecodingPerformance = () => {\n // test if it is faster to read N single characters, or if it is faster to read N characters in one flush.\n // to make the comparison meaningful, we read read N characters in an Array\n const N = 2000000\n const durationSingleElements = t.measureTime('read / write single elements', () => {\n const encoder = encoding.createEncoder()\n t.measureTime('read / write single elements - write', () => {\n for (let i = 0; i < N; i++) {\n encoding.writeVarString(encoder, 'i')\n }\n })\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n t.measureTime('read / write single elements - read', () => {\n const arr = []\n for (let i = 0; i < N; i++) {\n arr.push(decoding.readVarString(decoder))\n }\n })\n })\n\n const durationConcatElementsNative = t.measureTime('read / write concatenated string using native encoder/decoder', () => {\n let stringbuf = new Uint8Array()\n const encoderLengths = encoding.createEncoder()\n t.measureTime('read / write concatenated string using native encoder/decoder - write', () => {\n let s = ''\n const sArr = []\n for (let i = 0; i < N; i++) {\n s += 'i'\n encoding.writeVarUint(encoderLengths, 1) // we write a single char.\n if (i % 20 === 0) {\n sArr.push(s)\n s = ''\n }\n }\n sArr.push(s)\n stringbuf = string.encodeUtf8(sArr.join(''))\n })\n const decoderLengths = decoding.createDecoder(encoding.toUint8Array(encoderLengths))\n t.measureTime('read / write concatenated string using native encoder/decoder - read', () => {\n const arr = []\n const concatS = string.decodeUtf8(stringbuf)\n for (let i = 0; i < N; i++) {\n const len = decoding.readVarUint(decoderLengths)\n arr.push(concatS.slice(i, len)) // push using slice\n }\n })\n })\n const durationConcatElements = t.measureTime('read / write concatenated string', () => {\n let stringbuf = new Uint8Array()\n const encoder = encoding.createEncoder()\n const encoderLengths = encoding.createEncoder()\n t.measureTime('read / write concatenated string - write', () => {\n let s = ''\n for (let i = 0; i < N; i++) {\n s += 'i'\n encoding.writeVarUint(encoderLengths, 1) // we write a single char.\n if (i % 20 === 0) {\n encoding.writeVarString(encoder, s)\n s = ''\n }\n }\n encoding.writeVarString(encoder, s)\n stringbuf = encoding.toUint8Array(encoder)\n })\n const decoder = decoding.createDecoder(stringbuf)\n const decoderLengths = decoding.createDecoder(encoding.toUint8Array(encoderLengths))\n t.measureTime('read / write concatenated string - read', () => {\n const arr = []\n const concatS = decoding.readVarString(decoder)\n for (let i = 0; i < N; i++) {\n const len = decoding.readVarUint(decoderLengths)\n arr.push(concatS.slice(i, len)) // push using slice\n }\n })\n })\n t.assert(durationConcatElements < durationSingleElements, 'We expect that the second approach is faster. If this fails, our expectantion is not met in your javascript environment. Please report this issue.')\n t.assert(durationConcatElements < durationConcatElementsNative * 1.3, 'We expect that the native approach is slower. If this fails, our expectantion is not met in your javascript environment. Please report this issue.')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncodeUnknowns = tc => {\n const encoder = encoding.createEncoder()\n // @ts-ignore\n encoding.writeAny(encoder, Symbol('a'))\n encoding.writeAny(encoder, undefined)\n encoding.writeAny(encoder, () => {})\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n t.assert(decoding.readAny(decoder) === undefined)\n t.assert(decoding.readAny(decoder) === undefined)\n t.assert(decoding.readAny(decoder) === undefined)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncodeDate = tc => {\n test('Encode current date', encoding.writeAny, decoding.readAny, new Date().getTime())\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEncodeMax32bitUint = tc => {\n test('max 32bit uint', encoding.writeVarUint, decoding.readVarUint, binary.BITS32)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testVarUintEncoding = tc => {\n test('varUint 1 byte', encoding.writeVarUint, decoding.readVarUint, 42)\n test('varUint 2 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 9 | 3)\n test('varUint 3 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 17 | 1 << 9 | 3)\n test('varUint 4 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 25 | 1 << 17 | 1 << 9 | 3)\n test('varUint of 2839012934', encoding.writeVarUint, decoding.readVarUint, 2839012934)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testVarIntEncoding = tc => {\n test('varInt 1 byte', encoding.writeVarInt, decoding.readVarInt, -42)\n test('varInt 2 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 9 | 3))\n test('varInt 3 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 17 | 1 << 9 | 3))\n test('varInt 4 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 25 | 1 << 17 | 1 << 9 | 3))\n test('varInt of -691529286', encoding.writeVarInt, decoding.readVarInt, -(691529286))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatVarUintEncoding = tc => {\n const n = prng.int32(tc.prng, 0, (1 << 28) - 1)\n test(`varUint of ${n}`, encoding.writeVarUint, decoding.readVarUint, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatVarIntEncoding = tc => {\n const n = prng.uint32(tc.prng, 0, binary.BITS32)\n test(`varInt of ${n}`, encoding.writeVarInt, decoding.readVarInt, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatAnyEncoding = tc => {\n const n = genAny(tc.prng)\n test('any encoding', encoding.writeAny, decoding.readAny, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPeekVarUintEncoding = tc => {\n const n = prng.int32(tc.prng, 0, (1 << 28) - 1)\n test(`varUint of ${n}`, encoding.writeVarUint, decoding.peekVarUint, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPeekVarIntEncoding = tc => {\n const n = prng.uint32(tc.prng, 0, binary.BITS32)\n test(`varInt of ${n}`, encoding.writeVarInt, decoding.peekVarInt, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyVsJsonEncoding = tc => {\n const n = Array.from({ length: 5000 }).map(() => genAny(tc.prng, 5, true))\n t.measureTime('lib0 any encoding', () => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, n)\n const buffer = encoding.toUint8Array(encoder)\n t.info('buffer length is ' + buffer.length)\n decoding.readAny(decoding.createDecoder(buffer))\n })\n t.measureTime('JSON.stringify encoding', () => {\n const encoder = encoding.createEncoder()\n encoding.writeVarString(encoder, JSON.stringify(n))\n const buffer = encoding.toUint8Array(encoder)\n t.info('buffer length is ' + buffer.length)\n JSON.parse(decoding.readVarString(decoding.createDecoder(buffer)))\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStringEncoding = tc => {\n testVarString('hello')\n testVarString('test!')\n testVarString('☺☺☺')\n testVarString('')\n testVarString('1234')\n testVarString('쾟')\n testVarString('龟') // surrogate length 3\n testVarString('😝') // surrogate length 4\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringEncoding = tc =>\n testVarString(prng.utf16String(tc.prng))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetMethods = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint8(encoder, 1)\n encoding.writeUint16(encoder, 33)\n encoding.writeUint32(encoder, 29329)\n encoding.setUint8(encoder, 0, 8)\n encoding.setUint16(encoder, 1, 16)\n encoding.setUint32(encoder, 3, 32)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(decoding.peekUint8(decoder) === 8)\n decoding.readUint8(decoder)\n t.assert(decoding.peekUint16(decoder) === 16)\n decoding.readUint16(decoder)\n t.assert(decoding.peekUint32(decoder) === 32)\n decoding.readUint32(decoder)\n}\n\nconst defLen = 1000\nconst loops = 10000\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst strictComparison = (a, b) => a === b\n\n/**\n * @typedef {Object} EncodingPair\n * @property {function(decoding.Decoder):any} EncodingPair.read\n * @property {function(encoding.Encoder,any):void} EncodingPair.write\n * @property {function(prng.PRNG):any} EncodingPair.gen\n * @property {function(any,any):boolean} EncodingPair.compare\n * @property {string} name\n */\n\n/**\n * @template T\n * @type {Array<EncodingPair>}\n */\nconst encodingPairs = [\n { name: 'uint8Array', read: decoder => decoding.readUint8Array(decoder, defLen), write: encoding.writeUint8Array, gen: gen => prng.uint8Array(gen, defLen), compare: t.compare },\n { name: 'varUint8Array', read: decoding.readVarUint8Array, write: encoding.writeVarUint8Array, gen: gen => prng.uint8Array(gen, prng.uint32(gen, 0, defLen)), compare: t.compare },\n { name: 'uint8', read: decoding.readUint8, write: encoding.writeUint8, gen: gen => prng.uint32(gen, 0, binary.BITS8), compare: strictComparison },\n { name: 'uint16', read: decoding.readUint16, write: encoding.writeUint16, gen: gen => prng.uint32(gen, 0, binary.BITS16), compare: strictComparison },\n { name: 'uint32', read: decoding.readUint32, write: encoding.writeUint32, gen: gen => prng.uint32(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'uint32bigEndian', read: decoding.readUint32BigEndian, write: encoding.writeUint32BigEndian, gen: gen => prng.uint32(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'varString', read: decoding.readVarString, write: encoding.writeVarString, gen: gen => prng.utf16String(gen, prng.uint32(gen, 0, defLen)), compare: strictComparison },\n { name: 'varUint', read: decoding.readVarUint, write: encoding.writeVarUint, gen: gen => prng.uint53(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'varInt', read: decoding.readVarInt, write: encoding.writeVarInt, gen: gen => prng.int53(gen, number.LOWEST_INT32, number.HIGHEST_INT32), compare: strictComparison },\n { name: 'Any', read: decoding.readAny, write: encoding.writeAny, gen: genAny, compare: t.compare }\n]\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatRandomWrites = tc => {\n t.describe(`Writing ${loops} random values`, `defLen=${defLen}`)\n const gen = tc.prng\n const ops = []\n const encoder = encoding.createEncoder()\n for (let i = 0; i < 10000; i++) {\n const pair = prng.oneOf(gen, encodingPairs)\n const val = pair.gen(gen)\n pair.write(encoder, val)\n ops.push({\n compare: pair.compare,\n read: pair.read,\n val,\n name: pair.name\n })\n }\n const tailData = prng.uint8Array(gen, prng.int32(gen, 0, defLen))\n encoding.writeUint8Array(encoder, tailData)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(encoding.length(encoder) === buf.byteLength)\n for (let i = 0; i < ops.length; i++) {\n const o = ops[i]\n const val = o.read(decoder)\n t.assert(o.compare(val, o.val), o.name)\n }\n t.compare(tailData, decoding.readTailAsUint8Array(decoder))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testWriteUint8ArrayOverflow = tc => {\n const encoder = encoding.createEncoder()\n const initialLen = encoder.cbuf.byteLength\n const buf = buffer.createUint8ArrayFromLen(initialLen * 4)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = i\n }\n encoding.writeUint8Array(encoder, buf)\n encoding.write(encoder, 42)\n const res = encoding.toUint8Array(encoder)\n t.assert(res.length === initialLen * 4 + 1)\n for (let i = 0; i < buf.length - 1; i++) {\n t.assert(res[i] === (i % 256))\n }\n t.assert(res[initialLen * 4] === 42)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetOnOverflow = tc => {\n const encoder = encoding.createEncoder()\n const initialLen = encoder.cbuf.byteLength\n encoder.cpos = initialLen - 2\n encoding.writeUint32(encoder, binary.BITS32)\n const buf = encoding.toUint8Array(encoder)\n t.assert(encoding.length(encoder) === initialLen + 2)\n const decoder = decoding.createDecoder(buf)\n const space = buffer.createUint8ArrayFromArrayBuffer(decoding.readUint8Array(decoder, initialLen - 2))\n for (let i = 0; i < initialLen - 2; i++) {\n t.assert(space[i] === 0)\n }\n t.assert(decoding.hasContent(decoder))\n t.assert(binary.BITS32 === decoding.readUint32(decoder))\n t.assert(!decoding.hasContent(decoder))\n encoding.setUint8(encoder, 5, binary.BITS8)\n encoding.setUint8(encoder, initialLen + 1, 7)\n const buf2 = encoding.toUint8Array(encoder)\n t.assert(buf2[5] === binary.BITS8)\n t.assert(buf[5] === 0, 'old buffer is not affected')\n t.assert(buf2[initialLen + 1] === 7)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testCloneDecoder = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint8(encoder, 12132)\n encoding.writeVarUint(encoder, 329840128734)\n encoding.writeVarString(encoder, 'dtrnuiaednudiaendturinaedt nduiaen dturinaed ')\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n decoding.skip8(decoder)\n const decoder2 = decoding.clone(decoder)\n const payload1 = decoding.readTailAsUint8Array(decoder)\n const payload2 = decoding.readTailAsUint8Array(decoder2)\n t.compare(payload1, payload2)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testWriteBinaryEncoder = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint16(encoder, 4)\n const encoder2 = encoding.createEncoder()\n encoding.writeVarUint(encoder2, 143095)\n encoding.writeBinaryEncoder(encoder2, encoder)\n const buf = encoding.toUint8Array(encoder2)\n const decoder = decoding.createDecoder(buf)\n t.assert(decoding.readVarUint(decoder) === 143095)\n t.assert(decoding.readUint16(decoder) === 4)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testOverflowStringDecoding = tc => {\n const gen = tc.prng\n const encoder = encoding.createEncoder()\n let longStr = ''\n while (longStr.length < 11000) {\n longStr += prng.utf16String(gen, 100000)\n }\n encoding.writeVarString(encoder, longStr)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(longStr === decoding.readVarString(decoder))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.RleEncoder(encoding.writeVarUint)\n for (let i = 0; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.RleDecoder(encoding.toUint8Array(encoder), decoding.readVarUint)\n for (let i = 0; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRleIntDiffEncoder = tc => {\n const N = 100\n const encoder = new encoding.RleIntDiffEncoder(0)\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.RleIntDiffDecoder(encoding.toUint8Array(encoder), 0)\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUintOptRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.UintOptRleEncoder()\n for (let i = 0; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.UintOptRleDecoder(encoder.toUint8Array())\n for (let i = 0; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntDiffRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.IntDiffOptRleEncoder()\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.IntDiffOptRleDecoder(encoder.toUint8Array())\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntEncoders = tc => {\n const arrLen = 10000\n const gen = tc.prng\n /**\n * @type {Array<number>}\n */\n const vals = []\n for (let i = 0; i < arrLen; i++) {\n vals.push(prng.int32(gen, -10, 10))\n }\n /**\n * @type {Array<{ encoder: any, read: function(any):any }>}\n */\n const intEncoders = [\n { encoder: new encoding.IntDiffOptRleEncoder(), read: encoder => new decoding.IntDiffOptRleDecoder(encoder.toUint8Array()) },\n { encoder: new encoding.IntDiffEncoder(0), read: encoder => new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 0) },\n { encoder: new encoding.IntDiffEncoder(42), read: encoder => new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 42) },\n { encoder: new encoding.RleIntDiffEncoder(0), read: encoder => new decoding.RleIntDiffDecoder(encoding.toUint8Array(encoder), 0) }\n ]\n intEncoders.forEach(({ encoder, read }) => {\n vals.forEach(v => encoder.write(v))\n /**\n * @type {Array<number>}\n */\n const readVals = []\n const dec = read(encoder)\n for (let i = 0; i < arrLen; i++) {\n readVals.push(dec.read())\n }\n t.compare(vals, readVals)\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntDiffEncoder = tc => {\n const N = 100\n const encoder = new encoding.IntDiffEncoder(0)\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n }\n const decoder = new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 0)\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStringDecoder = tc => {\n const gen = tc.prng\n const N = 1000\n const words = []\n for (let i = 0; i < N; i++) {\n words.push(prng.utf16String(gen))\n if (i % 100 === 0) {\n const char = prng.char(gen).slice(0, 1)\n words.push(char)\n words.push(char)\n }\n if (i % 107 === 0) {\n words.push(prng.word(gen, 3000, 8000))\n }\n }\n const encoder = new encoding.StringEncoder()\n for (let i = 0; i < words.length; i++) {\n encoder.write(words[i])\n }\n const decoder = new decoding.StringDecoder(encoder.toUint8Array())\n for (let i = 0; i < words.length; i++) {\n t.assert(decoder.read() === words[i])\n }\n}\n","import { simpleDiffString, simpleDiffArray } from './diff.js'\nimport * as prng from './prng.js'\nimport * as f from './function.js'\nimport * as t from './testing.js'\nimport * as object from './object.js'\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {{index: number,remove:number,insert:string}} expected\n */\nfunction runDiffTest (a, b, expected) {\n const result = simpleDiffString(a, b)\n t.compare(result, expected)\n const arrResult = simpleDiffArray(a.split(''), b.split(''))\n t.compare(arrResult, object.assign({}, result, { insert: result.insert.split('') }))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDiffing = tc => {\n runDiffTest('abc', 'axc', { index: 1, remove: 1, insert: 'x' })\n runDiffTest('bc', 'xc', { index: 0, remove: 1, insert: 'x' })\n runDiffTest('ab', 'ax', { index: 1, remove: 1, insert: 'x' })\n runDiffTest('b', 'x', { index: 0, remove: 1, insert: 'x' })\n runDiffTest('', 'abc', { index: 0, remove: 0, insert: 'abc' })\n runDiffTest('abc', 'xyz', { index: 0, remove: 3, insert: 'xyz' })\n runDiffTest('axz', 'au', { index: 1, remove: 2, insert: 'u' })\n runDiffTest('ax', 'axy', { index: 2, remove: 0, insert: 'y' })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatDiffing = tc => {\n const a = prng.word(tc.prng)\n const b = prng.word(tc.prng)\n const change = simpleDiffString(a, b)\n const recomposed = `${a.slice(0, change.index)}${change.insert}${a.slice(change.index + change.remove)}`\n t.compareStrings(recomposed, b)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testArrayDiffing = tc => {\n const a = [[1, 2], { x: 'x' }]\n const b = [[1, 2], { x: 'x' }]\n t.compare(simpleDiffArray(a, b, f.equalityFlat), { index: 2, remove: 0, insert: [] })\n t.compare(simpleDiffArray(a, b, f.equalityStrict), { index: 0, remove: 2, insert: b })\n t.compare(simpleDiffArray([{ x: 'y' }, []], a, f.equalityFlat), { index: 0, remove: 2, insert: b })\n}\n","import * as t from './testing.js'\nimport * as math from './math.js'\nimport * as buffer from './buffer.js'\nimport * as map from './map.js'\nimport * as promise from './promise.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testComparing = tc => {\n t.compare({}, {})\n t.compare({ a: 4 }, { a: 4 }, 'simple compare (object)')\n t.compare([1, 2], [1, 2], 'simple compare (array)')\n t.compare({ a: [1, 2] }, { a: [1, 2] }, 'simple compare nested')\n t.compare(new Set(['3', 1234]), new Set(['3', 1234]), 'compare Sets')\n const map1 = map.create()\n map1.set(1, 2)\n map1.set('x', {})\n map1.set(98, 'tst')\n const map2 = new Map()\n map2.set(1, 2)\n map2.set('x', {})\n map2.set(98, 'tst')\n t.compare(map1, map2, 'compare Maps')\n\n t.describe('The following errors are expected!')\n t.fails(() => {\n t.compare({ a: 4 }, { b: 5 }, 'childs are not equal')\n })\n t.fails(() => {\n t.compare({ a: 4 }, { a: 5 }, 'childs are not equal')\n })\n t.fails(() => {\n t.compare({ a: 4 }, null, 'childs are not equal')\n })\n t.fails(() => {\n // @ts-ignore\n t.compare({ a: 4 }, [4], 'childs have different types')\n })\n t.fails(() => {\n t.compare({ a: 4 }, { a: 4, b: 5 }, 'childs have different length (object)')\n })\n t.fails(() => {\n t.compare([1], [1, 2]) // childs have different length (array) -- no message\n })\n t.fails(() => {\n t.compare(buffer.createUint8ArrayFromLen(1), buffer.createUint8ArrayFromLen(2), 'Uint8Arrays have different length')\n })\n t.fails(() => {\n t.compare(buffer.createUint8ArrayFromLen(1).buffer, buffer.createUint8ArrayFromLen(2).buffer, 'ArrayBuffer have different length')\n })\n t.fails(() => {\n t.compareStrings('str1', 'str2', 'Strings comparison can fail')\n })\n t.compareArrays([], [], 'Comparing empty arrays')\n t.fails(() => {\n t.compareArrays([1], [1, 2], 'Compare arrays with different length')\n })\n t.fails(() => {\n t.compareArrays([1], [2]) // Compare different arrays -- no message\n })\n t.compareObjects({ x: 1 }, { x: 1 }, 'comparing objects')\n t.fails(() => {\n t.compareObjects({}, { x: 1 }, 'compareObjects can fail')\n })\n t.fails(() => {\n t.compareObjects({ x: 3 }, { x: 1 }) // Compare different objects -- no message\n })\n t.fails(() => {\n t.compare({ x: undefined }, { y: 1 }, 'compare correctly handles undefined')\n })\n t.fails(() => {\n t.compareObjects({ x: undefined }, { y: 1 }, 'compare correctly handles undefined')\n })\n t.describe('Map fails')\n t.fails(() => {\n const m1 = new Map()\n m1.set(1, 2)\n const m2 = new Map()\n m2.set(1, 3)\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.fails(() => {\n const m1 = new Map()\n m1.set(2, 2)\n const m2 = new Map()\n m2.set(1, 2)\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.fails(() => {\n const m1 = new Map()\n m1.set(1, 2)\n const m2 = new Map()\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.describe('Set fails')\n t.fails(() => {\n t.compare(new Set([1]), new Set([1, 2])) // childs have different length (array) -- no message\n })\n t.fails(() => {\n t.compare(new Set([1]), new Set([2])) // childs have different length (array) -- no message\n })\n}\n\nexport const testFailing = () => {\n t.fails(() => {\n t.fail('This fail is expected')\n })\n}\n\nexport const testSkipping = () => {\n t.skip(false)\n t.assert(true)\n t.skip()\n /* istanbul ignore next */\n t.fail('should have skipped')\n}\n\nexport const testAsync = async () => {\n await t.measureTimeAsync('time', () => promise.create(r => setTimeout(r)))\n await t.groupAsync('some description', () => promise.wait(1))\n}\n\nexport const testRepeatRepitition = () => {\n const arr = []\n const n = 100\n for (let i = 1; i <= n; i++) {\n arr.push(i)\n }\n t.assert(arr.reduce(math.add, 0) === (n + 1) * n / 2)\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* istanbul ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* istanbul ignore next */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/* eslint-env browser */\n\n/**\n * Helpers to work with IndexedDB.\n *\n * @module idb\n */\n\nimport * as promise from './promise.js'\nimport * as error from './error.js'\n\n/**\n * IDB Request to Promise transformer\n *\n * @param {IDBRequest} request\n * @return {Promise<any>}\n */\n/* istanbul ignore next */\nexport const rtop = request => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n // @ts-ignore\n request.onerror = event => reject(new Error(event.target.error))\n /* istanbul ignore next */\n // @ts-ignore\n request.onblocked = () => location.reload()\n // @ts-ignore\n request.onsuccess = event => resolve(event.target.result)\n})\n\n/**\n * @param {string} name\n * @param {function(IDBDatabase):any} initDB Called when the database is first created\n * @return {Promise<IDBDatabase>}\n */\n/* istanbul ignore next */\nexport const openDB = (name, initDB) => promise.create((resolve, reject) => {\n const request = indexedDB.open(name)\n /**\n * @param {any} event\n */\n request.onupgradeneeded = event => initDB(event.target.result)\n /* istanbul ignore next */\n /**\n * @param {any} event\n */\n request.onerror = event => reject(error.create(event.target.error))\n /* istanbul ignore next */\n request.onblocked = () => location.reload()\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n /**\n * @type {IDBDatabase}\n */\n const db = event.target.result\n /* istanbul ignore next */\n db.onversionchange = () => { db.close() }\n /* istanbul ignore if */\n if (typeof addEventListener !== 'undefined') {\n addEventListener('unload', () => db.close())\n }\n resolve(db)\n }\n})\n\n/**\n * @param {string} name\n */\n/* istanbul ignore next */\nexport const deleteDB = name => rtop(indexedDB.deleteDatabase(name))\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions\n */\n/* istanbul ignore next */\nexport const createStores = (db, definitions) => definitions.forEach(d =>\n // @ts-ignore\n db.createObjectStore.apply(db, d)\n)\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<string>} stores\n * @param {\"readwrite\"|\"readonly\"} [access]\n * @return {Array<IDBObjectStore>}\n */\nexport const transact = (db, stores, access = 'readwrite') => {\n const transaction = db.transaction(stores, access)\n return stores.map(store => getStore(transaction, store))\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<number>}\n */\n/* istanbul ignore next */\nexport const count = (store, range) =>\n rtop(store.count(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | Array<any> } key\n * @return {Promise<String | number | ArrayBuffer | Date | Array<any>>}\n */\n/* istanbul ignore next */\nexport const get = (store, key) =>\n rtop(store.get(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key\n */\n/* istanbul ignore next */\nexport const del = (store, key) =>\n rtop(store.delete(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} [key]\n */\n/* istanbul ignore next */\nexport const put = (store, item, key) =>\n rtop(store.put(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} key\n * @return {Promise<any>}\n */\n/* istanbul ignore next */\nexport const add = (store, item, key) =>\n rtop(store.add(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date} item\n * @return {Promise<number>} Returns the generated key\n */\n/* istanbul ignore next */\nexport const addAutoKey = (store, item) =>\n rtop(store.add(item))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\n/* istanbul ignore next */\nexport const getAll = (store, range) =>\n rtop(store.getAll(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\n/* istanbul ignore next */\nexport const getAllKeys = (store, range) =>\n rtop(store.getAllKeys(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} query\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n * @return {Promise<any>}\n */\nexport const queryFirst = (store, query, direction) => {\n /**\n * @type {any}\n */\n let first = null\n return iterateKeys(store, query, key => {\n first = key\n return false\n }, direction).then(() => first)\n}\n\n/**\n * @param {IDBObjectStore} store\n * @return {Promise<any>}\n */\nexport const getLastKey = store => queryFirst(store, null, 'prev')\n\n/**\n * @param {IDBObjectStore} store\n * @return {Promise<any>}\n */\nexport const getFirstKey = store => queryFirst(store, null, 'prev')\n\n/**\n * @typedef KeyValuePair\n * @type {Object}\n * @property {any} k key\n * @property {any} v Value\n */\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<KeyValuePair>>}\n */\n/* istanbul ignore next */\nexport const getAllKeysValues = (store, range) =>\n // @ts-ignore\n promise.all([getAllKeys(store, range), getAll(store, range)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })))\n\n/**\n * @param {any} request\n * @param {function(IDBCursorWithValue):void|boolean} f\n * @return {Promise<void>}\n */\n/* istanbul ignore next */\nconst iterateOnRequest = (request, f) => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n request.onerror = reject\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n const cursor = event.target.result\n if (cursor === null || f(cursor) === false) {\n return resolve()\n }\n cursor.continue()\n }\n})\n\n/**\n * Iterate on keys and values\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any,any):void|boolean} f Callback that receives (value, key)\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\n/* istanbul ignore next */\nexport const iterate = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))\n\n/**\n * Iterate on the keys (no values)\n *\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any):void|boolean} f callback that receives the key\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\n/* istanbul ignore next */\nexport const iterateKeys = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))\n\n/**\n * Open store from transaction\n * @param {IDBTransaction} t\n * @param {String} store\n * @returns {IDBObjectStore}\n */\n/* istanbul ignore next */\nexport const getStore = (t, store) => t.objectStore(store)\n\n/**\n * @param {any} lower\n * @param {any} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n */\n/* istanbul ignore next */\nexport const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n\n/**\n * @param {any} upper\n * @param {boolean} upperOpen\n */\n/* istanbul ignore next */\nexport const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)\n\n/**\n * @param {any} lower\n * @param {boolean} lowerOpen\n */\n/* istanbul ignore next */\nexport const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)\n","import * as t from './testing.js'\nimport * as idb from './indexeddb.js'\nimport { isBrowser } from './environment.js'\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n */\nconst initTestDB = db => idb.createStores(db, [['test', { autoIncrement: true }]])\nconst testDBName = 'idb-test'\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n */\nconst createTransaction = db => db.transaction(['test'], 'readwrite')\n\n/* istanbul ignore next */\n/**\n * @param {IDBTransaction} t\n * @return {IDBObjectStore}\n */\nconst getStore = t => idb.getStore(t, 'test')\n\n/* istanbul ignore next */\nexport const testRetrieveElements = async () => {\n t.skip(!isBrowser)\n t.describe('create, then iterate some keys')\n await idb.deleteDB(testDBName)\n const db = await idb.openDB(testDBName, initTestDB)\n const transaction = createTransaction(db)\n const store = getStore(transaction)\n await idb.put(store, 0, ['t', 1])\n await idb.put(store, 1, ['t', 2])\n const expectedKeys = [['t', 1], ['t', 2]]\n const expectedVals = [0, 1]\n const expectedKeysVals = [{ v: 0, k: ['t', 1] }, { v: 1, k: ['t', 2] }]\n t.describe('idb.getAll')\n const valsGetAll = await idb.getAll(store)\n t.compare(valsGetAll, expectedVals)\n t.describe('idb.getAllKeys')\n const valsGetAllKeys = await idb.getAllKeys(store)\n t.compare(valsGetAllKeys, expectedKeys)\n t.describe('idb.getAllKeysVals')\n const valsGetAllKeysVals = await idb.getAllKeysValues(store)\n t.compare(valsGetAllKeysVals, expectedKeysVals)\n\n /**\n * @param {string} desc\n * @param {IDBKeyRange?} keyrange\n */\n const iterateTests = async (desc, keyrange) => {\n t.describe(`idb.iterate (${desc})`)\n /**\n * @type {Array<{v:any,k:any}>}\n */\n const valsIterate = []\n await idb.iterate(store, keyrange, (v, k) => {\n valsIterate.push({ v, k })\n })\n t.compare(valsIterate, expectedKeysVals)\n t.describe(`idb.iterateKeys (${desc})`)\n /**\n * @type {Array<any>}\n */\n const keysIterate = []\n await idb.iterateKeys(store, keyrange, key => {\n keysIterate.push(key)\n })\n t.compare(keysIterate, expectedKeys)\n }\n await iterateTests('range=null', null)\n const range = idb.createIDBKeyRangeBound(['t', 1], ['t', 2], false, false)\n // adding more items that should not be touched by iteration with above range\n await idb.put(store, 2, ['t', 3])\n await idb.put(store, 2, ['t', 0])\n await iterateTests('range!=null', range)\n\n t.describe('idb.get')\n const getV = await idb.get(store, ['t', 1])\n t.assert(getV === 0)\n t.describe('idb.del')\n await idb.del(store, ['t', 0])\n const getVDel = await idb.get(store, ['t', 0])\n t.assert(getVDel === undefined)\n t.describe('idb.add')\n await idb.add(store, 99, 42)\n const idbVAdd = await idb.get(store, 42)\n t.assert(idbVAdd === 99)\n t.describe('idb.addAutoKey')\n const key = await idb.addAutoKey(store, 1234)\n const retrieved = await idb.get(store, key)\n t.assert(retrieved === 1234)\n}\n","import * as binary from '../binary.js'\nimport * as math from '../math.js'\n\n/**\n * @module prng\n */\nconst N = 624\nconst M = 397\n\n/**\n * @param {number} u\n * @param {number} v\n */\nconst twist = (u, v) => ((((u & 0x80000000) | (v & 0x7fffffff)) >>> 1) ^ ((v & 1) ? 0x9908b0df : 0))\n\n/**\n * @param {Uint32Array} state\n */\nconst nextState = state => {\n let p = 0\n let j\n for (j = N - M + 1; --j; p++) {\n state[p] = state[p + M] ^ twist(state[p], state[p + 1])\n }\n for (j = M; --j; p++) {\n state[p] = state[p + M - N] ^ twist(state[p], state[p + 1])\n }\n state[p] = state[p + M - N] ^ twist(state[p], state[0])\n}\n\n/**\n * This is a port of Shawn Cokus's implementation of the original Mersenne Twister algorithm (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/MTARCOK/mt19937ar-cok.c).\n * MT has a very high period of 2^19937. Though the authors of xorshift describe that a high period is not\n * very relevant (http://vigna.di.unimi.it/xorshift/). It is four times slower than xoroshiro128plus and\n * needs to recompute its state after generating 624 numbers.\n *\n * ```js\n * const gen = new Mt19937(new Date().getTime())\n * console.log(gen.next())\n * ```\n *\n * @public\n */\nexport class Mt19937 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n const state = new Uint32Array(N)\n state[0] = seed\n for (let i = 1; i < N; i++) {\n state[i] = (math.imul(1812433253, (state[i - 1] ^ (state[i - 1] >>> 30))) + i) & binary.BITS32\n }\n this._state = state\n this._i = 0\n nextState(this._state)\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n if (this._i === N) {\n // need to compute a new state\n nextState(this._state)\n this._i = 0\n }\n let y = this._state[this._i++]\n y ^= (y >>> 11)\n y ^= (y << 7) & 0x9d2c5680\n y ^= (y << 15) & 0xefc60000\n y ^= (y >>> 18)\n return (y >>> 0) / (binary.BITS32 + 1)\n }\n}\n","\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as prng from './prng.js'\nimport { MAX_SAFE_INTEGER } from './number.js'\nimport * as binary from './binary.js'\nimport * as t from './testing.js'\nimport { Xorshift32 } from './prng/Xorshift32.js'\nimport { Mt19937 } from './prng/Mt19937.js'\nimport * as dom from './dom.js'\nimport { isBrowser, production } from './environment.js'\nimport * as math from './math.js'\n\nconst genTestData = 5000\n\n/**\n * @param {t.TestCase} tc\n * @param {prng.PRNG} gen\n */\nconst runGenTest = (tc, gen) => {\n t.group('next - average distribution', () => {\n let sum = 0\n for (let i = 0; i < genTestData; i++) {\n const next = gen.next()\n if (next >= 1) {\n t.fail('unexpected prng result')\n }\n sum += next\n }\n const avg = sum / genTestData\n t.assert(avg >= 0.45)\n t.assert(avg <= 0.55)\n })\n\n t.group('bool - bool distribution is fair', () => {\n let head = 0\n let tail = 0\n let b\n let i\n\n for (i = 0; i < genTestData; i++) {\n b = prng.bool(gen)\n if (b) {\n head++\n } else {\n tail++\n }\n }\n t.info(`Generated ${head} heads and ${tail} tails.`)\n t.assert(tail >= math.floor(genTestData * 0.45), 'Generated enough tails.')\n t.assert(head >= math.floor(genTestData * 0.45), 'Generated enough heads.')\n })\n t.group('int31 - integers average correctly', () => {\n let count = 0\n let i\n\n for (i = 0; i < genTestData; i++) {\n count += prng.uint32(gen, 0, 100)\n }\n const average = count / genTestData\n const expectedAverage = 100 / 2\n t.info(`Average is: ${average}. Expected average is ${expectedAverage}.`)\n t.assert(math.abs(average - expectedAverage) <= 2, 'Expected average is at most 1 off.')\n })\n\n t.group('int32 - generates integer with 32 bits', () => {\n let largest = 0\n let smallest = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.int32(gen, -binary.BITS31, binary.BITS31)\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest < -1000, 'Smallest number is negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest} (0x${largest.toString(16)})`)\n t.info(`Smallest number generated is ${smallest} (0x${smallest.toString(16)})`)\n t.assert((smallest & binary.BIT32) !== 0, 'Largest number is 32 bits long') // largest.. assuming we convert int to uint\n })\n\n t.group('uint32 - generates unsigned integer with 32 bits', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint32(gen, 0, binary.BITS32)\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num} (0x${num.toString(16)})`)\n t.assert((num & binary.BIT32) !== 0, 'Largest number is 32 bits long.')\n })\n\n t.group('int53 - generates integer exceeding 32 bits', () => {\n let largest = 0\n let smallest = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.int53(gen, Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest < -1000, 'Smallest number is negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest}`)\n t.info(`Smallest number generated is ${smallest}`)\n t.assert(largest > (binary.BITS32 >>> 0), 'Largest number exceeds BITS32')\n t.assert(smallest < binary.BITS32, 'Smallest Number is smaller than BITS32 (negative)')\n })\n\n t.group('uint53 - generates integer exceeding 32 bits', () => {\n let largest = 0\n let smallest = 10000\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint53(gen, 0, Number.MAX_SAFE_INTEGER)\n if (newNum > largest) {\n largest = newNum\n }\n /* istanbul ignore if */\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest >= 0, 'Smallest number is not negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest}`)\n t.info(`Smallest number generated is ${smallest}`)\n t.assert(largest > (binary.BITS32 >>> 0), 'Largest number exceeds BITS32')\n })\n\n t.group('int31 - generates integer with 31 bits', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint32(gen, 0, binary.BITS31)\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num} (0x${num.toString(16)})`)\n t.assert((num & binary.BIT31) !== 0, 'Largest number is 31 bits long.')\n })\n\n t.group('real - has 53 bit resolution', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.real53(gen) * MAX_SAFE_INTEGER\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num}.`)\n t.assert((MAX_SAFE_INTEGER - num) / MAX_SAFE_INTEGER < 0.01, 'Largest number is close to MAX_SAFE_INTEGER (at most 1% off).')\n })\n\n t.group('char - generates all ascii characters', () => {\n const charSet = new Set()\n const chars = ' !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\"'\n for (let i = chars.length - 1; i >= 0; i--) {\n charSet.add(chars[i])\n }\n for (let i = 0; i < genTestData; i++) {\n const char = prng.char(gen)\n charSet.delete(char)\n }\n t.info(`Charactes missing: ${charSet.size} - generating all of \"${chars}\"`)\n t.assert(charSet.size === 0, 'Generated all documented characters.')\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorXoroshiro128plus = tc => runGenTest(tc, new Xoroshiro128plus(tc.seed))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorXorshift32 = tc => {\n t.skip(!production)\n runGenTest(tc, new Xorshift32(tc.seed))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorMt19937 = tc => {\n t.skip(!production)\n runGenTest(tc, new Mt19937(tc.seed))\n}\n\n/* istanbul ignore next */\n/**\n * @param {prng.PRNG} gen\n * @param {t.TestCase} tc\n */\nconst printDistribution = (gen, tc) => {\n const DIAMETER = genTestData / 50\n const canvas = dom.canvas(DIAMETER * 3, DIAMETER)\n const ctx = canvas.getContext('2d')\n if (ctx == null) {\n return t.skip()\n }\n ctx.fillStyle = 'blue'\n for (let i = 0; i < genTestData; i++) {\n const x = prng.int32(gen, 0, DIAMETER * 3)\n const y = prng.int32(gen, 0, DIAMETER)\n ctx.fillRect(x, y, 1, 2)\n }\n t.printCanvas(canvas, DIAMETER)\n}\n\n/* istanbul ignore next */\n/**\n * @param {t.TestCase} tc\n */\nexport const testNumberDistributions = tc => {\n t.skip(!isBrowser)\n t.group('Xoroshiro128plus', () => printDistribution(new Xoroshiro128plus(tc.seed), tc))\n t.group('Xorshift32', () => printDistribution(new Xorshift32(tc.seed), tc))\n t.group('MT19937', () => printDistribution(new Mt19937(tc.seed), tc))\n}\n","import * as statistics from './statistics.js'\nimport * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMedian = tc => {\n t.assert(math.isNaN(statistics.median([])), 'median([]) = NaN')\n t.assert(statistics.median([1]) === 1, 'median([x]) = x')\n t.assert(statistics.median([1, 2, 3]) === 2, 'median([a,b,c]) = b')\n t.assert(statistics.median([1, 2, 3, 4]) === (2 + 3) / 2, 'median([a,b,c,d]) = (b+c)/2')\n t.assert(statistics.median([1, 2, 3, 4, 5]) === 3, 'median([a,b,c,d,e]) = c')\n t.assert(statistics.median([1, 2, 3, 4, 5, 6]) === (3 + 4) / 2, 'median([a,b,c,d,e,f]) = (c+d)/2')\n}\n","\nimport * as binary from './binary.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBitx = tc => {\n for (let i = 1; i <= 32; i++) {\n // @ts-ignore\n t.assert(binary[`BIT${i}`] === (1 << (i - 1)), `BIT${i}=${1 << (i - 1)}`)\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBitsx = tc => {\n t.assert(binary.BITS0 === 0)\n for (let i = 1; i < 32; i++) {\n const expected = ((1 << i) - 1) >>> 0\n // @ts-ignore\n const have = binary[`BITS${i}`]\n t.assert(have === expected, `BITS${i}=${have}=${expected}`)\n }\n t.assert(binary.BITS32 === 0xFFFFFFFF)\n}\n","import * as random from './random.js'\nimport * as t from './testing.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUint32 = tc => {\n const iterations = 10000\n let largest = 0\n let smallest = number.HIGHEST_INT32\n let newNum = 0\n let lenSum = 0\n let ones = 0\n for (let i = 0; i < iterations; i++) {\n newNum = random.uint32()\n lenSum += newNum.toString().length\n ones += newNum.toString(2).split('').filter(x => x === '1').length\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.info(`Largest number generated is ${largest} (0x${largest.toString(16)})`)\n t.info(`Smallest number generated is ${smallest} (0x${smallest.toString(16)})`)\n t.info(`Average decimal length of number is ${lenSum / iterations}`)\n t.info(`Average number of 1s in number is ${ones / iterations} (expecting ~16)`)\n t.assert(((largest & binary.BITS32) >>> 0) === largest, 'Largest number is 32 bits long.')\n t.assert(((smallest & binary.BITS32) >>> 0) === smallest, 'Smallest number is 32 bits long.')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUuidv4 = tc => {\n t.info(`Generated a UUIDv4: ${random.uuidv4()}`)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUuidv4Overlaps = tc => {\n t.skip(!t.production)\n const iterations = t.extensive ? 1000000 : 10000\n const uuids = new Set()\n for (let i = 0; i < iterations; i++) {\n const uuid = random.uuidv4()\n if (uuids.has(uuid)) {\n t.fail('uuid already exists')\n } else {\n uuids.add(uuid)\n }\n if (uuids.size % (iterations / 20) === 0) {\n t.info(`${math.round(uuids.size * 100 / iterations)}% complete`)\n }\n }\n t.assert(uuids.size === iterations)\n}\n","import * as promise from './promise.js'\nimport * as t from './testing.js'\nimport * as time from './time.js'\nimport * as error from './error.js'\n\n/**\n * @param {Promise<any>} p\n * @param {number} min\n * @param {number} max\n */\nconst measureP = (p, min, max) => {\n const start = time.getUnixTime()\n return p.then(() => {\n const duration = time.getUnixTime() - start\n t.assert(duration <= max, 'Expected promise to take less time')\n t.assert(duration >= min, 'Expected promise to take more time')\n })\n}\n\n/**\n * @template T\n * @param {Promise<T>} p\n * @return {Promise<T>}\n */\nconst failsP = p => promise.create((resolve, reject) => p.then(() => reject(error.create('Promise should fail')), resolve))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPromise = async tc => {\n t.assert(promise.createEmpty(r => r()).constructor === Promise, 'p.create() creates a Promise')\n t.assert(promise.resolve().constructor === Promise, 'p.reject() creates a Promise')\n const rejectedP = promise.reject()\n t.assert(rejectedP.constructor === Promise, 'p.reject() creates a Promise')\n rejectedP.catch(() => {})\n await promise.createEmpty(r => r())\n await failsP(promise.reject())\n await promise.resolve()\n await measureP(promise.wait(10), 7, 1000)\n await measureP(failsP(promise.until(15, () => false)), 15, 1000)\n const startTime = time.getUnixTime()\n await measureP(promise.until(0, () => (time.getUnixTime() - startTime) > 100), 100, 1000)\n await promise.all([promise.wait(5), promise.wait(10)])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testispromise = tc => {\n t.assert(promise.isPromise(new Promise(() => {})))\n t.assert(promise.isPromise(promise.create(() => {})))\n const rej = promise.reject()\n t.assert(promise.isPromise(rej))\n rej.catch(() => {})\n t.assert(promise.isPromise(promise.resolve()))\n t.assert(promise.isPromise({ then: () => {}, catch: () => {}, finally: () => {} }))\n t.fails(() => {\n t.assert(promise.isPromise({ then: () => {}, catch: () => {} }))\n })\n}\n","\nexport class QueueNode {\n constructor () {\n /**\n * @type {QueueNode|null}\n */\n this.next = null\n }\n}\n\nexport class Queue {\n constructor () {\n /**\n * @type {QueueNode | null}\n */\n this.start = null\n /**\n * @type {QueueNode | null}\n */\n this.end = null\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @return {Queue}\n */\nexport const create = () => new Queue()\n\n/**\n * @param {Queue} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * @param {Queue} queue\n * @param {QueueNode} n\n */\nexport const enqueue = (queue, n) => {\n if (queue.end !== null) {\n queue.end.next = n\n queue.end = n\n } else {\n queue.end = n\n queue.start = n\n }\n}\n\n/**\n * @param {Queue} queue\n * @return {QueueNode | null}\n */\nexport const dequeue = queue => {\n const n = queue.start\n if (n !== null) {\n // @ts-ignore\n queue.start = n.next\n return n\n }\n return null\n}\n","import * as t from './testing.js'\nimport * as queue from './queue.js'\n\nclass QueueItem extends queue.QueueNode {\n /**\n * @param {number} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEnqueueDequeue = tc => {\n const N = 30\n /**\n * @type {queue.Queue}\n */\n const q = queue.create()\n t.assert(queue.isEmpty(q))\n t.assert(queue.dequeue(q) === null)\n for (let i = 0; i < N; i++) {\n queue.enqueue(q, new QueueItem(i))\n t.assert(!queue.isEmpty(q))\n }\n for (let i = 0; i < N; i++) {\n const item = /** @type {QueueItem} */ (queue.dequeue(q))\n t.assert(item !== null && item.v === i)\n }\n t.assert(queue.dequeue(q) === null)\n}\n","import * as map from './map.js'\nimport * as math from './math.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMap = tc => {\n const m = map.create()\n m.set(1, 2)\n m.set(2, 3)\n t.assert(map.map(m, (value, key) => value * 2 + key).reduce(math.add) === 13)\n let numberOfWrites = 0\n const createT = () => {\n numberOfWrites++\n return {}\n }\n map.setIfUndefined(m, 3, createT)\n map.setIfUndefined(m, 3, createT)\n map.setIfUndefined(m, 3, createT)\n t.compare(map.copy(m), m)\n t.assert(numberOfWrites === 1)\n}\n","import * as eventloop from './eventloop.js'\nimport * as t from './testing.js'\nimport * as promise from './promise.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEventloopOrder = tc => {\n let currI = 0\n for (let i = 0; i < 10; i++) {\n const bi = i\n eventloop.enqueue(() => {\n t.assert(currI++ === bi)\n })\n }\n eventloop.enqueue(() => {\n t.assert(currI === 10)\n })\n t.assert(currI === 0)\n return promise.all([\n promise.createEmpty(resolve => eventloop.enqueue(resolve)),\n promise.until(0, () => currI === 10)\n ])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTimeout = async tc => {\n let set = false\n const timeout = eventloop.timeout(0, () => {\n set = true\n })\n timeout.destroy()\n await promise.create(resolve => {\n eventloop.timeout(10, resolve)\n })\n t.assert(set === false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInterval = async tc => {\n let set = false\n const timeout = eventloop.interval(1, () => {\n set = true\n })\n timeout.destroy()\n let i = 0\n eventloop.interval(1, () => {\n i++\n })\n await promise.until(0, () => i > 2)\n t.assert(set === false)\n t.assert(i > 1)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnimationFrame = async tc => {\n let x = false\n eventloop.animationFrame(() => { x = true })\n await promise.until(0, () => x)\n t.assert(x)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIdleCallback = async tc => {\n await promise.create(resolve => {\n eventloop.idleCallback(resolve)\n })\n}\n","import * as time from './time.js'\nimport * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTime = tc => {\n const l = time.getDate().getTime()\n const r = time.getUnixTime()\n t.assert(math.abs(l - r) < 10, 'Times generated are roughly the same')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testHumanDuration = tc => {\n t.assert(time.humanizeDuration(10) === '10ms')\n t.assert(time.humanizeDuration(0.1) === '100μs')\n t.assert(time.humanizeDuration(61030) === '1min 1s')\n t.assert(time.humanizeDuration(60030) === '1min')\n t.assert(time.humanizeDuration(3600000) === '1h')\n t.assert(time.humanizeDuration(3640000) === '1h 1min')\n t.assert(time.humanizeDuration(3700000) === '1h 2min')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 29000) === '1h')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 31000) === '1h 1min')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 31000 * 3) === '1h 2min')\n t.assert(time.humanizeDuration(3600000 * 25) === '1d 1h')\n t.assert(time.humanizeDuration(3600000 * 24.6) === '1d 1h')\n t.assert(time.humanizeDuration(3600000 * 25.6) === '1d 2h')\n t.assert(time.humanizeDuration(3600000 * 24 * 400) === '400d')\n // test round\n t.assert(time.humanizeDuration(6001) === '6s')\n}\n","import * as t from './testing.js'\nimport * as pair from './pair.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testPair = tc => {\n const ps = [pair.create(1, 2), pair.create(3, 4), pair.createReversed(6, 5)]\n t.describe('Counting elements in pair list')\n let countLeft = 0\n let countRight = 0\n pair.forEach(ps, (left, right) => {\n countLeft += left\n countRight += right\n })\n t.assert(countLeft === 9)\n t.assert(countRight === 12)\n t.assert(countLeft === pair.map(ps, left => left).reduce(math.add))\n t.assert(countRight === pair.map(ps, (left, right) => right).reduce(math.add))\n}\n","import * as t from './testing.js'\nimport * as object from './object.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testObject = tc => {\n t.assert(object.create().constructor === undefined, 'object.create creates an empty object without constructor')\n t.describe('object.equalFlat')\n t.assert(object.equalFlat({}, {}), 'comparing equal objects')\n t.assert(object.equalFlat({ x: 1 }, { x: 1 }), 'comparing equal objects')\n t.assert(object.equalFlat({ x: 'dtrn' }, { x: 'dtrn' }), 'comparing equal objects')\n t.assert(!object.equalFlat({ x: {} }, { x: {} }), 'flatEqual does not dive deep')\n t.assert(object.equalFlat({ x: undefined }, { x: undefined }), 'flatEqual handles undefined')\n t.assert(!object.equalFlat({ x: undefined }, { y: {} }), 'flatEqual handles undefined')\n t.describe('object.every')\n t.assert(object.every({ a: 1, b: 3 }, (v, k) => (v % 2) === 1 && k !== 'c'))\n t.assert(!object.every({ a: 1, b: 3, c: 5 }, (v, k) => (v % 2) === 1 && k !== 'c'))\n t.describe('object.some')\n t.assert(object.some({ a: 1, b: 3 }, (v, k) => v === 3 && k === 'b'))\n t.assert(!object.some({ a: 1, b: 5 }, (v, k) => v === 3))\n t.assert(object.some({ a: 1, b: 5 }, () => true))\n t.assert(!object.some({ a: 1, b: 5 }, (v, k) => false))\n t.describe('object.forEach')\n let forEachSum = 0\n object.forEach({ x: 1, y: 3 }, (v, k) => { forEachSum += v })\n t.assert(forEachSum === 4)\n t.describe('object.map')\n t.assert(object.map({ x: 1, z: 5 }, (v, k) => v).reduce(math.add) === 6)\n t.describe('object.length')\n t.assert(object.length({}) === 0)\n t.assert(object.length({ x: 1 }) === 1)\n}\n","import * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMath = tc => {\n t.describe('math.abs')\n t.assert(math.abs(-1) === 1)\n t.assert(math.abs(Number.MIN_SAFE_INTEGER) === Number.MAX_SAFE_INTEGER)\n t.assert(math.abs(Number.MAX_SAFE_INTEGER) === Number.MAX_SAFE_INTEGER)\n t.describe('math.add')\n t.assert([1, 2, 3, 4, 5].reduce(math.add) === 15)\n t.describe('math.ceil')\n t.assert(math.ceil(1.5) === 2)\n t.assert(math.ceil(-1.5) === -1)\n t.describe('math.floor')\n t.assert(math.floor(1.5) === 1)\n t.assert(math.floor(-1.5) === -2)\n t.describe('math.isNaN')\n t.assert(math.isNaN(NaN))\n // @ts-ignore\n t.assert(!math.isNaN(null))\n t.describe('math.max')\n t.assert([1, 3, 65, 1, 314, 25, 3475, 2, 1].reduce(math.max) === 3475)\n t.describe('math.min')\n t.assert([1, 3, 65, 1, 314, 25, 3475, 2, 1].reduce(math.min) === 1)\n t.describe('math.round')\n t.assert(math.round(0.5) === 1)\n t.assert(math.round(-0.5) === 0)\n}\n","import * as t from './testing.js'\nimport * as number from './number.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testNumber = tc => {\n t.describe('isNaN')\n t.assert(number.isNaN(NaN))\n t.assert(!number.isNaN(1 / 0))\n // @ts-ignore\n t.assert(number.isNaN('a' / 0))\n t.assert(!number.isNaN(0))\n t.describe('isInteger')\n t.assert(!number.isInteger(1 / 0))\n t.assert(!number.isInteger(NaN))\n t.assert(number.isInteger(0))\n t.assert(number.isInteger(-1))\n}\n","import * as t from './testing.js'\nimport * as buffer from './buffer.js'\nimport * as prng from './prng.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatBase64Encoding = tc => {\n const gen = tc.prng\n const barr = prng.uint8Array(gen, 100000)\n const copied = buffer.copyUint8Array(barr)\n const encoded = buffer.toBase64(barr)\n t.assert(encoded.constructor === String)\n const decoded = buffer.fromBase64(encoded)\n t.assert(decoded.constructor === Uint8Array)\n t.assert(decoded.byteLength === barr.byteLength)\n for (let i = 0; i < barr.length; i++) {\n t.assert(barr[i] === decoded[i])\n }\n t.compare(copied, decoded)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncoding = tc => {\n const obj = { val: 1, arr: [1, 2], str: '409231dtrnä' }\n const res = buffer.decodeAny(buffer.encodeAny(obj))\n t.compare(obj, res)\n}\n","/**\n * Efficient sort implementations.\n *\n * Note: These sort implementations were created to compare different sorting algorithms in JavaScript.\n * Don't use them if you don't know what you are doing. Native Array.sort is almost always a better choice.\n *\n * @module sort\n */\n\nimport * as math from './math.js'\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {number} lo\n * @param {number} hi\n * @param {function(T,T):number} compare\n */\nexport const _insertionSort = (arr, lo, hi, compare) => {\n for (let i = lo + 1; i <= hi; i++) {\n for (let j = i; j > 0 && compare(arr[j - 1], arr[j]) > 0; j--) {\n const tmp = arr[j]\n arr[j] = arr[j - 1]\n arr[j - 1] = tmp\n }\n }\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @return {void}\n */\nexport const insertionSort = (arr, compare) => {\n _insertionSort(arr, 0, arr.length - 1, compare)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {number} lo\n * @param {number} hi\n * @param {function(T,T):number} compare\n */\nconst _quickSort = (arr, lo, hi, compare) => {\n if (hi - lo < 42) {\n _insertionSort(arr, lo, hi, compare)\n } else {\n const pivot = arr[math.floor((lo + hi) / 2)]\n let i = lo\n let j = hi\n while (true) {\n while (compare(pivot, arr[i]) > 0) {\n i++\n }\n while (compare(arr[j], pivot) > 0) {\n j--\n }\n if (i >= j) {\n break\n }\n // swap arr[i] with arr[j]\n // and increment i and j\n const arri = arr[i]\n arr[i++] = arr[j]\n arr[j--] = arri\n }\n _quickSort(arr, lo, j, compare)\n _quickSort(arr, j + 1, hi, compare)\n }\n}\n\n/**\n * This algorithm beats Array.prototype.sort in Chrome only with arrays with 10 million entries.\n * In most cases [].sort will do just fine. Make sure to performance test your use-case before you\n * integrate this algorithm.\n *\n * Note that Chrome's sort is now a stable algorithm (Timsort). Quicksort is not stable.\n *\n * @template T\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @return {void}\n */\nexport const quicksort = (arr, compare) => {\n _quickSort(arr, 0, arr.length - 1, compare)\n}\n","import * as prng from './prng.js'\nimport * as t from './testing.js'\nimport * as sort from './sort.js'\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @param {function(T):number} getVal\n */\nconst runSortTest = (tc, arr, compare, getVal) => {\n const arrSort = arr\n const arrQuicksort = arr.slice()\n const arrInsertionsort = arr.slice()\n t.measureTime('Array.constructor.sort', () => {\n arrSort.sort(compare)\n })\n if (arrInsertionsort.length <= 10000) {\n t.measureTime('Insertionsort', () => {\n sort.insertionSort(arrInsertionsort, compare)\n })\n t.compareArrays(arrSort, arrInsertionsort, 'compare Insertionsort with expected result')\n }\n t.measureTime('Quicksort', () => {\n sort.quicksort(arrQuicksort, compare)\n })\n // quickSort is not stable\n t.compareArrays(arrSort.map(getVal), arrQuicksort.map(getVal), 'compare Quicksort with expected result')\n}\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {function(number):Array<T>} createArray\n * @param {function(T,T):number} compare 0 if equal, 1 if a<b, -1 otherwise\n * @param {function(T):number} getVal\n */\nconst createSortTest = (tc, createArray, compare, getVal) => {\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 50 elements')\n runSortTest(tc, createArray(50), compare, getVal)\n t.describe('sort 100 elements')\n runSortTest(tc, createArray(100), compare, getVal)\n t.describe('sort 500 elements')\n runSortTest(tc, createArray(500), compare, getVal)\n t.describe('sort 1k elements')\n runSortTest(tc, createArray(1000), compare, getVal)\n t.describe('sort 10k elements')\n runSortTest(tc, createArray(10000), compare, getVal)\n t.describe('sort 100k elements')\n runSortTest(tc, createArray(100000), compare, getVal)\n if (t.extensive) {\n t.describe('sort 1M elements')\n runSortTest(tc, createArray(1000000), compare, getVal)\n t.describe('sort 10M elements')\n runSortTest(tc, createArray(10000000), compare, getVal)\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortUint16 = tc => {\n t.skip(!t.production)\n /**\n * @param {number} i\n * @return {number}\n */\n const getVal = i => i\n /**\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n const compare = (a, b) => a - b\n /**\n * @param {number} len\n * @return {Array<number>}\n */\n const createArray = len => Array.from(new Uint16Array(prng.uint8Array(tc.prng, len * 2)))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortUint32 = tc => {\n t.skip(!t.production)\n /**\n * @param {number} i\n * @return {number}\n */\n const getVal = i => i\n /**\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n const compare = (a, b) => a - b\n /**\n * @param {number} len\n * @return {Array<number>}\n */\n const createArray = len => Array.from(prng.uint32Array(tc.prng, len))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortObjectUint32 = tc => {\n /**\n * @param {{index:number}} obj\n * @return {number}\n */\n const getVal = obj => obj.index\n /**\n * @param {{index:number}} a\n * @param {{index:number}} b\n * @return {number}\n */\n const compare = (a, b) => a.index - b.index\n /**\n * @param {number} len\n * @return {Array<{index:number}>}\n */\n const createArray = len => Array.from(prng.uint32Array(tc.prng, len)).map(index => ({ index }))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testListVsArrayPerformance = tc => {\n /**\n * @typedef {{ val: number }} Val\n * @typedef {{ val: Val, next: item }|null} item\n */\n const len = 100000\n t.measureTime('array creation', () => {\n /**\n * @type {Array<Val>}\n */\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = { val: i }\n }\n })\n t.measureTime('list creation', () => {\n /**\n * @type {item}\n */\n const listStart = { val: { val: 0 }, next: null }\n for (let i = 1, n = listStart; i < len; i++) {\n const next = { val: { val: i }, next: null }\n n.next = next\n n = next\n }\n })\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object<string,string>}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object<string,string>}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (var i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object<string,string>} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","import * as t from './testing.js'\nimport * as url from './url.js'\n\n/**\n * @param {Object<string,any>} params\n */\nconst paramTest = params => {\n const out = url.decodeQueryParams(url.encodeQueryParams(params))\n t.compareObjects(params, out, 'Compare params')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUrlParamQuery = tc => {\n paramTest({})\n paramTest({ a: '4' })\n paramTest({ a: 'dtrn', b: '0x0' })\n\n t.compareObjects({ }, url.decodeQueryParams('http://localhost:8080/dtrn?'))\n t.compareObjects({ a: 'ay' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay'))\n t.compareObjects({ a: '' }, url.decodeQueryParams('http://localhost:8080/dtrn?a='))\n t.compareObjects({ a: '' }, url.decodeQueryParams('http://localhost:8080/dtrn?a'))\n t.compareObjects({ a: 'ay' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay&'))\n t.compareObjects({ a: 'ay', b: 'bey' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay&b=bey'))\n}\n","import * as t from './testing.js'\nimport * as metric from './metric.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMetricPrefix = tc => {\n t.compare(metric.prefix(0), { n: 0, prefix: '' })\n t.compare(metric.prefix(1, -1), { n: 1, prefix: 'm' })\n t.compare(metric.prefix(1.5), { n: 1.5, prefix: '' })\n t.compare(metric.prefix(100.5), { n: 100.5, prefix: '' })\n t.compare(metric.prefix(1000.5), { n: 1.0005, prefix: 'k' })\n t.compare(metric.prefix(0.3), { n: 300, prefix: 'm' })\n t.compare(metric.prefix(0.001), { n: 1, prefix: 'm' })\n // up\n t.compare(metric.prefix(10000), { n: 10, prefix: 'k' })\n t.compare(metric.prefix(1e7), { n: 10, prefix: 'M' })\n t.compare(metric.prefix(1e11), { n: 100, prefix: 'G' })\n t.compare(metric.prefix(1e12 + 3), { n: (1e12 + 3) / 1e12, prefix: 'T' })\n t.compare(metric.prefix(1e15), { n: 1, prefix: 'P' })\n t.compare(metric.prefix(1e20), { n: 100, prefix: 'E' })\n t.compare(metric.prefix(1e22), { n: 10, prefix: 'Z' })\n t.compare(metric.prefix(1e24), { n: 1, prefix: 'Y' })\n t.compare(metric.prefix(1e28), { n: 10000, prefix: 'Y' })\n // down\n t.compare(metric.prefix(0.01), { n: 10, prefix: 'm' })\n t.compare(metric.prefix(1e-4), { n: 100, prefix: 'μ' })\n t.compare(metric.prefix(1e-9), { n: 1, prefix: 'n' })\n t.compare(metric.prefix(1e-12), { n: 1, prefix: 'p' })\n t.compare(metric.prefix(1e-14), { n: 10, prefix: 'f' })\n t.compare(metric.prefix(1e-18), { n: 1, prefix: 'a' })\n t.compare(metric.prefix(1e-21), { n: 1, prefix: 'z' })\n t.compare(metric.prefix(1e-22), { n: 100, prefix: 'y' })\n t.compare(metric.prefix(1e-30), { n: 0.000001, prefix: 'y' })\n}\n","import * as f from './function.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeepEquality = tc => {\n t.assert(f.equalityDeep(1, 1))\n t.assert(!f.equalityDeep(1, 2))\n t.assert(!f.equalityDeep(1, '1'))\n t.assert(!f.equalityDeep(1, null))\n\n const obj = { b: 5 }\n const map1 = new Map()\n const map2 = new Map()\n const map3 = new Map()\n const map4 = new Map()\n map1.set('a', obj)\n map2.set('a', { b: 5 })\n map3.set('b', obj)\n map4.set('a', obj)\n map4.set('b', obj)\n\n t.assert(f.equalityDeep({ a: 4 }, { a: 4 }))\n t.assert(f.equalityDeep({ a: 4, obj: { b: 5 } }, { a: 4, obj }))\n t.assert(!f.equalityDeep({ a: 4 }, { a: 4, obj }))\n t.assert(f.equalityDeep({ a: [], obj }, { a: [], obj }))\n t.assert(!f.equalityDeep({ a: [], obj }, { a: [], obj: undefined }))\n\n t.assert(f.equalityDeep({}, {}))\n t.assert(!f.equalityDeep({}, { a: 4 }))\n\n t.assert(f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 1]))\n t.assert(!f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 2]))\n t.assert(!f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 1, 3]))\n t.assert(f.equalityDeep([], []))\n t.assert(!f.equalityDeep([1], []))\n\n t.assert(f.equalityDeep(map1, map2))\n t.assert(!f.equalityDeep(map1, map3))\n t.assert(!f.equalityDeep(map1, map4))\n\n const set1 = new Set([1])\n const set2 = new Set([true])\n const set3 = new Set([1, true])\n const set4 = new Set([true])\n\n t.assert(f.equalityDeep(set2, set4))\n t.assert(!f.equalityDeep(set1, set2))\n t.assert(!f.equalityDeep(set1, set3))\n t.assert(!f.equalityDeep(set1, set4))\n t.assert(!f.equalityDeep(set2, set3))\n t.assert(f.equalityDeep(set2, set4))\n\n const buf1 = Uint8Array.from([1, 2])\n const buf2 = Uint8Array.from([1, 3])\n const buf3 = Uint8Array.from([1, 2, 3])\n const buf4 = Uint8Array.from([1, 2])\n\n t.assert(!f.equalityDeep(buf1, buf2))\n t.assert(!f.equalityDeep(buf2, buf3))\n t.assert(!f.equalityDeep(buf3, buf4))\n t.assert(f.equalityDeep(buf4, buf1))\n\n t.assert(!f.equalityDeep(buf1.buffer, buf2.buffer))\n t.assert(!f.equalityDeep(buf2.buffer, buf3.buffer))\n t.assert(!f.equalityDeep(buf3.buffer, buf4.buffer))\n t.assert(f.equalityDeep(buf4.buffer, buf1.buffer))\n\n t.assert(!f.equalityDeep(buf1, buf4.buffer))\n}\n","import { runTests } from './testing.js'\nimport * as array from './array.test.js'\nimport * as logging from './logging.test.js'\nimport * as string from './string.test.js'\nimport * as encoding from './encoding.test.js'\nimport * as diff from './diff.test.js'\nimport * as testing from './testing.test.js'\nimport * as indexeddb from './indexeddb.test.js'\nimport * as prng from './prng.test.js'\nimport * as log from './logging.js'\nimport * as statistics from './statistics.test.js'\nimport * as binary from './binary.test.js'\nimport * as random from './random.test.js'\nimport * as promise from './promise.test.js'\nimport * as queue from './queue.test.js'\nimport * as map from './map.test.js'\nimport * as eventloop from './eventloop.test.js'\nimport * as time from './time.test.js'\nimport * as pair from './pair.test.js'\nimport * as object from './object.test.js'\nimport * as math from './math.test.js'\nimport * as number from './number.test.js'\nimport * as buffer from './buffer.test.js'\nimport * as sort from './sort.test.js'\nimport * as url from './url.test.js'\nimport * as metric from './metric.test.js'\nimport * as func from './function.test.js'\n\nimport { isBrowser, isNode } from './environment.js'\n\n/* istanbul ignore if */\nif (isBrowser) {\n log.createVConsole(document.body)\n}\n\nrunTests({\n array,\n logging,\n string,\n encoding,\n diff,\n testing,\n indexeddb,\n prng,\n statistics,\n binary,\n random,\n promise,\n queue,\n map,\n eventloop,\n time,\n pair,\n object,\n math,\n number,\n buffer,\n sort,\n url,\n metric,\n func\n}).then(success => {\n /* istanbul ignore next */\n if (isNode) {\n process.exit(success ? 0 : 1)\n }\n})\n"],"names":["map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","create","map","pair.forEach","addEventListener","map.map","math.log10","math.round","math.exp10","metric.prefix","math.floor","forEach","every","equalFlat","array.equalFlat","object.equalFlat","object.length","object.hasProperty","symbol.create","pair.create","dom.mapToStyleString","env.isNode","env.isBrowser","dom.element","dom.text","json.stringify","eventloop.enqueue","dom.append","dom.addEventListener","binary.BITS32","binary.BITS31","isNaN","length","buffer.createUint8ArrayViewFromArrayBuffer","math.max","binary.BITS8","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","math.min","number.isInteger","string.fromCharCode","encoding.createEncoder","encoding.writeAny","encoding.toUint8Array","decoding.readAny","decoding.createDecoder","math.abs","uint32","buffer.createUint8ArrayFromLen","math.ceil","math.add","time.getUnixTime","env.hasConf","env.hasParam","env.getParam","random.uint32","prng.create","log.GREY","log.PURPLE","log.BLUE","log.groupCollapsed","log.group","promise.isPromise","log.printError","log.groupEnd","time.humanizeDuration","array.last","statistics.median","statistics.average","log.print","log.BOLD","log.UNBOLD","log.RED","log.UNCOLOR","log.GREEN","printCanvas","log.printCanvas","group","object.forEach","object.map","log.printImgBase64","array.appendTo","t.compareArrays","array.flatten","log.ORANGE","t.compareStrings","t.skip","string.utf8TextDecoder","prng.utf16String","t.measureTime","string._encodeUtf8Native","string._encodeUtf8Polyfill","t.compare","string.encodeUtf8","string._decodeUtf8Native","string._decodeUtf8Polyfill","t.assert","prng.int53","number.MIN_SAFE_INTEGER","number.MAX_SAFE_INTEGER","number.LOWEST_INT32","number.HIGHEST_INT32","prng.real53","prng.uint32","prng.uint8Array","prng.oneOf","encoding.writeVarUint","utf8ByteLength","string.utf8ByteLength","encoding.length","t.describe","encoding.writeVarString","decoding.peekVarString","decoding.readVarString","string.decodeUtf8","decoding.readVarUint","encoding.writeVarInt","decoding.readVarInt","prng.int32","decoding.peekVarUint","decoding.peekVarInt","t.info","encoding.writeUint8","encoding.writeUint16","encoding.writeUint32","encoding.setUint8","encoding.setUint16","encoding.setUint32","decoding.peekUint8","decoding.readUint8","decoding.peekUint16","decoding.readUint16","decoding.peekUint32","decoding.readUint32","decoding.readUint8Array","encoding.writeUint8Array","decoding.readVarUint8Array","encoding.writeVarUint8Array","binary.BITS16","decoding.readUint32BigEndian","encoding.writeUint32BigEndian","prng.uint53","decoding.readTailAsUint8Array","encoding.write","buffer.createUint8ArrayFromArrayBuffer","decoding.hasContent","decoding.skip8","decoding.clone","encoding.writeBinaryEncoder","encoding.RleEncoder","decoding.RleDecoder","encoding.RleIntDiffEncoder","decoding.RleIntDiffDecoder","encoding.UintOptRleEncoder","decoding.UintOptRleDecoder","encoding.IntDiffOptRleEncoder","decoding.IntDiffOptRleDecoder","encoding.IntDiffEncoder","decoding.IntDiffDecoder","char","prng.char","prng.word","encoding.StringEncoder","decoding.StringDecoder","object.assign","f.equalityFlat","f.equalityStrict","t.fails","t.compareObjects","t.fail","t.measureTimeAsync","promise.create","t.groupAsync","promise.wait","error.create","add","promise.all","idb.createStores","getStore","idb.getStore","idb.deleteDB","idb.openDB","idb.put","idb.getAll","idb.getAllKeys","idb.getAllKeysValues","idb.iterate","idb.iterateKeys","idb.createIDBKeyRangeBound","idb.get","idb.del","idb.add","idb.addAutoKey","math.imul","t.group","prng.bool","binary.BIT32","binary.BIT31","canvas","dom.canvas","t.printCanvas","math.isNaN","binary.BITS0","random.uuidv4","t.production","t.extensive","promise.createEmpty","promise.resolve","promise.reject","promise.until","enqueue","queue.QueueNode","queue.create","queue.isEmpty","queue.dequeue","queue.enqueue","map.setIfUndefined","map.copy","timeout","eventloop.timeout","eventloop.interval","eventloop.animationFrame","eventloop.idleCallback","time.getDate","pair.createReversed","pair.map","object.create","object.every","object.some","number.isNaN","buffer.copyUint8Array","buffer.toBase64","buffer.fromBase64","buffer.decodeAny","buffer.encodeAny","sort.insertionSort","sort.quicksort","prng.uint32Array","url.decodeQueryParams","url.encodeQueryParams","f.equalityDeep","log.createVConsole","binary","queue"],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sources":["../map.js","../string.js","../conditions.js","../storage.js","../environment.js","../symbol.js","../pair.js","../dom.js","../json.js","../eventloop.js","../math.js","../metric.js","../time.js","../array.js","../object.js","../function.js","../logging.js","../diff.js","../node_modules/isomorphic.js/browser.mjs","../random.js","../binary.js","../prng/Xorshift32.js","../prng/Xoroshiro128plus.js","../number.js","../encoding.js","../decoding.js","../buffer.js","../prng.js","../statistics.js","../promise.js","../testing.js","../array.test.js","../logging.test.js","../string.test.js","../encoding.test.js","../diff.test.js","../testing.test.js","../error.js","../indexeddb.js","../indexeddb.test.js","../prng/Mt19937.js","../prng.test.js","../statistics.test.js","../binary.test.js","../random.test.js","../promise.test.js","../queue.js","../queue.test.js","../map.test.js","../eventloop.test.js","../time.test.js","../pair.test.js","../object.test.js","../math.test.js","../number.test.js","../buffer.test.js","../sort.js","../sort.test.js","../url.js","../url.test.js","../metric.test.js","../function.test.js","../storage.test.js","../test.js"],"sourcesContent":["/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template X,Y\n * @param {Map<X,Y>} m\n * @return {Map<X,Y>}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template T,K\n * @param {Map<K, T>} map\n * @param {K} key\n * @param {function():T} createT\n * @return {T}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* istanbul ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* istanbul ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* istanbul ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* istanbul ignore next */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* istanbul ignore next */\n utf8TextDecoder = null\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* istanbul ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* istanbul ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* global localStorage, addEventListener */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* istanbul ignore next */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n\n/* istanbul ignore next */\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n /* istanbul ignore next */\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n\n/* istanbul ignore next */\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\nexport const varStorage = _localStorage\n\n/* istanbul ignore next */\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair<L,R>}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair<L,R>}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):X} f\n * @return {Array<X>}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* istanbul ignore next */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const createTextNode = text => doc.createTextNode(text)\n\n/* istanbul ignore next */\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\n/* istanbul ignore next */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\n/* istanbul ignore next */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\n/* istanbul ignore next */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\n/* istanbul ignore next */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\n/* istanbul ignore next */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\n/* istanbul ignore next */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\n/* istanbul ignore next */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\n/* istanbul ignore next */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\n/* istanbul ignore next */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\n/* istanbul ignore next */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\n/* istanbul ignore next */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\n/* istanbul ignore next */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\n/* istanbul ignore next */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\n/* istanbul ignore next */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\n/* istanbul ignore next */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array<function>}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* istanbul ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/* istanbul ignore next */\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* istanbul ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/* istanbul ignore next */\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility module to convert metric values.\n *\n * @module metric\n */\n\nimport * as math from './math.js'\n\nexport const yotta = 1e24\nexport const zetta = 1e21\nexport const exa = 1e18\nexport const peta = 1e15\nexport const tera = 1e12\nexport const giga = 1e9\nexport const mega = 1e6\nexport const kilo = 1e3\nexport const hecto = 1e2\nexport const deca = 10\nexport const deci = 0.1\nexport const centi = 0.01\nexport const milli = 1e-3\nexport const micro = 1e-6\nexport const nano = 1e-9\nexport const pico = 1e-12\nexport const femto = 1e-15\nexport const atto = 1e-18\nexport const zepto = 1e-21\nexport const yocto = 1e-24\n\nconst prefixUp = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']\nconst prefixDown = ['', 'm', 'μ', 'n', 'p', 'f', 'a', 'z', 'y']\n\n/**\n * Calculate the metric prefix for a number. Assumes E.g. `prefix(1000) = { n: 1, prefix: 'k' }`\n *\n * @param {number} n\n * @param {number} [baseMultiplier] Multiplier of the base (10^(3*baseMultiplier)). E.g. `convert(time, -3)` if time is already in milli seconds\n * @return {{n:number,prefix:string}}\n */\nexport const prefix = (n, baseMultiplier = 0) => {\n const nPow = n === 0 ? 0 : math.log10(n)\n let mult = 0\n while (nPow < mult * 3 && baseMultiplier > -8) {\n baseMultiplier--\n mult--\n }\n while (nPow >= 3 + mult * 3 && baseMultiplier < 8) {\n baseMultiplier++\n mult++\n }\n const prefix = baseMultiplier < 0 ? prefixDown[-baseMultiplier] : prefixUp[baseMultiplier]\n return {\n n: math.round((mult > 0 ? n / math.exp10(mult * 3) : n * math.exp10(mult * -3)) * 1e12) / 1e12,\n prefix\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* istanbul ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {Array<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n *\n * @param {Array<ITEM>} arr\n * @param {function(ITEM, number, Array<ITEM>):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => arr.every(f)\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @param {Array<S>} arr\n * @param {function(S, number, Array<S>):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => arr.some(f)\n\n/**\n * @template ELEM\n *\n * @param {Array<ELEM>} a\n * @param {Array<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => arr.reduce((acc, val) => acc.concat(val), [])\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((a instanceof Array && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as symbol from './symbol.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as time from './time.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [BOLD]: pair.create('font-weight', 'bold'),\n [UNBOLD]: pair.create('font-weight', 'normal'),\n [BLUE]: pair.create('color', 'blue'),\n [GREEN]: pair.create('color', 'green'),\n [GREY]: pair.create('color', 'grey'),\n [RED]: pair.create('color', 'red'),\n [PURPLE]: pair.create('color', 'purple'),\n [ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [UNCOLOR]: pair.create('color', 'black')\n}\n\nconst _nodeStyleMap = {\n [BOLD]: '\\u001b[1m',\n [UNBOLD]: '\\u001b[2m',\n [BLUE]: '\\x1b[34m',\n [GREEN]: '\\x1b[32m',\n [GREY]: '\\u001b[37m',\n [RED]: '\\x1b[31m',\n [PURPLE]: '\\x1b[35m',\n [ORANGE]: '\\x1b[38;5;208m',\n [UNCOLOR]: '\\x1b[0m'\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nconst computeBrowserLoggingArgs = args => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nconst computeNodeLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n\n // try with formatting until we find something unsupported\n let i = 0\n\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n /* istanbul ignore else */\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n\n/* istanbul ignore next */\nconst computeLoggingArgs = env.isNode ? computeNodeLoggingArgs : computeBrowserLoggingArgs\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(ORANGE)\n vconsoles.forEach(vc => vc.print(args))\n}\n\n/* istanbul ignore next */\n/**\n * @param {Error} err\n */\nexport const printError = err => {\n console.error(err)\n vconsoles.forEach(vc => vc.printError(err))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log('%c ', `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`)\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach(vc => vc.printImg(url, height))\n}\n\n/* istanbul ignore next */\n/**\n * @param {string} base64\n * @param {number} height\n */\nexport const printImgBase64 = (base64, height) => printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* istanbul ignore next */\n vconsoles.forEach(vc => vc.groupEnd())\n}\n\n/* istanbul ignore next */\n/**\n * @param {function():Node} createNode\n */\nexport const printDom = createNode =>\n vconsoles.forEach(vc => vc.printDom(createNode()))\n\n/* istanbul ignore next */\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\nexport const printCanvas = (canvas, height) => printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = new Set()\n\n/* istanbul ignore next */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\nconst _computeLineSpans = args => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [pair.create('style', dom.mapToStyleString(currentStyle))], [dom.text(arg)])\n if (span.innerHTML === '') {\n span.innerHTML = '&nbsp;'\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(dom.element('span', [], [dom.text(/** @type {string} */ (content))]))\n }\n }\n return spans\n}\n\nconst lineStyle = 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* istanbul ignore next */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [pair.create('hidden', collapsed), pair.create('style', 'color:grey;font-size:120%;')], [dom.text('▼')])\n const triangleRight = dom.element('span', [pair.create('hidden', !collapsed), pair.create('style', 'color:grey;font-size:125%;')], [dom.text('▶')])\n const content = dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], [triangleDown, triangleRight, dom.text(' ')].concat(_computeLineSpans(args)))\n const nextContainer = dom.element('div', [pair.create('hidden', collapsed)])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', event => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('div', [pair.create('style', `${lineStyle};padding-left:${this.depth * 10}px`)], _computeLineSpans(args))])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([RED, BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [dom.element('img', [pair.create('src', url), pair.create('height', `${math.round(height * 1.5)}px`)])])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n\n/* istanbul ignore next */\n/**\n * @param {Element} dom\n */\nexport const createVConsole = dom => new VConsole(dom)\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = moduleName => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null && (debugRegexVar === '*' || debugRegexVar === 'true' || new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n\n return !doLogging ? func.nop : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n print(color, moduleName, UNCOLOR, ...args.map(arg => (typeof arg === 'string' || typeof arg === 'symbol') ? arg : JSON.stringify(arg)), color, ' +' + timeDiff + 'ms')\n }\n}\n","/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n","/* eslint-env browser */\nexport const performance = typeof window === 'undefined' ? null : (typeof window.performance !== 'undefined' && window.performance) || null\n\nconst isoCrypto = typeof crypto === 'undefined' ? null : crypto\n\n/**\n * @type {function(number):ArrayBuffer}\n */\nexport const cryptoRandomBuffer = isoCrypto !== null\n ? len => {\n // browser\n const buf = new ArrayBuffer(len)\n const arr = new Uint8Array(buf)\n isoCrypto.getRandomValues(arr)\n return buf\n }\n : len => {\n // polyfill\n const buf = new ArrayBuffer(len)\n const arr = new Uint8Array(buf)\n for (let i = 0; i < len; i++) {\n arr[i] = Math.ceil((Math.random() * 0xFFFFFFFF) >>> 0)\n }\n return buf\n }\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\n\n/* istanbul ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array<Uint8Array>}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nconst verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(buffer.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer.\n *\n * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num >>>= 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * Encodes integers in the range from [-2147483648, -2147483647].\n *\n * We don't use zig-zag encoding because we want to keep the option open\n * to use the same function for BigInt and 53bit integers (doubles).\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num >>>= 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num >>>= 7\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeVarString = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object<string,any>|Array<any>|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && data <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (data instanceof Array) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n /* istanbul ignore else */\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array<string>}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as buffer from './buffer.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = buffer.createUint8ArrayViewFromArrayBuffer(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let len = 0\n while (true) {\n const r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return num >>> 0 // return unsigned number!\n }\n /* istanbul ignore if */\n if (len > 35) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let len = 6\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n while (true) {\n r = decoder.arr[decoder.pos++]\n num = num | ((r & binary.BITS7) << len)\n len += 7\n if (r < binary.BIT8) {\n return sign * (num >>> 0)\n }\n /* istanbul ignore if */\n if (len > 41) {\n throw new Error('Integer out of range!')\n }\n }\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\nexport const readVarString = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0, false)\n\n/**\n * @type {Array<function(Decoder):any>}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object<string,any>\n const len = readVarUint(decoder)\n /**\n * @type {Object<string,any>}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array<any>\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = diff >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* istanbul ignore next */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* istanbul ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* istanbul ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A 32bit integer\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\n\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n","/**\n * Utility helpers for generating statistics.\n *\n * @module statistics\n */\n\nimport * as math from './math.js'\n\n/**\n * @param {Array<number>} arr Array of values\n * @return {number} Returns null if the array is empty\n */\nexport const median = arr => arr.length === 0 ? NaN : (arr.length % 2 === 1 ? arr[(arr.length - 1) / 2] : (arr[math.floor((arr.length - 1) / 2)] + arr[math.ceil((arr.length - 1) / 2)]) / 2)\n\n/**\n * @param {Array<number>} arr\n * @return {number}\n */\nexport const average = arr => arr.reduce(math.add, 0) / arr.length\n","/**\n * Utility helpers to work with promises.\n *\n * @module promise\n */\n\nimport * as time from './time.js'\n\n/**\n * @template T\n * @callback PromiseResolve\n * @param {T|PromiseLike<T>} [result]\n */\n\n/**\n * @template T\n * @param {function(PromiseResolve<T>,function(Error):void):any} f\n * @return {Promise<T>}\n */\nexport const create = f => /** @type {Promise<T>} */ (new Promise(f))\n\n/**\n * @param {function(function():void,function(Error):void):void} f\n * @return {Promise<void>}\n */\nexport const createEmpty = f => new Promise(f)\n\n/**\n * `Promise.all` wait for all promises in the array to resolve and return the result\n * @template T\n * @param {Array<Promise<T>>} arrp\n * @return {Promise<Array<T>>}\n */\nexport const all = arrp => Promise.all(arrp)\n\n/**\n * @param {Error} [reason]\n * @return {Promise<never>}\n */\nexport const reject = reason => Promise.reject(reason)\n\n/**\n * @template T\n * @param {T|void} res\n * @return {Promise<T|void>}\n */\nexport const resolve = res => Promise.resolve(res)\n\n/**\n * @template T\n * @param {T} res\n * @return {Promise<T>}\n */\nexport const resolveWith = res => Promise.resolve(res)\n\n/**\n * @todo Next version, reorder parameters: check, [timeout, [intervalResolution]]\n *\n * @param {number} timeout\n * @param {function():boolean} check\n * @param {number} [intervalResolution]\n * @return {Promise<void>}\n */\nexport const until = (timeout, check, intervalResolution = 10) => create((resolve, reject) => {\n const startTime = time.getUnixTime()\n const hasTimeout = timeout > 0\n const untilInterval = () => {\n if (check()) {\n clearInterval(intervalHandle)\n resolve()\n } else if (hasTimeout) {\n /* istanbul ignore else */\n if (time.getUnixTime() - startTime > timeout) {\n clearInterval(intervalHandle)\n reject(new Error('Timeout'))\n }\n }\n }\n const intervalHandle = setInterval(untilInterval, intervalResolution)\n})\n\n/**\n * @param {number} timeout\n * @return {Promise<undefined>}\n */\nexport const wait = timeout => create((resolve, reject) => setTimeout(resolve, timeout))\n\n/**\n * Checks if an object is a promise using ducktyping.\n *\n * Promises are often polyfilled, so it makes sense to add some additional guarantees if the user of this\n * library has some insane environment where global Promise objects are overwritten.\n *\n * @param {any} p\n * @return {boolean}\n */\nexport const isPromise = p => p instanceof Promise || (p && p.then && p.catch && p.finally)\n","/**\n * Testing framework with support for generating tests.\n *\n * ```js\n * // test.js template for creating a test executable\n * import { runTests } from 'lib0/testing.js'\n * import * as log from 'lib0/logging.js'\n * import * as mod1 from './mod1.test.js'\n * import * as mod2 from './mod2.test.js'\n\n * import { isBrowser, isNode } from 'lib0/environment.js'\n *\n * if (isBrowser) {\n * // optional: if this is ran in the browser, attach a virtual console to the dom\n * log.createVConsole(document.body)\n * }\n *\n * runTests({\n * mod1,\n * mod2,\n * }).then(success => {\n * if (isNode) {\n * process.exit(success ? 0 : 1)\n * }\n * })\n * ```\n *\n * ```js\n * // mod1.test.js\n * /**\n * * runTests automatically tests all exported functions that start with \"test\".\n * * The name of the function should be in camelCase and is used for the logging output.\n * *\n * * @param {t.TestCase} tc\n * *\\/\n * export const testMyFirstTest = tc => {\n * t.compare({ a: 4 }, { a: 4 }, 'objects are equal')\n * }\n * ```\n *\n * Now you can simply run `node test.js` to run your test or run test.js in the browser.\n *\n * @module testing\n */\n\nimport * as log from './logging.js'\nimport { simpleDiffString } from './diff.js'\nimport * as object from './object.js'\nimport * as string from './string.js'\nimport * as math from './math.js'\nimport * as random from './random.js'\nimport * as prng from './prng.js'\nimport * as statistics from './statistics.js'\nimport * as array from './array.js'\nimport * as env from './environment.js'\nimport * as json from './json.js'\nimport * as time from './time.js'\nimport * as promise from './promise.js'\n\nimport { performance } from './isomorphic.js'\n\nexport { production } from './environment.js'\n\nexport const extensive = env.hasConf('extensive')\n\n/* istanbul ignore next */\nexport const envSeed = env.hasParam('--seed') ? Number.parseInt(env.getParam('--seed', '0')) : null\n\nexport class TestCase {\n /**\n * @param {string} moduleName\n * @param {string} testName\n */\n constructor (moduleName, testName) {\n /**\n * @type {string}\n */\n this.moduleName = moduleName\n /**\n * @type {string}\n */\n this.testName = testName\n this._seed = null\n this._prng = null\n }\n\n resetSeed () {\n this._seed = null\n this._prng = null\n }\n\n /**\n * @type {number}\n */\n /* istanbul ignore next */\n get seed () {\n /* istanbul ignore else */\n if (this._seed === null) {\n /* istanbul ignore next */\n this._seed = envSeed === null ? random.uint32() : envSeed\n }\n return this._seed\n }\n\n /**\n * A PRNG for this test case. Use only this PRNG for randomness to make the test case reproducible.\n *\n * @type {prng.PRNG}\n */\n get prng () {\n /* istanbul ignore else */\n if (this._prng === null) {\n this._prng = prng.create(this.seed)\n }\n return this._prng\n }\n}\n\nexport const repetitionTime = Number(env.getParam('--repetition-time', '50'))\n/* istanbul ignore next */\nconst testFilter = env.hasParam('--filter') ? env.getParam('--filter', '') : null\n\n/* istanbul ignore next */\nconst testFilterRegExp = testFilter !== null ? new RegExp(testFilter) : new RegExp('.*')\n\nconst repeatTestRegex = /^(repeat|repeating)\\s/\n\n/**\n * @param {string} moduleName\n * @param {string} name\n * @param {function(TestCase):void|Promise<any>} f\n * @param {number} i\n * @param {number} numberOfTests\n */\nexport const run = async (moduleName, name, f, i, numberOfTests) => {\n const uncamelized = string.fromCamelCase(name.slice(4), ' ')\n const filtered = !testFilterRegExp.test(`[${i + 1}/${numberOfTests}] ${moduleName}: ${uncamelized}`)\n /* istanbul ignore if */\n if (filtered) {\n return true\n }\n const tc = new TestCase(moduleName, name)\n const repeat = repeatTestRegex.test(uncamelized)\n const groupArgs = [log.GREY, `[${i + 1}/${numberOfTests}] `, log.PURPLE, `${moduleName}: `, log.BLUE, uncamelized]\n /* istanbul ignore next */\n if (testFilter === null) {\n log.groupCollapsed(...groupArgs)\n } else {\n log.group(...groupArgs)\n }\n const times = []\n const start = performance.now()\n let lastTime = start\n /**\n * @type {any}\n */\n let err = null\n performance.mark(`${name}-start`)\n do {\n try {\n const p = f(tc)\n if (promise.isPromise(p)) {\n await p\n }\n } catch (_err) {\n err = _err\n }\n const currTime = performance.now()\n times.push(currTime - lastTime)\n lastTime = currTime\n if (repeat && err === null && (lastTime - start) < repetitionTime) {\n tc.resetSeed()\n } else {\n break\n }\n } while (err === null && (lastTime - start) < repetitionTime)\n performance.mark(`${name}-end`)\n /* istanbul ignore if */\n if (err !== null && err.constructor !== SkipError) {\n log.printError(err)\n }\n performance.measure(name, `${name}-start`, `${name}-end`)\n log.groupEnd()\n const duration = lastTime - start\n let success = true\n times.sort((a, b) => a - b)\n /* istanbul ignore next */\n const againMessage = env.isBrowser\n ? ` - ${window.location.href}?filter=\\\\[${i + 1}/${tc._seed === null ? '' : `&seed=${tc._seed}`}`\n : `\\nrepeat: npm run test -- --filter \"\\\\[${i + 1}/\" ${tc._seed === null ? '' : `--seed ${tc._seed}`}`\n const timeInfo = (repeat && err === null)\n ? ` - ${times.length} repetitions in ${time.humanizeDuration(duration)} (best: ${time.humanizeDuration(times[0])}, worst: ${time.humanizeDuration(array.last(times))}, median: ${time.humanizeDuration(statistics.median(times))}, average: ${time.humanizeDuration(statistics.average(times))})`\n : ` in ${time.humanizeDuration(duration)}`\n if (err !== null) {\n /* istanbul ignore else */\n if (err.constructor === SkipError) {\n log.print(log.GREY, log.BOLD, 'Skipped: ', log.UNBOLD, uncamelized)\n } else {\n success = false\n log.print(log.RED, log.BOLD, 'Failure: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n } else {\n log.print(log.GREEN, log.BOLD, 'Success: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n return success\n}\n\n/**\n * Describe what you are currently testing. The message will be logged.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.describe('crunching numbers', 'already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} description\n * @param {string} info\n */\nexport const describe = (description, info = '') => log.print(log.BLUE, description, ' ', log.GREY, info)\n\n/**\n * Describe the state of the current computation.\n * ```js\n * export const testMyFirstTest = tc => {\n * t.info(already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} info\n */\nexport const info = info => describe('', info)\n\nexport const printDom = log.printDom\n\nexport const printCanvas = log.printCanvas\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):void} f\n */\nexport const group = (description, f) => {\n log.group(log.BLUE, description)\n try {\n f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):Promise<any>} f\n */\nexport const groupAsync = async (description, f) => {\n log.group(log.BLUE, description)\n try {\n await f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTime('measurement', () => {\n * heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():void} f\n * @return {number} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTime = (message, f) => {\n let duration\n const start = performance.now()\n try {\n f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTimeAsync('measurement', async () => {\n * await heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():Promise<any>} f\n * @return {Promise<number>} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTimeAsync = async (message, f) => {\n let duration\n const start = performance.now()\n try {\n await f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * @template T\n * @param {Array<T>} as\n * @param {Array<T>} bs\n * @param {string} [m]\n * @return {boolean}\n */\nexport const compareArrays = (as, bs, m = 'Arrays match') => {\n if (as.length !== bs.length) {\n fail(m)\n }\n for (let i = 0; i < as.length; i++) {\n if (as[i] !== bs[i]) {\n fail(m)\n }\n }\n return true\n}\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {string} [m]\n * @throws {TestError} Throws if tests fails\n */\nexport const compareStrings = (a, b, m = 'Strings match') => {\n if (a !== b) {\n const diff = simpleDiffString(a, b)\n log.print(log.GREY, a.slice(0, diff.index), log.RED, a.slice(diff.index, diff.remove), log.GREEN, diff.insert, log.GREY, a.slice(diff.index + diff.remove))\n fail(m)\n }\n}\n\n/**\n * @template K,V\n * @param {Object<K,V>} a\n * @param {Object<K,V>} b\n * @param {string} [m]\n * @throws {TestError} Throws if test fails\n */\nexport const compareObjects = (a, b, m = 'Objects match') => { object.equalFlat(a, b) || fail(m) }\n\n/**\n * @param {any} constructor\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @throws {TestError}\n */\nconst compareValues = (constructor, a, b, path) => {\n if (a !== b) {\n fail(`Values ${json.stringify(a)} and ${json.stringify(b)} don't match (${path})`)\n }\n return true\n}\n\n/**\n * @param {string?} message\n * @param {string} reason\n * @param {string} path\n * @throws {TestError}\n */\nconst _failMessage = (message, reason, path) => fail(\n message === null\n ? `${reason} ${path}`\n : `${message} (${reason}) ${path}`\n)\n\n/**\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @param {string?} message\n * @param {function(any,any,any,string,any):boolean} customCompare\n */\nconst _compare = (a, b, path, message, customCompare) => {\n // we don't use assert here because we want to test all branches (istanbul errors if one branch is not tested)\n if (a == null || b == null) {\n return compareValues(null, a, b, path)\n }\n if (a.constructor !== b.constructor) {\n _failMessage(message, 'Constructors don\\'t match', path)\n }\n let success = true\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n _failMessage(message, 'ArrayBuffer lengths match', path)\n }\n for (let i = 0; success && i < a.length; i++) {\n success = success && a[i] === b[i]\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n _failMessage(message, 'Sets have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach(value => {\n if (!b.has(value)) {\n _failMessage(message, `b.${path} does have ${value}`, path)\n }\n })\n break\n }\n case Map: {\n if (a.size !== b.size) {\n _failMessage(message, 'Maps have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, key) => {\n if (!b.has(key)) {\n _failMessage(message, `Property ${path}[\"${key}\"] does not exist on second argument`, path)\n }\n _compare(value, b.get(key), `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n _failMessage(message, 'Objects have a different number of attributes', path)\n }\n object.forEach(a, (value, key) => {\n if (!object.hasProperty(b, key)) {\n _failMessage(message, `Property ${path} does not exist on second argument`, path)\n }\n _compare(value, b[key], `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n case Array:\n if (a.length !== b.length) {\n _failMessage(message, 'Arrays have a different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, i) => _compare(value, b[i], `${path}[${i}]`, message, customCompare))\n break\n /* istanbul ignore next */\n default:\n if (!customCompare(a.constructor, a, b, path, compareValues)) {\n _failMessage(message, `Values ${json.stringify(a)} and ${json.stringify(b)} don't match`, path)\n }\n }\n assert(success, message)\n return true\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @param {string?} [message]\n * @param {function(any,T,T,string,any):boolean} [customCompare]\n */\nexport const compare = (a, b, message = null, customCompare = compareValues) => _compare(a, b, 'obj', message, customCompare)\n\n/* istanbul ignore next */\n/**\n * @param {boolean} condition\n * @param {string?} [message]\n * @throws {TestError}\n */\nexport const assert = (condition, message = null) => condition || fail(`Assertion failed${message !== null ? `: ${message}` : ''}`)\n\n/**\n * @param {function():void} f\n * @throws {TestError}\n */\nexport const fails = f => {\n let err = null\n try {\n f()\n } catch (_err) {\n err = _err\n log.print(log.GREEN, '⇖ This Error was expected')\n }\n /* istanbul ignore if */\n if (err === null) {\n fail('Expected this to fail')\n }\n}\n\n/**\n * @param {Object<string, Object<string, function(TestCase):void|Promise<any>>>} tests\n */\nexport const runTests = async tests => {\n const numberOfTests = object.map(tests, mod => object.map(mod, f => /* istanbul ignore next */ f ? 1 : 0).reduce(math.add, 0)).reduce(math.add, 0)\n let successfulTests = 0\n let testnumber = 0\n const start = performance.now()\n for (const modName in tests) {\n const mod = tests[modName]\n for (const fname in mod) {\n const f = mod[fname]\n /* istanbul ignore else */\n if (f) {\n const repeatEachTest = 1\n let success = true\n for (let i = 0; success && i < repeatEachTest; i++) {\n success = await run(modName, fname, f, testnumber, numberOfTests)\n }\n testnumber++\n /* istanbul ignore else */\n if (success) {\n successfulTests++\n }\n }\n }\n }\n const end = performance.now()\n log.print('')\n const success = successfulTests === numberOfTests\n /* istanbul ignore next */\n if (success) {\n /* istanbul ignore next */\n log.print(log.GREEN, log.BOLD, 'All tests successful!', log.GREY, log.UNBOLD, ` in ${time.humanizeDuration(end - start)}`)\n /* istanbul ignore next */\n log.printImgBase64(nyanCatImage, 50)\n } else {\n const failedTests = numberOfTests - successfulTests\n log.print(log.RED, log.BOLD, `> ${failedTests} test${failedTests > 1 ? 's' : ''} failed`)\n }\n return success\n}\n\nclass TestError extends Error {}\n\n/**\n * @param {string} reason\n * @throws {TestError}\n */\nexport const fail = reason => {\n log.print(log.RED, log.BOLD, 'X ', log.UNBOLD, reason)\n throw new TestError('Test Failed')\n}\n\nclass SkipError extends Error {}\n\n/**\n * @param {boolean} cond If true, this tests will be skipped\n * @throws {SkipError}\n */\nexport const skip = (cond = true) => {\n if (cond) {\n throw new SkipError('skipping..')\n }\n}\n\n// eslint-disable-next-line\nconst nyanCatImage = 'R0lGODlhjABMAPcAAMiSE0xMTEzMzUKJzjQ0NFsoKPc7//FM/9mH/z9x0HIiIoKCgmBHN+frGSkZLdDQ0LCwsDk71g0KCUzDdrQQEOFz/8yYdelmBdTiHFxcXDU2erR/mLrTHCgoKK5szBQUFNgSCTk6ymfpCB9VZS2Bl+cGBt2N8kWm0uDcGXhZRUvGq94NCFPhDiwsLGVlZTgqIPMDA1g3aEzS5D6xAURERDtG9JmBjJsZGWs2AD1W6Hp6eswyDeJ4CFNTU1LcEoJRmTMzSd14CTg5ser2GmDzBd17/xkZGUzMvoSMDiEhIfKruCwNAJaWlvRzA8kNDXDrCfi0pe1U/+GS6SZrAB4eHpZwVhoabsx9oiYmJt/TGHFxcYyMjOid0+Zl/0rF6j09PeRr/0zU9DxO6j+z0lXtBtp8qJhMAEssLGhoaPL/GVn/AAsWJ/9/AE3Z/zs9/3cAAOlf/+aa2RIyADo85uhh/0i84WtrazQ0UyMlmDMzPwUFBe16BTMmHau0E03X+g8pMEAoS1MBAf++kkzO8pBaqSZoe9uB/zE0BUQ3Sv///4WFheuiyzo880gzNDIyNissBNqF/8RiAOF2qG5ubj0vL1z6Avl5ASsgGkgUSy8vL/8n/z4zJy8lOv96uEssV1csAN5ZCDQ0Wz1a3tbEGHLeDdYKCg4PATE7PiMVFSoqU83eHEi43gUPAOZ8reGogeKU5dBBC8faHEez2lHYF4bQFMukFtl4CzY3kkzBVJfMGZkAAMfSFf27mP0t//g4/9R6Dfsy/1DRIUnSAPRD/0fMAFQ0Q+l7rnbaD0vEntCDD6rSGtO8GNpUCU/MK07LPNEfC7RaABUWWkgtOst+71v9AfD7GfDw8P19ATtA/NJpAONgB9yL+fm6jzIxMdnNGJxht1/2A9x//9jHGOSX3+5tBP27l35+fk5OTvZ9AhYgTjo0PUhGSDs9+LZjCFf2Aw0IDwcVAA8PD5lwg9+Q7YaChC0kJP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERjQ0NEY0QkI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERjQ0NEY0QUI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OEE3RTIwRjcyQTlFMTExOTQ1QkY2QTU5QzVCQjJBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1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'\n","\nimport * as array from './array.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAppend = tc => {\n const arr = [1, 2, 3]\n array.appendTo(arr, arr.slice())\n t.compareArrays(arr, [1, 2, 3, 1, 2, 3])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testflatten = tc => {\n const arr = [[1, 2, 3], [4]]\n t.compareArrays(array.flatten(arr), [1, 2, 3, 4])\n}\n","\nimport * as log from './logging.js'\n\nexport const testLogging = () => {\n log.print(log.BLUE, 'blue ')\n log.print(log.BLUE, 'blue ', log.BOLD, 'blue,bold')\n log.print(log.GREEN, log.RED, 'red ', 'red')\n log.print(log.ORANGE, 'orange')\n log.print(log.BOLD, 'bold ', log.UNBOLD, 'nobold')\n log.print(log.GREEN, 'green ', log.UNCOLOR, 'nocolor')\n log.print('expecting objects from now on!')\n log.print({ 'my-object': 'isLogged' })\n log.print(log.GREEN, 'green ', { 'my-object': 'isLogged' })\n log.print(log.GREEN, 'green ', { 'my-object': 'isLogged' }, 'unformatted')\n log.print(log.BLUE, log.BOLD, 'number', 1)\n log.print(log.BLUE, log.BOLD, 'number', 1, {}, 's', 2)\n log.print({}, 'dtrn')\n}\n","import * as prng from './prng.js'\nimport * as string from './string.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testLowercaseTransformation = tc => {\n t.compareStrings(string.fromCamelCase('ThisIsATest', ' '), 'this is a test')\n t.compareStrings(string.fromCamelCase('Testing', ' '), 'testing')\n t.compareStrings(string.fromCamelCase('testingThis', ' '), 'testing this')\n t.compareStrings(string.fromCamelCase('testYAY', ' '), 'test y a y')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringUtf8Encoding = tc => {\n t.skip(!string.utf8TextDecoder)\n const str = prng.utf16String(tc.prng, 1000000)\n let nativeResult, polyfilledResult\n t.measureTime('TextEncoder utf8 encoding', () => {\n nativeResult = string._encodeUtf8Native(str)\n })\n t.measureTime('Polyfilled utf8 encoding', () => {\n polyfilledResult = string._encodeUtf8Polyfill(str)\n })\n t.compare(nativeResult, polyfilledResult, 'Encoded utf8 buffers match')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringUtf8Decoding = tc => {\n t.skip(!string.utf8TextDecoder)\n const buf = string.encodeUtf8(prng.utf16String(tc.prng, 1000000))\n let nativeResult, polyfilledResult\n t.measureTime('TextEncoder utf8 decoding', () => {\n nativeResult = string._decodeUtf8Native(buf)\n })\n t.measureTime('Polyfilled utf8 decoding', () => {\n polyfilledResult = string._decodeUtf8Polyfill(buf)\n })\n t.compare(nativeResult, polyfilledResult, 'Decoded utf8 buffers match')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBomEncodingDecoding = tc => {\n const bomStr = 'bom'\n t.assert(bomStr.length === 4)\n const polyfilledResult = string._decodeUtf8Polyfill(string._encodeUtf8Polyfill(bomStr))\n t.assert(polyfilledResult.length === 4)\n t.assert(polyfilledResult === bomStr)\n if (string.utf8TextDecoder) {\n const nativeResult = string._decodeUtf8Native(string._encodeUtf8Native(bomStr))\n t.assert(nativeResult === polyfilledResult)\n }\n}\n","/* global BigInt */\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\nimport * as prng from './prng.js'\nimport * as t from './testing.js'\nimport * as string from './string.js'\nimport * as binary from './binary.js'\nimport * as buffer from './buffer.js'\nimport * as number from './number.js'\n\n/**\n * @type {Array<function(prng.PRNG, number, boolean):any>}\n */\nlet genAnyLookupTable = [\n gen => BigInt(prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER)), // TYPE 122\n gen => undefined, // TYPE 127\n gen => null, // TYPE 126\n gen => prng.int53(gen, number.LOWEST_INT32, number.HIGHEST_INT32), // TYPE 125\n gen => prng.real53(gen), // TYPE 124 and 123\n gen => true, // TYPE 121\n gen => false, // TYPE 120\n gen => prng.utf16String(gen), // TYPE 119\n (gen, depth, toJsonCompatible) => ({ val: genAny(gen, depth + 1, toJsonCompatible) }), // TYPE 118\n (gen, depth, toJsonCompatible) => Array.from({ length: prng.uint32(gen, 0, 20 - depth) }).map(() => genAny(gen, depth + 1, toJsonCompatible)), // TYPE 117\n gen => prng.uint8Array(gen, prng.uint32(gen, 0, 50)) // TYPE 116\n]\n\nconst genAnyLookupTableJsonCompatible = genAnyLookupTable.slice(1)\n\nif (typeof BigInt === 'undefined') {\n genAnyLookupTable = genAnyLookupTable.slice(1)\n}\n\n/**\n * @param {prng.PRNG} gen\n * @param {number} _depth The current call-depth\n */\nconst genAny = (gen, _depth = 0, toJsonCompatible = false) => prng.oneOf(gen, toJsonCompatible ? genAnyLookupTableJsonCompatible : genAnyLookupTable)(gen, _depth, toJsonCompatible)\n\n/**\n * Check if binary encoding is compatible with golang binary encoding - binary.PutVarUint.\n *\n * Result: is compatible up to 32 bit: [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)\n */\nexport const testGolangBinaryEncodingCompatibility = () => {\n const tests = [\n { in: 0, out: [0] },\n { in: 1, out: [1] },\n { in: 128, out: [128, 1] },\n { in: 200, out: [200, 1] },\n { in: 32, out: [32] },\n { in: 500, out: [244, 3] },\n { in: 256, out: [128, 2] },\n { in: 700, out: [188, 5] },\n { in: 1024, out: [128, 8] },\n { in: 1025, out: [129, 8] },\n { in: 4048, out: [208, 31] },\n { in: 5050, out: [186, 39] },\n { in: 1000000, out: [192, 132, 61] },\n { in: 34951959, out: [151, 166, 213, 16] },\n { in: 2147483646, out: [254, 255, 255, 255, 7] },\n { in: 2147483647, out: [255, 255, 255, 255, 7] },\n { in: 2147483648, out: [128, 128, 128, 128, 8] },\n { in: 2147483700, out: [180, 128, 128, 128, 8] },\n { in: 4294967294, out: [254, 255, 255, 255, 15] },\n { in: 4294967295, out: [255, 255, 255, 255, 15] }\n ]\n tests.forEach(test => {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, test.in)\n const buffer = encoding.toUint8Array(encoder)\n t.assert(buffer.byteLength === test.out.length)\n t.assert(buffer.length > 0)\n for (let j = 0; j < buffer.length; j++) {\n t.assert(buffer[j] === test.out[j])\n }\n })\n}\n\n/**\n * @template T\n * @param {string} testname\n * @param {function(encoding.Encoder, T):void} write\n * @param {function(decoding.Decoder):T} read\n * @param {T} val\n * @param {boolean} doLog\n */\nfunction test (testname, write, read, val, doLog = true) {\n const encoder = encoding.createEncoder()\n write(encoder, val)\n const reader = decoding.createDecoder(encoding.toUint8Array(encoder))\n const result = read(reader)\n const utf8ByteLength = string.utf8ByteLength(val + '')\n const binaryByteLength = encoding.length(encoder)\n if (doLog) {\n t.describe(testname, ` utf8 encode: ${utf8ByteLength} bytes / binary encode: ${binaryByteLength} bytes`)\n }\n t.compare(val, result)\n return {\n utf8ByteLength,\n binaryByteLength\n }\n}\n\n/**\n * @param {string} s\n */\nconst testVarString = s => {\n const encoder = encoding.createEncoder()\n encoding.writeVarString(encoder, s)\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n const peeked = decoding.peekVarString(decoder)\n const result = decoding.readVarString(decoder)\n t.compareStrings(s, result)\n t.compareStrings(s, peeked)\n}\n\nexport const testStringDecodingPerformance = () => {\n // test if it is faster to read N single characters, or if it is faster to read N characters in one flush.\n // to make the comparison meaningful, we read read N characters in an Array\n const N = 2000000\n const durationSingleElements = t.measureTime('read / write single elements', () => {\n const encoder = encoding.createEncoder()\n t.measureTime('read / write single elements - write', () => {\n for (let i = 0; i < N; i++) {\n encoding.writeVarString(encoder, 'i')\n }\n })\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n t.measureTime('read / write single elements - read', () => {\n const arr = []\n for (let i = 0; i < N; i++) {\n arr.push(decoding.readVarString(decoder))\n }\n })\n })\n\n const durationConcatElementsNative = t.measureTime('read / write concatenated string using native encoder/decoder', () => {\n let stringbuf = new Uint8Array()\n const encoderLengths = encoding.createEncoder()\n t.measureTime('read / write concatenated string using native encoder/decoder - write', () => {\n let s = ''\n const sArr = []\n for (let i = 0; i < N; i++) {\n s += 'i'\n encoding.writeVarUint(encoderLengths, 1) // we write a single char.\n if (i % 20 === 0) {\n sArr.push(s)\n s = ''\n }\n }\n sArr.push(s)\n stringbuf = string.encodeUtf8(sArr.join(''))\n })\n const decoderLengths = decoding.createDecoder(encoding.toUint8Array(encoderLengths))\n t.measureTime('read / write concatenated string using native encoder/decoder - read', () => {\n const arr = []\n const concatS = string.decodeUtf8(stringbuf)\n for (let i = 0; i < N; i++) {\n const len = decoding.readVarUint(decoderLengths)\n arr.push(concatS.slice(i, len)) // push using slice\n }\n })\n })\n const durationConcatElements = t.measureTime('read / write concatenated string', () => {\n let stringbuf = new Uint8Array()\n const encoder = encoding.createEncoder()\n const encoderLengths = encoding.createEncoder()\n t.measureTime('read / write concatenated string - write', () => {\n let s = ''\n for (let i = 0; i < N; i++) {\n s += 'i'\n encoding.writeVarUint(encoderLengths, 1) // we write a single char.\n if (i % 20 === 0) {\n encoding.writeVarString(encoder, s)\n s = ''\n }\n }\n encoding.writeVarString(encoder, s)\n stringbuf = encoding.toUint8Array(encoder)\n })\n const decoder = decoding.createDecoder(stringbuf)\n const decoderLengths = decoding.createDecoder(encoding.toUint8Array(encoderLengths))\n t.measureTime('read / write concatenated string - read', () => {\n const arr = []\n const concatS = decoding.readVarString(decoder)\n for (let i = 0; i < N; i++) {\n const len = decoding.readVarUint(decoderLengths)\n arr.push(concatS.slice(i, len)) // push using slice\n }\n })\n })\n t.assert(durationConcatElements < durationSingleElements, 'We expect that the second approach is faster. If this fails, our expectantion is not met in your javascript environment. Please report this issue.')\n t.assert(durationConcatElements < durationConcatElementsNative * 1.3, 'We expect that the native approach is slower. If this fails, our expectantion is not met in your javascript environment. Please report this issue.')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncodeUnknowns = tc => {\n const encoder = encoding.createEncoder()\n // @ts-ignore\n encoding.writeAny(encoder, Symbol('a'))\n encoding.writeAny(encoder, undefined)\n encoding.writeAny(encoder, () => {})\n const decoder = decoding.createDecoder(encoding.toUint8Array(encoder))\n t.assert(decoding.readAny(decoder) === undefined)\n t.assert(decoding.readAny(decoder) === undefined)\n t.assert(decoding.readAny(decoder) === undefined)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncodeDate = tc => {\n test('Encode current date', encoding.writeAny, decoding.readAny, new Date().getTime())\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEncodeMax32bitUint = tc => {\n test('max 32bit uint', encoding.writeVarUint, decoding.readVarUint, binary.BITS32)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testVarUintEncoding = tc => {\n test('varUint 1 byte', encoding.writeVarUint, decoding.readVarUint, 42)\n test('varUint 2 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 9 | 3)\n test('varUint 3 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 17 | 1 << 9 | 3)\n test('varUint 4 bytes', encoding.writeVarUint, decoding.readVarUint, 1 << 25 | 1 << 17 | 1 << 9 | 3)\n test('varUint of 2839012934', encoding.writeVarUint, decoding.readVarUint, 2839012934)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testVarIntEncoding = tc => {\n test('varInt 1 byte', encoding.writeVarInt, decoding.readVarInt, -42)\n test('varInt 2 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 9 | 3))\n test('varInt 3 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 17 | 1 << 9 | 3))\n test('varInt 4 bytes', encoding.writeVarInt, decoding.readVarInt, -(1 << 25 | 1 << 17 | 1 << 9 | 3))\n test('varInt of -691529286', encoding.writeVarInt, decoding.readVarInt, -(691529286))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatVarUintEncoding = tc => {\n const n = prng.int32(tc.prng, 0, (1 << 28) - 1)\n test(`varUint of ${n}`, encoding.writeVarUint, decoding.readVarUint, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatVarIntEncoding = tc => {\n const n = prng.uint32(tc.prng, 0, binary.BITS32)\n test(`varInt of ${n}`, encoding.writeVarInt, decoding.readVarInt, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatAnyEncoding = tc => {\n const n = genAny(tc.prng)\n test('any encoding', encoding.writeAny, decoding.readAny, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPeekVarUintEncoding = tc => {\n const n = prng.int32(tc.prng, 0, (1 << 28) - 1)\n test(`varUint of ${n}`, encoding.writeVarUint, decoding.peekVarUint, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPeekVarIntEncoding = tc => {\n const n = prng.uint32(tc.prng, 0, binary.BITS32)\n test(`varInt of ${n}`, encoding.writeVarInt, decoding.peekVarInt, n, false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyVsJsonEncoding = tc => {\n const n = Array.from({ length: 5000 }).map(() => genAny(tc.prng, 5, true))\n t.measureTime('lib0 any encoding', () => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, n)\n const buffer = encoding.toUint8Array(encoder)\n t.info('buffer length is ' + buffer.length)\n decoding.readAny(decoding.createDecoder(buffer))\n })\n t.measureTime('JSON.stringify encoding', () => {\n const encoder = encoding.createEncoder()\n encoding.writeVarString(encoder, JSON.stringify(n))\n const buffer = encoding.toUint8Array(encoder)\n t.info('buffer length is ' + buffer.length)\n JSON.parse(decoding.readVarString(decoding.createDecoder(buffer)))\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStringEncoding = tc => {\n testVarString('hello')\n testVarString('test!')\n testVarString('☺☺☺')\n testVarString('')\n testVarString('1234')\n testVarString('쾟')\n testVarString('龟') // surrogate length 3\n testVarString('😝') // surrogate length 4\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatStringEncoding = tc =>\n testVarString(prng.utf16String(tc.prng))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetMethods = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint8(encoder, 1)\n encoding.writeUint16(encoder, 33)\n encoding.writeUint32(encoder, 29329)\n encoding.setUint8(encoder, 0, 8)\n encoding.setUint16(encoder, 1, 16)\n encoding.setUint32(encoder, 3, 32)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(decoding.peekUint8(decoder) === 8)\n decoding.readUint8(decoder)\n t.assert(decoding.peekUint16(decoder) === 16)\n decoding.readUint16(decoder)\n t.assert(decoding.peekUint32(decoder) === 32)\n decoding.readUint32(decoder)\n}\n\nconst defLen = 1000\nconst loops = 10000\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst strictComparison = (a, b) => a === b\n\n/**\n * @typedef {Object} EncodingPair\n * @property {function(decoding.Decoder):any} EncodingPair.read\n * @property {function(encoding.Encoder,any):void} EncodingPair.write\n * @property {function(prng.PRNG):any} EncodingPair.gen\n * @property {function(any,any):boolean} EncodingPair.compare\n * @property {string} name\n */\n\n/**\n * @template T\n * @type {Array<EncodingPair>}\n */\nconst encodingPairs = [\n { name: 'uint8Array', read: decoder => decoding.readUint8Array(decoder, defLen), write: encoding.writeUint8Array, gen: gen => prng.uint8Array(gen, defLen), compare: t.compare },\n { name: 'varUint8Array', read: decoding.readVarUint8Array, write: encoding.writeVarUint8Array, gen: gen => prng.uint8Array(gen, prng.uint32(gen, 0, defLen)), compare: t.compare },\n { name: 'uint8', read: decoding.readUint8, write: encoding.writeUint8, gen: gen => prng.uint32(gen, 0, binary.BITS8), compare: strictComparison },\n { name: 'uint16', read: decoding.readUint16, write: encoding.writeUint16, gen: gen => prng.uint32(gen, 0, binary.BITS16), compare: strictComparison },\n { name: 'uint32', read: decoding.readUint32, write: encoding.writeUint32, gen: gen => prng.uint32(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'uint32bigEndian', read: decoding.readUint32BigEndian, write: encoding.writeUint32BigEndian, gen: gen => prng.uint32(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'varString', read: decoding.readVarString, write: encoding.writeVarString, gen: gen => prng.utf16String(gen, prng.uint32(gen, 0, defLen)), compare: strictComparison },\n { name: 'varUint', read: decoding.readVarUint, write: encoding.writeVarUint, gen: gen => prng.uint53(gen, 0, binary.BITS32), compare: strictComparison },\n { name: 'varInt', read: decoding.readVarInt, write: encoding.writeVarInt, gen: gen => prng.int53(gen, number.LOWEST_INT32, number.HIGHEST_INT32), compare: strictComparison },\n { name: 'Any', read: decoding.readAny, write: encoding.writeAny, gen: genAny, compare: t.compare }\n]\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatRandomWrites = tc => {\n t.describe(`Writing ${loops} random values`, `defLen=${defLen}`)\n const gen = tc.prng\n const ops = []\n const encoder = encoding.createEncoder()\n for (let i = 0; i < 10000; i++) {\n const pair = prng.oneOf(gen, encodingPairs)\n const val = pair.gen(gen)\n pair.write(encoder, val)\n ops.push({\n compare: pair.compare,\n read: pair.read,\n val,\n name: pair.name\n })\n }\n const tailData = prng.uint8Array(gen, prng.int32(gen, 0, defLen))\n encoding.writeUint8Array(encoder, tailData)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(encoding.length(encoder) === buf.byteLength)\n for (let i = 0; i < ops.length; i++) {\n const o = ops[i]\n const val = o.read(decoder)\n t.assert(o.compare(val, o.val), o.name)\n }\n t.compare(tailData, decoding.readTailAsUint8Array(decoder))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testWriteUint8ArrayOverflow = tc => {\n const encoder = encoding.createEncoder()\n const initialLen = encoder.cbuf.byteLength\n const buf = buffer.createUint8ArrayFromLen(initialLen * 4)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = i\n }\n encoding.writeUint8Array(encoder, buf)\n encoding.write(encoder, 42)\n const res = encoding.toUint8Array(encoder)\n t.assert(res.length === initialLen * 4 + 1)\n for (let i = 0; i < buf.length - 1; i++) {\n t.assert(res[i] === (i % 256))\n }\n t.assert(res[initialLen * 4] === 42)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetOnOverflow = tc => {\n const encoder = encoding.createEncoder()\n const initialLen = encoder.cbuf.byteLength\n encoder.cpos = initialLen - 2\n encoding.writeUint32(encoder, binary.BITS32)\n const buf = encoding.toUint8Array(encoder)\n t.assert(encoding.length(encoder) === initialLen + 2)\n const decoder = decoding.createDecoder(buf)\n const space = buffer.createUint8ArrayFromArrayBuffer(decoding.readUint8Array(decoder, initialLen - 2))\n for (let i = 0; i < initialLen - 2; i++) {\n t.assert(space[i] === 0)\n }\n t.assert(decoding.hasContent(decoder))\n t.assert(binary.BITS32 === decoding.readUint32(decoder))\n t.assert(!decoding.hasContent(decoder))\n encoding.setUint8(encoder, 5, binary.BITS8)\n encoding.setUint8(encoder, initialLen + 1, 7)\n const buf2 = encoding.toUint8Array(encoder)\n t.assert(buf2[5] === binary.BITS8)\n t.assert(buf[5] === 0, 'old buffer is not affected')\n t.assert(buf2[initialLen + 1] === 7)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testCloneDecoder = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint8(encoder, 12132)\n encoding.writeVarUint(encoder, 329840128734)\n encoding.writeVarString(encoder, 'dtrnuiaednudiaendturinaedt nduiaen dturinaed ')\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n decoding.skip8(decoder)\n const decoder2 = decoding.clone(decoder)\n const payload1 = decoding.readTailAsUint8Array(decoder)\n const payload2 = decoding.readTailAsUint8Array(decoder2)\n t.compare(payload1, payload2)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testWriteBinaryEncoder = tc => {\n const encoder = encoding.createEncoder()\n encoding.writeUint16(encoder, 4)\n const encoder2 = encoding.createEncoder()\n encoding.writeVarUint(encoder2, 143095)\n encoding.writeBinaryEncoder(encoder2, encoder)\n const buf = encoding.toUint8Array(encoder2)\n const decoder = decoding.createDecoder(buf)\n t.assert(decoding.readVarUint(decoder) === 143095)\n t.assert(decoding.readUint16(decoder) === 4)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testOverflowStringDecoding = tc => {\n const gen = tc.prng\n const encoder = encoding.createEncoder()\n let longStr = ''\n while (longStr.length < 11000) {\n longStr += prng.utf16String(gen, 100000)\n }\n encoding.writeVarString(encoder, longStr)\n const buf = encoding.toUint8Array(encoder)\n const decoder = decoding.createDecoder(buf)\n t.assert(longStr === decoding.readVarString(decoder))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.RleEncoder(encoding.writeVarUint)\n for (let i = 0; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.RleDecoder(encoding.toUint8Array(encoder), decoding.readVarUint)\n for (let i = 0; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRleIntDiffEncoder = tc => {\n const N = 100\n const encoder = new encoding.RleIntDiffEncoder(0)\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.RleIntDiffDecoder(encoding.toUint8Array(encoder), 0)\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUintOptRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.UintOptRleEncoder()\n for (let i = 0; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.UintOptRleDecoder(encoder.toUint8Array())\n for (let i = 0; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntDiffRleEncoder = tc => {\n const N = 100\n const encoder = new encoding.IntDiffOptRleEncoder()\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n for (let j = 0; j < i; j++) { // write additional i times\n encoder.write(i)\n }\n }\n const decoder = new decoding.IntDiffOptRleDecoder(encoder.toUint8Array())\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n for (let j = 0; j < i; j++) { // read additional i times\n t.assert(i === decoder.read())\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntEncoders = tc => {\n const arrLen = 10000\n const gen = tc.prng\n /**\n * @type {Array<number>}\n */\n const vals = []\n for (let i = 0; i < arrLen; i++) {\n vals.push(prng.int32(gen, -10, 10))\n }\n /**\n * @type {Array<{ encoder: any, read: function(any):any }>}\n */\n const intEncoders = [\n { encoder: new encoding.IntDiffOptRleEncoder(), read: encoder => new decoding.IntDiffOptRleDecoder(encoder.toUint8Array()) },\n { encoder: new encoding.IntDiffEncoder(0), read: encoder => new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 0) },\n { encoder: new encoding.IntDiffEncoder(42), read: encoder => new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 42) },\n { encoder: new encoding.RleIntDiffEncoder(0), read: encoder => new decoding.RleIntDiffDecoder(encoding.toUint8Array(encoder), 0) }\n ]\n intEncoders.forEach(({ encoder, read }) => {\n vals.forEach(v => encoder.write(v))\n /**\n * @type {Array<number>}\n */\n const readVals = []\n const dec = read(encoder)\n for (let i = 0; i < arrLen; i++) {\n readVals.push(dec.read())\n }\n t.compare(vals, readVals)\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIntDiffEncoder = tc => {\n const N = 100\n const encoder = new encoding.IntDiffEncoder(0)\n for (let i = -N; i < N; i++) {\n encoder.write(i)\n }\n const decoder = new decoding.IntDiffDecoder(encoding.toUint8Array(encoder), 0)\n for (let i = -N; i < N; i++) {\n t.assert(i === decoder.read())\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStringDecoder = tc => {\n const gen = tc.prng\n const N = 1000\n const words = []\n for (let i = 0; i < N; i++) {\n words.push(prng.utf16String(gen))\n if (i % 100 === 0) {\n const char = prng.char(gen).slice(0, 1)\n words.push(char)\n words.push(char)\n }\n if (i % 107 === 0) {\n words.push(prng.word(gen, 3000, 8000))\n }\n }\n const encoder = new encoding.StringEncoder()\n for (let i = 0; i < words.length; i++) {\n encoder.write(words[i])\n }\n const decoder = new decoding.StringDecoder(encoder.toUint8Array())\n for (let i = 0; i < words.length; i++) {\n t.assert(decoder.read() === words[i])\n }\n}\n","import { simpleDiffString, simpleDiffArray } from './diff.js'\nimport * as prng from './prng.js'\nimport * as f from './function.js'\nimport * as t from './testing.js'\nimport * as object from './object.js'\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {{index: number,remove:number,insert:string}} expected\n */\nfunction runDiffTest (a, b, expected) {\n const result = simpleDiffString(a, b)\n t.compare(result, expected)\n const arrResult = simpleDiffArray(a.split(''), b.split(''))\n t.compare(arrResult, object.assign({}, result, { insert: result.insert.split('') }))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDiffing = tc => {\n runDiffTest('abc', 'axc', { index: 1, remove: 1, insert: 'x' })\n runDiffTest('bc', 'xc', { index: 0, remove: 1, insert: 'x' })\n runDiffTest('ab', 'ax', { index: 1, remove: 1, insert: 'x' })\n runDiffTest('b', 'x', { index: 0, remove: 1, insert: 'x' })\n runDiffTest('', 'abc', { index: 0, remove: 0, insert: 'abc' })\n runDiffTest('abc', 'xyz', { index: 0, remove: 3, insert: 'xyz' })\n runDiffTest('axz', 'au', { index: 1, remove: 2, insert: 'u' })\n runDiffTest('ax', 'axy', { index: 2, remove: 0, insert: 'y' })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatDiffing = tc => {\n const a = prng.word(tc.prng)\n const b = prng.word(tc.prng)\n const change = simpleDiffString(a, b)\n const recomposed = `${a.slice(0, change.index)}${change.insert}${a.slice(change.index + change.remove)}`\n t.compareStrings(recomposed, b)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testArrayDiffing = tc => {\n const a = [[1, 2], { x: 'x' }]\n const b = [[1, 2], { x: 'x' }]\n t.compare(simpleDiffArray(a, b, f.equalityFlat), { index: 2, remove: 0, insert: [] })\n t.compare(simpleDiffArray(a, b, f.equalityStrict), { index: 0, remove: 2, insert: b })\n t.compare(simpleDiffArray([{ x: 'y' }, []], a, f.equalityFlat), { index: 0, remove: 2, insert: b })\n}\n","import * as t from './testing.js'\nimport * as math from './math.js'\nimport * as buffer from './buffer.js'\nimport * as map from './map.js'\nimport * as promise from './promise.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testComparing = tc => {\n t.compare({}, {})\n t.compare({ a: 4 }, { a: 4 }, 'simple compare (object)')\n t.compare([1, 2], [1, 2], 'simple compare (array)')\n t.compare({ a: [1, 2] }, { a: [1, 2] }, 'simple compare nested')\n t.compare(new Set(['3', 1234]), new Set(['3', 1234]), 'compare Sets')\n const map1 = map.create()\n map1.set(1, 2)\n map1.set('x', {})\n map1.set(98, 'tst')\n const map2 = new Map()\n map2.set(1, 2)\n map2.set('x', {})\n map2.set(98, 'tst')\n t.compare(map1, map2, 'compare Maps')\n\n t.describe('The following errors are expected!')\n t.fails(() => {\n t.compare({ a: 4 }, { b: 5 }, 'childs are not equal')\n })\n t.fails(() => {\n t.compare({ a: 4 }, { a: 5 }, 'childs are not equal')\n })\n t.fails(() => {\n t.compare({ a: 4 }, null, 'childs are not equal')\n })\n t.fails(() => {\n // @ts-ignore\n t.compare({ a: 4 }, [4], 'childs have different types')\n })\n t.fails(() => {\n t.compare({ a: 4 }, { a: 4, b: 5 }, 'childs have different length (object)')\n })\n t.fails(() => {\n t.compare([1], [1, 2]) // childs have different length (array) -- no message\n })\n t.fails(() => {\n t.compare(buffer.createUint8ArrayFromLen(1), buffer.createUint8ArrayFromLen(2), 'Uint8Arrays have different length')\n })\n t.fails(() => {\n t.compare(buffer.createUint8ArrayFromLen(1).buffer, buffer.createUint8ArrayFromLen(2).buffer, 'ArrayBuffer have different length')\n })\n t.fails(() => {\n t.compareStrings('str1', 'str2', 'Strings comparison can fail')\n })\n t.compareArrays([], [], 'Comparing empty arrays')\n t.fails(() => {\n t.compareArrays([1], [1, 2], 'Compare arrays with different length')\n })\n t.fails(() => {\n t.compareArrays([1], [2]) // Compare different arrays -- no message\n })\n t.compareObjects({ x: 1 }, { x: 1 }, 'comparing objects')\n t.fails(() => {\n t.compareObjects({}, { x: 1 }, 'compareObjects can fail')\n })\n t.fails(() => {\n t.compareObjects({ x: 3 }, { x: 1 }) // Compare different objects -- no message\n })\n t.fails(() => {\n t.compare({ x: undefined }, { y: 1 }, 'compare correctly handles undefined')\n })\n t.fails(() => {\n t.compareObjects({ x: undefined }, { y: 1 }, 'compare correctly handles undefined')\n })\n t.describe('Map fails')\n t.fails(() => {\n const m1 = new Map()\n m1.set(1, 2)\n const m2 = new Map()\n m2.set(1, 3)\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.fails(() => {\n const m1 = new Map()\n m1.set(2, 2)\n const m2 = new Map()\n m2.set(1, 2)\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.fails(() => {\n const m1 = new Map()\n m1.set(1, 2)\n const m2 = new Map()\n t.compare(m1, m2) // childs have different length (array) -- no message\n })\n t.describe('Set fails')\n t.fails(() => {\n t.compare(new Set([1]), new Set([1, 2])) // childs have different length (array) -- no message\n })\n t.fails(() => {\n t.compare(new Set([1]), new Set([2])) // childs have different length (array) -- no message\n })\n}\n\nexport const testFailing = () => {\n t.fails(() => {\n t.fail('This fail is expected')\n })\n}\n\nexport const testSkipping = () => {\n t.skip(false)\n t.assert(true)\n t.skip()\n /* istanbul ignore next */\n t.fail('should have skipped')\n}\n\nexport const testAsync = async () => {\n await t.measureTimeAsync('time', () => promise.create(r => setTimeout(r)))\n await t.groupAsync('some description', () => promise.wait(1))\n}\n\nexport const testRepeatRepetition = () => {\n const arr = []\n const n = 100\n for (let i = 1; i <= n; i++) {\n arr.push(i)\n }\n t.assert(arr.reduce(math.add, 0) === (n + 1) * n / 2)\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/* istanbul ignore next */\n/**\n * @param {string} s\n * @return {Error}\n */\nexport const create = s => new Error(s)\n\n/* istanbul ignore next */\n/**\n * @throws {Error}\n * @return {never}\n */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/* istanbul ignore next */\n/**\n * @throws {Error}\n * @return {never}\n */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/* eslint-env browser */\n\n/**\n * Helpers to work with IndexedDB.\n *\n * @module indexeddb\n */\n\nimport * as promise from './promise.js'\nimport * as error from './error.js'\n\n/* istanbul ignore next */\n/**\n * IDB Request to Promise transformer\n *\n * @param {IDBRequest} request\n * @return {Promise<any>}\n */\nexport const rtop = request => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n // @ts-ignore\n request.onerror = event => reject(new Error(event.target.error))\n /* istanbul ignore next */\n // @ts-ignore\n request.onblocked = () => location.reload()\n // @ts-ignore\n request.onsuccess = event => resolve(event.target.result)\n})\n\n/* istanbul ignore next */\n/**\n * @param {string} name\n * @param {function(IDBDatabase):any} initDB Called when the database is first created\n * @return {Promise<IDBDatabase>}\n */\nexport const openDB = (name, initDB) => promise.create((resolve, reject) => {\n const request = indexedDB.open(name)\n /**\n * @param {any} event\n */\n request.onupgradeneeded = event => initDB(event.target.result)\n /* istanbul ignore next */\n /**\n * @param {any} event\n */\n request.onerror = event => reject(error.create(event.target.error))\n /* istanbul ignore next */\n request.onblocked = () => location.reload()\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n /**\n * @type {IDBDatabase}\n */\n const db = event.target.result\n /* istanbul ignore next */\n db.onversionchange = () => { db.close() }\n /* istanbul ignore if */\n if (typeof addEventListener !== 'undefined') {\n addEventListener('unload', () => db.close())\n }\n resolve(db)\n }\n})\n\n/* istanbul ignore next */\n/**\n * @param {string} name\n */\nexport const deleteDB = name => rtop(indexedDB.deleteDatabase(name))\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n * @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions\n */\nexport const createStores = (db, definitions) => definitions.forEach(d =>\n // @ts-ignore\n db.createObjectStore.apply(db, d)\n)\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<string>} stores\n * @param {\"readwrite\"|\"readonly\"} [access]\n * @return {Array<IDBObjectStore>}\n */\nexport const transact = (db, stores, access = 'readwrite') => {\n const transaction = db.transaction(stores, access)\n return stores.map(store => getStore(transaction, store))\n}\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<number>}\n */\nexport const count = (store, range) =>\n rtop(store.count(range))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | Array<any> } key\n * @return {Promise<String | number | ArrayBuffer | Date | Array<any>>}\n */\nexport const get = (store, key) =>\n rtop(store.get(key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key\n */\nexport const del = (store, key) =>\n rtop(store.delete(key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} [key]\n */\nexport const put = (store, item, key) =>\n rtop(store.put(item, key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} key\n * @return {Promise<any>}\n */\nexport const add = (store, item, key) =>\n rtop(store.add(item, key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date} item\n * @return {Promise<number>} Returns the generated key\n */\nexport const addAutoKey = (store, item) =>\n rtop(store.add(item))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\nexport const getAll = (store, range) =>\n rtop(store.getAll(range))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\nexport const getAllKeys = (store, range) =>\n rtop(store.getAllKeys(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} query\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n * @return {Promise<any>}\n */\nexport const queryFirst = (store, query, direction) => {\n /**\n * @type {any}\n */\n let first = null\n return iterateKeys(store, query, key => {\n first = key\n return false\n }, direction).then(() => first)\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getLastKey = (store, range = null) => queryFirst(store, range, 'prev')\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getFirstKey = (store, range = null) => queryFirst(store, range, 'next')\n\n/**\n * @typedef KeyValuePair\n * @type {Object}\n * @property {any} k key\n * @property {any} v Value\n */\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<KeyValuePair>>}\n */\nexport const getAllKeysValues = (store, range) =>\n // @ts-ignore\n promise.all([getAllKeys(store, range), getAll(store, range)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })))\n\n/* istanbul ignore next */\n/**\n * @param {any} request\n * @param {function(IDBCursorWithValue):void|boolean} f\n * @return {Promise<void>}\n */\nconst iterateOnRequest = (request, f) => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n request.onerror = reject\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n const cursor = event.target.result\n if (cursor === null || f(cursor) === false) {\n return resolve()\n }\n cursor.continue()\n }\n})\n\n/* istanbul ignore next */\n/**\n * Iterate on keys and values\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any,any):void|boolean} f Callback that receives (value, key)\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterate = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))\n\n/* istanbul ignore next */\n/**\n * Iterate on the keys (no values)\n *\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any):void|boolean} f callback that receives the key\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterateKeys = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))\n\n/* istanbul ignore next */\n/**\n * Open store from transaction\n * @param {IDBTransaction} t\n * @param {String} store\n * @returns {IDBObjectStore}\n */\nexport const getStore = (t, store) => t.objectStore(store)\n\n/* istanbul ignore next */\n/**\n * @param {any} lower\n * @param {any} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n\n/* istanbul ignore next */\n/**\n * @param {any} upper\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)\n\n/* istanbul ignore next */\n/**\n * @param {any} lower\n * @param {boolean} lowerOpen\n */\nexport const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)\n","import * as t from './testing.js'\nimport * as idb from './indexeddb.js'\nimport { isBrowser } from './environment.js'\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n */\nconst initTestDB = db => idb.createStores(db, [['test', { autoIncrement: true }]])\nconst testDBName = 'idb-test'\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n */\nconst createTransaction = db => db.transaction(['test'], 'readwrite')\n\n/* istanbul ignore next */\n/**\n * @param {IDBTransaction} t\n * @return {IDBObjectStore}\n */\nconst getStore = t => idb.getStore(t, 'test')\n\n/* istanbul ignore next */\nexport const testRetrieveElements = async () => {\n t.skip(!isBrowser)\n t.describe('create, then iterate some keys')\n await idb.deleteDB(testDBName)\n const db = await idb.openDB(testDBName, initTestDB)\n const transaction = createTransaction(db)\n const store = getStore(transaction)\n await idb.put(store, 0, ['t', 1])\n await idb.put(store, 1, ['t', 2])\n const expectedKeys = [['t', 1], ['t', 2]]\n const expectedVals = [0, 1]\n const expectedKeysVals = [{ v: 0, k: ['t', 1] }, { v: 1, k: ['t', 2] }]\n t.describe('idb.getAll')\n const valsGetAll = await idb.getAll(store)\n t.compare(valsGetAll, expectedVals)\n t.describe('idb.getAllKeys')\n const valsGetAllKeys = await idb.getAllKeys(store)\n t.compare(valsGetAllKeys, expectedKeys)\n t.describe('idb.getAllKeysVals')\n const valsGetAllKeysVals = await idb.getAllKeysValues(store)\n t.compare(valsGetAllKeysVals, expectedKeysVals)\n\n /**\n * @param {string} desc\n * @param {IDBKeyRange?} keyrange\n */\n const iterateTests = async (desc, keyrange) => {\n t.describe(`idb.iterate (${desc})`)\n /**\n * @type {Array<{v:any,k:any}>}\n */\n const valsIterate = []\n await idb.iterate(store, keyrange, (v, k) => {\n valsIterate.push({ v, k })\n })\n t.compare(valsIterate, expectedKeysVals)\n t.describe(`idb.iterateKeys (${desc})`)\n /**\n * @type {Array<any>}\n */\n const keysIterate = []\n await idb.iterateKeys(store, keyrange, key => {\n keysIterate.push(key)\n })\n t.compare(keysIterate, expectedKeys)\n }\n await iterateTests('range=null', null)\n const range = idb.createIDBKeyRangeBound(['t', 1], ['t', 2], false, false)\n // adding more items that should not be touched by iteration with above range\n await idb.put(store, 2, ['t', 3])\n await idb.put(store, 2, ['t', 0])\n await iterateTests('range!=null', range)\n\n t.describe('idb.get')\n const getV = await idb.get(store, ['t', 1])\n t.assert(getV === 0)\n t.describe('idb.del')\n await idb.del(store, ['t', 0])\n const getVDel = await idb.get(store, ['t', 0])\n t.assert(getVDel === undefined)\n t.describe('idb.add')\n await idb.add(store, 99, 42)\n const idbVAdd = await idb.get(store, 42)\n t.assert(idbVAdd === 99)\n t.describe('idb.addAutoKey')\n const key = await idb.addAutoKey(store, 1234)\n const retrieved = await idb.get(store, key)\n t.assert(retrieved === 1234)\n}\n","import * as binary from '../binary.js'\nimport * as math from '../math.js'\n\n/**\n * @module prng\n */\nconst N = 624\nconst M = 397\n\n/**\n * @param {number} u\n * @param {number} v\n */\nconst twist = (u, v) => ((((u & 0x80000000) | (v & 0x7fffffff)) >>> 1) ^ ((v & 1) ? 0x9908b0df : 0))\n\n/**\n * @param {Uint32Array} state\n */\nconst nextState = state => {\n let p = 0\n let j\n for (j = N - M + 1; --j; p++) {\n state[p] = state[p + M] ^ twist(state[p], state[p + 1])\n }\n for (j = M; --j; p++) {\n state[p] = state[p + M - N] ^ twist(state[p], state[p + 1])\n }\n state[p] = state[p + M - N] ^ twist(state[p], state[0])\n}\n\n/**\n * This is a port of Shawn Cokus's implementation of the original Mersenne Twister algorithm (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/MTARCOK/mt19937ar-cok.c).\n * MT has a very high period of 2^19937. Though the authors of xorshift describe that a high period is not\n * very relevant (http://vigna.di.unimi.it/xorshift/). It is four times slower than xoroshiro128plus and\n * needs to recompute its state after generating 624 numbers.\n *\n * ```js\n * const gen = new Mt19937(new Date().getTime())\n * console.log(gen.next())\n * ```\n *\n * @public\n */\nexport class Mt19937 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n const state = new Uint32Array(N)\n state[0] = seed\n for (let i = 1; i < N; i++) {\n state[i] = (math.imul(1812433253, (state[i - 1] ^ (state[i - 1] >>> 30))) + i) & binary.BITS32\n }\n this._state = state\n this._i = 0\n nextState(this._state)\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n if (this._i === N) {\n // need to compute a new state\n nextState(this._state)\n this._i = 0\n }\n let y = this._state[this._i++]\n y ^= (y >>> 11)\n y ^= (y << 7) & 0x9d2c5680\n y ^= (y << 15) & 0xefc60000\n y ^= (y >>> 18)\n return (y >>> 0) / (binary.BITS32 + 1)\n }\n}\n","\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as prng from './prng.js'\nimport { MAX_SAFE_INTEGER } from './number.js'\nimport * as binary from './binary.js'\nimport * as t from './testing.js'\nimport { Xorshift32 } from './prng/Xorshift32.js'\nimport { Mt19937 } from './prng/Mt19937.js'\nimport * as dom from './dom.js'\nimport { isBrowser, production } from './environment.js'\nimport * as math from './math.js'\n\nconst genTestData = 5000\n\n/**\n * @param {t.TestCase} tc\n * @param {prng.PRNG} gen\n */\nconst runGenTest = (tc, gen) => {\n t.group('next - average distribution', () => {\n let sum = 0\n for (let i = 0; i < genTestData; i++) {\n const next = gen.next()\n if (next >= 1) {\n t.fail('unexpected prng result')\n }\n sum += next\n }\n const avg = sum / genTestData\n t.assert(avg >= 0.45)\n t.assert(avg <= 0.55)\n })\n\n t.group('bool - bool distribution is fair', () => {\n let head = 0\n let tail = 0\n let b\n let i\n\n for (i = 0; i < genTestData; i++) {\n b = prng.bool(gen)\n if (b) {\n head++\n } else {\n tail++\n }\n }\n t.info(`Generated ${head} heads and ${tail} tails.`)\n t.assert(tail >= math.floor(genTestData * 0.45), 'Generated enough tails.')\n t.assert(head >= math.floor(genTestData * 0.45), 'Generated enough heads.')\n })\n t.group('int31 - integers average correctly', () => {\n let count = 0\n let i\n\n for (i = 0; i < genTestData; i++) {\n count += prng.uint32(gen, 0, 100)\n }\n const average = count / genTestData\n const expectedAverage = 100 / 2\n t.info(`Average is: ${average}. Expected average is ${expectedAverage}.`)\n t.assert(math.abs(average - expectedAverage) <= 2, 'Expected average is at most 1 off.')\n })\n\n t.group('int32 - generates integer with 32 bits', () => {\n let largest = 0\n let smallest = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.int32(gen, -binary.BITS31, binary.BITS31)\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest < -1000, 'Smallest number is negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest} (0x${largest.toString(16)})`)\n t.info(`Smallest number generated is ${smallest} (0x${smallest.toString(16)})`)\n t.assert((smallest & binary.BIT32) !== 0, 'Largest number is 32 bits long') // largest.. assuming we convert int to uint\n })\n\n t.group('uint32 - generates unsigned integer with 32 bits', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint32(gen, 0, binary.BITS32)\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num} (0x${num.toString(16)})`)\n t.assert((num & binary.BIT32) !== 0, 'Largest number is 32 bits long.')\n })\n\n t.group('int53 - generates integer exceeding 32 bits', () => {\n let largest = 0\n let smallest = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.int53(gen, Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest < -1000, 'Smallest number is negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest}`)\n t.info(`Smallest number generated is ${smallest}`)\n t.assert(largest > (binary.BITS32 >>> 0), 'Largest number exceeds BITS32')\n t.assert(smallest < binary.BITS32, 'Smallest Number is smaller than BITS32 (negative)')\n })\n\n t.group('uint53 - generates integer exceeding 32 bits', () => {\n let largest = 0\n let smallest = 10000\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint53(gen, 0, Number.MAX_SAFE_INTEGER)\n if (newNum > largest) {\n largest = newNum\n }\n /* istanbul ignore if */\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.assert(smallest >= 0, 'Smallest number is not negative')\n t.assert(largest > 1000, 'Largest number is positive')\n t.info(`Largest number generated is ${largest}`)\n t.info(`Smallest number generated is ${smallest}`)\n t.assert(largest > (binary.BITS32 >>> 0), 'Largest number exceeds BITS32')\n })\n\n t.group('int31 - generates integer with 31 bits', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.uint32(gen, 0, binary.BITS31)\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num} (0x${num.toString(16)})`)\n t.assert((num & binary.BIT31) !== 0, 'Largest number is 31 bits long.')\n })\n\n t.group('real - has 53 bit resolution', () => {\n let num = 0\n let i\n let newNum\n for (i = 0; i < genTestData; i++) {\n newNum = prng.real53(gen) * MAX_SAFE_INTEGER\n if (newNum > num) {\n num = newNum\n }\n }\n t.info(`Largest number generated is ${num}.`)\n t.assert((MAX_SAFE_INTEGER - num) / MAX_SAFE_INTEGER < 0.01, 'Largest number is close to MAX_SAFE_INTEGER (at most 1% off).')\n })\n\n t.group('char - generates all ascii characters', () => {\n const charSet = new Set()\n const chars = ' !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\"'\n for (let i = chars.length - 1; i >= 0; i--) {\n charSet.add(chars[i])\n }\n for (let i = 0; i < genTestData; i++) {\n const char = prng.char(gen)\n charSet.delete(char)\n }\n t.info(`Charactes missing: ${charSet.size} - generating all of \"${chars}\"`)\n t.assert(charSet.size === 0, 'Generated all documented characters.')\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorXoroshiro128plus = tc => runGenTest(tc, new Xoroshiro128plus(tc.seed))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorXorshift32 = tc => {\n t.skip(!production)\n runGenTest(tc, new Xorshift32(tc.seed))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGeneratorMt19937 = tc => {\n t.skip(!production)\n runGenTest(tc, new Mt19937(tc.seed))\n}\n\n/* istanbul ignore next */\n/**\n * @param {prng.PRNG} gen\n * @param {t.TestCase} tc\n */\nconst printDistribution = (gen, tc) => {\n const DIAMETER = genTestData / 50\n const canvas = dom.canvas(DIAMETER * 3, DIAMETER)\n const ctx = canvas.getContext('2d')\n if (ctx == null) {\n return t.skip()\n }\n ctx.fillStyle = 'blue'\n for (let i = 0; i < genTestData; i++) {\n const x = prng.int32(gen, 0, DIAMETER * 3)\n const y = prng.int32(gen, 0, DIAMETER)\n ctx.fillRect(x, y, 1, 2)\n }\n t.printCanvas(canvas, DIAMETER)\n}\n\n/* istanbul ignore next */\n/**\n * @param {t.TestCase} tc\n */\nexport const testNumberDistributions = tc => {\n t.skip(!isBrowser)\n t.group('Xoroshiro128plus', () => printDistribution(new Xoroshiro128plus(tc.seed), tc))\n t.group('Xorshift32', () => printDistribution(new Xorshift32(tc.seed), tc))\n t.group('MT19937', () => printDistribution(new Mt19937(tc.seed), tc))\n}\n","import * as statistics from './statistics.js'\nimport * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMedian = tc => {\n t.assert(math.isNaN(statistics.median([])), 'median([]) = NaN')\n t.assert(statistics.median([1]) === 1, 'median([x]) = x')\n t.assert(statistics.median([1, 2, 3]) === 2, 'median([a,b,c]) = b')\n t.assert(statistics.median([1, 2, 3, 4]) === (2 + 3) / 2, 'median([a,b,c,d]) = (b+c)/2')\n t.assert(statistics.median([1, 2, 3, 4, 5]) === 3, 'median([a,b,c,d,e]) = c')\n t.assert(statistics.median([1, 2, 3, 4, 5, 6]) === (3 + 4) / 2, 'median([a,b,c,d,e,f]) = (c+d)/2')\n}\n","\nimport * as binary from './binary.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBitx = tc => {\n for (let i = 1; i <= 32; i++) {\n // @ts-ignore\n t.assert(binary[`BIT${i}`] === (1 << (i - 1)), `BIT${i}=${1 << (i - 1)}`)\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBitsx = tc => {\n t.assert(binary.BITS0 === 0)\n for (let i = 1; i < 32; i++) {\n const expected = ((1 << i) - 1) >>> 0\n // @ts-ignore\n const have = binary[`BITS${i}`]\n t.assert(have === expected, `BITS${i}=${have}=${expected}`)\n }\n t.assert(binary.BITS32 === 0xFFFFFFFF)\n}\n","import * as random from './random.js'\nimport * as t from './testing.js'\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUint32 = tc => {\n const iterations = 10000\n let largest = 0\n let smallest = number.HIGHEST_INT32\n let newNum = 0\n let lenSum = 0\n let ones = 0\n for (let i = 0; i < iterations; i++) {\n newNum = random.uint32()\n lenSum += newNum.toString().length\n ones += newNum.toString(2).split('').filter(x => x === '1').length\n if (newNum > largest) {\n largest = newNum\n }\n if (newNum < smallest) {\n smallest = newNum\n }\n }\n t.info(`Largest number generated is ${largest} (0x${largest.toString(16)})`)\n t.info(`Smallest number generated is ${smallest} (0x${smallest.toString(16)})`)\n t.info(`Average decimal length of number is ${lenSum / iterations}`)\n t.info(`Average number of 1s in number is ${ones / iterations} (expecting ~16)`)\n t.assert(((largest & binary.BITS32) >>> 0) === largest, 'Largest number is 32 bits long.')\n t.assert(((smallest & binary.BITS32) >>> 0) === smallest, 'Smallest number is 32 bits long.')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUuidv4 = tc => {\n t.info(`Generated a UUIDv4: ${random.uuidv4()}`)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUuidv4Overlaps = tc => {\n t.skip(!t.production)\n const iterations = t.extensive ? 1000000 : 10000\n const uuids = new Set()\n for (let i = 0; i < iterations; i++) {\n const uuid = random.uuidv4()\n if (uuids.has(uuid)) {\n t.fail('uuid already exists')\n } else {\n uuids.add(uuid)\n }\n if (uuids.size % (iterations / 20) === 0) {\n t.info(`${math.round(uuids.size * 100 / iterations)}% complete`)\n }\n }\n t.assert(uuids.size === iterations)\n}\n","import * as promise from './promise.js'\nimport * as t from './testing.js'\nimport * as time from './time.js'\nimport * as error from './error.js'\n\n/**\n * @param {Promise<any>} p\n * @param {number} min\n * @param {number} max\n */\nconst measureP = (p, min, max) => {\n const start = time.getUnixTime()\n return p.then(() => {\n const duration = time.getUnixTime() - start\n t.assert(duration <= max, 'Expected promise to take less time')\n t.assert(duration >= min, 'Expected promise to take more time')\n })\n}\n\n/**\n * @template T\n * @param {Promise<T>} p\n * @return {Promise<T>}\n */\nconst failsP = p => promise.create((resolve, reject) => p.then(() => reject(error.create('Promise should fail')), resolve))\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatPromise = async tc => {\n t.assert(promise.createEmpty(r => r()).constructor === Promise, 'p.create() creates a Promise')\n t.assert(promise.resolve().constructor === Promise, 'p.reject() creates a Promise')\n const rejectedP = promise.reject()\n t.assert(rejectedP.constructor === Promise, 'p.reject() creates a Promise')\n rejectedP.catch(() => {})\n await promise.createEmpty(r => r())\n await failsP(promise.reject())\n await promise.resolve()\n await measureP(promise.wait(10), 7, 1000)\n await measureP(failsP(promise.until(15, () => false)), 15, 1000)\n const startTime = time.getUnixTime()\n await measureP(promise.until(0, () => (time.getUnixTime() - startTime) > 100), 100, 1000)\n await promise.all([promise.wait(5), promise.wait(10)])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testispromise = tc => {\n t.assert(promise.isPromise(new Promise(() => {})))\n t.assert(promise.isPromise(promise.create(() => {})))\n const rej = promise.reject()\n t.assert(promise.isPromise(rej))\n rej.catch(() => {})\n t.assert(promise.isPromise(promise.resolve()))\n t.assert(promise.isPromise({ then: () => {}, catch: () => {}, finally: () => {} }))\n t.fails(() => {\n t.assert(promise.isPromise({ then: () => {}, catch: () => {} }))\n })\n}\n","\nexport class QueueNode {\n constructor () {\n /**\n * @type {QueueNode|null}\n */\n this.next = null\n }\n}\n\nexport class Queue {\n constructor () {\n /**\n * @type {QueueNode | null}\n */\n this.start = null\n /**\n * @type {QueueNode | null}\n */\n this.end = null\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @return {Queue}\n */\nexport const create = () => new Queue()\n\n/**\n * @param {Queue} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * @param {Queue} queue\n * @param {QueueNode} n\n */\nexport const enqueue = (queue, n) => {\n if (queue.end !== null) {\n queue.end.next = n\n queue.end = n\n } else {\n queue.end = n\n queue.start = n\n }\n}\n\n/**\n * @param {Queue} queue\n * @return {QueueNode | null}\n */\nexport const dequeue = queue => {\n const n = queue.start\n if (n !== null) {\n // @ts-ignore\n queue.start = n.next\n return n\n }\n return null\n}\n","import * as t from './testing.js'\nimport * as queue from './queue.js'\n\nclass QueueItem extends queue.QueueNode {\n /**\n * @param {number} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEnqueueDequeue = tc => {\n const N = 30\n /**\n * @type {queue.Queue}\n */\n const q = queue.create()\n t.assert(queue.isEmpty(q))\n t.assert(queue.dequeue(q) === null)\n for (let i = 0; i < N; i++) {\n queue.enqueue(q, new QueueItem(i))\n t.assert(!queue.isEmpty(q))\n }\n for (let i = 0; i < N; i++) {\n const item = /** @type {QueueItem} */ (queue.dequeue(q))\n t.assert(item !== null && item.v === i)\n }\n t.assert(queue.dequeue(q) === null)\n}\n","import * as map from './map.js'\nimport * as math from './math.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMap = tc => {\n const m = map.create()\n m.set(1, 2)\n m.set(2, 3)\n t.assert(map.map(m, (value, key) => value * 2 + key).reduce(math.add) === 13)\n let numberOfWrites = 0\n const createT = () => {\n numberOfWrites++\n return {}\n }\n map.setIfUndefined(m, 3, createT)\n map.setIfUndefined(m, 3, createT)\n map.setIfUndefined(m, 3, createT)\n t.compare(map.copy(m), m)\n t.assert(numberOfWrites === 1)\n}\n","import * as eventloop from './eventloop.js'\nimport * as t from './testing.js'\nimport * as promise from './promise.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEventloopOrder = tc => {\n let currI = 0\n for (let i = 0; i < 10; i++) {\n const bi = i\n eventloop.enqueue(() => {\n t.assert(currI++ === bi)\n })\n }\n eventloop.enqueue(() => {\n t.assert(currI === 10)\n })\n t.assert(currI === 0)\n return promise.all([\n promise.createEmpty(resolve => eventloop.enqueue(resolve)),\n promise.until(0, () => currI === 10)\n ])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTimeout = async tc => {\n let set = false\n const timeout = eventloop.timeout(0, () => {\n set = true\n })\n timeout.destroy()\n await promise.create(resolve => {\n eventloop.timeout(10, resolve)\n })\n t.assert(set === false)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInterval = async tc => {\n let set = false\n const timeout = eventloop.interval(1, () => {\n set = true\n })\n timeout.destroy()\n let i = 0\n eventloop.interval(1, () => {\n i++\n })\n await promise.until(0, () => i > 2)\n t.assert(set === false)\n t.assert(i > 1)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnimationFrame = async tc => {\n let x = false\n eventloop.animationFrame(() => { x = true })\n await promise.until(0, () => x)\n t.assert(x)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIdleCallback = async tc => {\n await promise.create(resolve => {\n eventloop.idleCallback(resolve)\n })\n}\n","import * as time from './time.js'\nimport * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTime = tc => {\n const l = time.getDate().getTime()\n const r = time.getUnixTime()\n t.assert(math.abs(l - r) < 10, 'Times generated are roughly the same')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testHumanDuration = tc => {\n t.assert(time.humanizeDuration(10) === '10ms')\n t.assert(time.humanizeDuration(0.1) === '100μs')\n t.assert(time.humanizeDuration(61030) === '1min 1s')\n t.assert(time.humanizeDuration(60030) === '1min')\n t.assert(time.humanizeDuration(3600000) === '1h')\n t.assert(time.humanizeDuration(3640000) === '1h 1min')\n t.assert(time.humanizeDuration(3700000) === '1h 2min')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 29000) === '1h')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 31000) === '1h 1min')\n t.assert(time.humanizeDuration(60 * 60 * 1000 + 31000 * 3) === '1h 2min')\n t.assert(time.humanizeDuration(3600000 * 25) === '1d 1h')\n t.assert(time.humanizeDuration(3600000 * 24.6) === '1d 1h')\n t.assert(time.humanizeDuration(3600000 * 25.6) === '1d 2h')\n t.assert(time.humanizeDuration(3600000 * 24 * 400) === '400d')\n // test round\n t.assert(time.humanizeDuration(6001) === '6s')\n}\n","import * as t from './testing.js'\nimport * as pair from './pair.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testPair = tc => {\n const ps = [pair.create(1, 2), pair.create(3, 4), pair.createReversed(6, 5)]\n t.describe('Counting elements in pair list')\n let countLeft = 0\n let countRight = 0\n pair.forEach(ps, (left, right) => {\n countLeft += left\n countRight += right\n })\n t.assert(countLeft === 9)\n t.assert(countRight === 12)\n t.assert(countLeft === pair.map(ps, left => left).reduce(math.add))\n t.assert(countRight === pair.map(ps, (left, right) => right).reduce(math.add))\n}\n","import * as t from './testing.js'\nimport * as object from './object.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testObject = tc => {\n t.assert(object.create().constructor === undefined, 'object.create creates an empty object without constructor')\n t.describe('object.equalFlat')\n t.assert(object.equalFlat({}, {}), 'comparing equal objects')\n t.assert(object.equalFlat({ x: 1 }, { x: 1 }), 'comparing equal objects')\n t.assert(object.equalFlat({ x: 'dtrn' }, { x: 'dtrn' }), 'comparing equal objects')\n t.assert(!object.equalFlat({ x: {} }, { x: {} }), 'flatEqual does not dive deep')\n t.assert(object.equalFlat({ x: undefined }, { x: undefined }), 'flatEqual handles undefined')\n t.assert(!object.equalFlat({ x: undefined }, { y: {} }), 'flatEqual handles undefined')\n t.describe('object.every')\n t.assert(object.every({ a: 1, b: 3 }, (v, k) => (v % 2) === 1 && k !== 'c'))\n t.assert(!object.every({ a: 1, b: 3, c: 5 }, (v, k) => (v % 2) === 1 && k !== 'c'))\n t.describe('object.some')\n t.assert(object.some({ a: 1, b: 3 }, (v, k) => v === 3 && k === 'b'))\n t.assert(!object.some({ a: 1, b: 5 }, (v, k) => v === 3))\n t.assert(object.some({ a: 1, b: 5 }, () => true))\n t.assert(!object.some({ a: 1, b: 5 }, (v, k) => false))\n t.describe('object.forEach')\n let forEachSum = 0\n object.forEach({ x: 1, y: 3 }, (v, k) => { forEachSum += v })\n t.assert(forEachSum === 4)\n t.describe('object.map')\n t.assert(object.map({ x: 1, z: 5 }, (v, k) => v).reduce(math.add) === 6)\n t.describe('object.length')\n t.assert(object.length({}) === 0)\n t.assert(object.length({ x: 1 }) === 1)\n}\n","import * as t from './testing.js'\nimport * as math from './math.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMath = tc => {\n t.describe('math.abs')\n t.assert(math.abs(-1) === 1)\n t.assert(math.abs(Number.MIN_SAFE_INTEGER) === Number.MAX_SAFE_INTEGER)\n t.assert(math.abs(Number.MAX_SAFE_INTEGER) === Number.MAX_SAFE_INTEGER)\n t.describe('math.add')\n t.assert([1, 2, 3, 4, 5].reduce(math.add) === 15)\n t.describe('math.ceil')\n t.assert(math.ceil(1.5) === 2)\n t.assert(math.ceil(-1.5) === -1)\n t.describe('math.floor')\n t.assert(math.floor(1.5) === 1)\n t.assert(math.floor(-1.5) === -2)\n t.describe('math.isNaN')\n t.assert(math.isNaN(NaN))\n // @ts-ignore\n t.assert(!math.isNaN(null))\n t.describe('math.max')\n t.assert([1, 3, 65, 1, 314, 25, 3475, 2, 1].reduce(math.max) === 3475)\n t.describe('math.min')\n t.assert([1, 3, 65, 1, 314, 25, 3475, 2, 1].reduce(math.min) === 1)\n t.describe('math.round')\n t.assert(math.round(0.5) === 1)\n t.assert(math.round(-0.5) === 0)\n}\n","import * as t from './testing.js'\nimport * as number from './number.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testNumber = tc => {\n t.describe('isNaN')\n t.assert(number.isNaN(NaN))\n t.assert(!number.isNaN(1 / 0))\n // @ts-ignore\n t.assert(number.isNaN('a' / 0))\n t.assert(!number.isNaN(0))\n t.describe('isInteger')\n t.assert(!number.isInteger(1 / 0))\n t.assert(!number.isInteger(NaN))\n t.assert(number.isInteger(0))\n t.assert(number.isInteger(-1))\n}\n","import * as t from './testing.js'\nimport * as buffer from './buffer.js'\nimport * as prng from './prng.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatBase64Encoding = tc => {\n const gen = tc.prng\n const barr = prng.uint8Array(gen, 100000)\n const copied = buffer.copyUint8Array(barr)\n const encoded = buffer.toBase64(barr)\n t.assert(encoded.constructor === String)\n const decoded = buffer.fromBase64(encoded)\n t.assert(decoded.constructor === Uint8Array)\n t.assert(decoded.byteLength === barr.byteLength)\n for (let i = 0; i < barr.length; i++) {\n t.assert(barr[i] === decoded[i])\n }\n t.compare(copied, decoded)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAnyEncoding = tc => {\n const obj = { val: 1, arr: [1, 2], str: '409231dtrnä' }\n const res = buffer.decodeAny(buffer.encodeAny(obj))\n t.compare(obj, res)\n}\n","/**\n * Efficient sort implementations.\n *\n * Note: These sort implementations were created to compare different sorting algorithms in JavaScript.\n * Don't use them if you don't know what you are doing. Native Array.sort is almost always a better choice.\n *\n * @module sort\n */\n\nimport * as math from './math.js'\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {number} lo\n * @param {number} hi\n * @param {function(T,T):number} compare\n */\nexport const _insertionSort = (arr, lo, hi, compare) => {\n for (let i = lo + 1; i <= hi; i++) {\n for (let j = i; j > 0 && compare(arr[j - 1], arr[j]) > 0; j--) {\n const tmp = arr[j]\n arr[j] = arr[j - 1]\n arr[j - 1] = tmp\n }\n }\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @return {void}\n */\nexport const insertionSort = (arr, compare) => {\n _insertionSort(arr, 0, arr.length - 1, compare)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @param {number} lo\n * @param {number} hi\n * @param {function(T,T):number} compare\n */\nconst _quickSort = (arr, lo, hi, compare) => {\n if (hi - lo < 42) {\n _insertionSort(arr, lo, hi, compare)\n } else {\n const pivot = arr[math.floor((lo + hi) / 2)]\n let i = lo\n let j = hi\n while (true) {\n while (compare(pivot, arr[i]) > 0) {\n i++\n }\n while (compare(arr[j], pivot) > 0) {\n j--\n }\n if (i >= j) {\n break\n }\n // swap arr[i] with arr[j]\n // and increment i and j\n const arri = arr[i]\n arr[i++] = arr[j]\n arr[j--] = arri\n }\n _quickSort(arr, lo, j, compare)\n _quickSort(arr, j + 1, hi, compare)\n }\n}\n\n/**\n * This algorithm beats Array.prototype.sort in Chrome only with arrays with 10 million entries.\n * In most cases [].sort will do just fine. Make sure to performance test your use-case before you\n * integrate this algorithm.\n *\n * Note that Chrome's sort is now a stable algorithm (Timsort). Quicksort is not stable.\n *\n * @template T\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @return {void}\n */\nexport const quicksort = (arr, compare) => {\n _quickSort(arr, 0, arr.length - 1, compare)\n}\n","import * as prng from './prng.js'\nimport * as t from './testing.js'\nimport * as sort from './sort.js'\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {Array<T>} arr\n * @param {function(T,T):number} compare\n * @param {function(T):number} getVal\n */\nconst runSortTest = (tc, arr, compare, getVal) => {\n const arrSort = arr\n const arrQuicksort = arr.slice()\n const arrInsertionsort = arr.slice()\n t.measureTime('Array.constructor.sort', () => {\n arrSort.sort(compare)\n })\n if (arrInsertionsort.length <= 10000) {\n t.measureTime('Insertionsort', () => {\n sort.insertionSort(arrInsertionsort, compare)\n })\n t.compareArrays(arrSort, arrInsertionsort, 'compare Insertionsort with expected result')\n }\n t.measureTime('Quicksort', () => {\n sort.quicksort(arrQuicksort, compare)\n })\n // quickSort is not stable\n t.compareArrays(arrSort.map(getVal), arrQuicksort.map(getVal), 'compare Quicksort with expected result')\n}\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {function(number):Array<T>} createArray\n * @param {function(T,T):number} compare 0 if equal, 1 if a<b, -1 otherwise\n * @param {function(T):number} getVal\n */\nconst createSortTest = (tc, createArray, compare, getVal) => {\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 10 elements')\n runSortTest(tc, createArray(10), compare, getVal)\n t.describe('sort 50 elements')\n runSortTest(tc, createArray(50), compare, getVal)\n t.describe('sort 100 elements')\n runSortTest(tc, createArray(100), compare, getVal)\n t.describe('sort 500 elements')\n runSortTest(tc, createArray(500), compare, getVal)\n t.describe('sort 1k elements')\n runSortTest(tc, createArray(1000), compare, getVal)\n t.describe('sort 10k elements')\n runSortTest(tc, createArray(10000), compare, getVal)\n t.describe('sort 100k elements')\n runSortTest(tc, createArray(100000), compare, getVal)\n if (t.extensive) {\n t.describe('sort 1M elements')\n runSortTest(tc, createArray(1000000), compare, getVal)\n t.describe('sort 10M elements')\n runSortTest(tc, createArray(10000000), compare, getVal)\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortUint16 = tc => {\n t.skip(!t.production)\n /**\n * @param {number} i\n * @return {number}\n */\n const getVal = i => i\n /**\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n const compare = (a, b) => a - b\n /**\n * @param {number} len\n * @return {Array<number>}\n */\n const createArray = len => Array.from(new Uint16Array(prng.uint8Array(tc.prng, len * 2)))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortUint32 = tc => {\n t.skip(!t.production)\n /**\n * @param {number} i\n * @return {number}\n */\n const getVal = i => i\n /**\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n const compare = (a, b) => a - b\n /**\n * @param {number} len\n * @return {Array<number>}\n */\n const createArray = len => Array.from(prng.uint32Array(tc.prng, len))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSortObjectUint32 = tc => {\n /**\n * @param {{index:number}} obj\n * @return {number}\n */\n const getVal = obj => obj.index\n /**\n * @param {{index:number}} a\n * @param {{index:number}} b\n * @return {number}\n */\n const compare = (a, b) => a.index - b.index\n /**\n * @param {number} len\n * @return {Array<{index:number}>}\n */\n const createArray = len => Array.from(prng.uint32Array(tc.prng, len)).map(index => ({ index }))\n createSortTest(tc, createArray, compare, getVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testListVsArrayPerformance = tc => {\n /**\n * @typedef {{ val: number }} Val\n * @typedef {{ val: Val, next: item }|null} item\n */\n const len = 100000\n t.measureTime('array creation', () => {\n /**\n * @type {Array<Val>}\n */\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = { val: i }\n }\n })\n t.measureTime('list creation', () => {\n /**\n * @type {item}\n */\n const listStart = { val: { val: 0 }, next: null }\n for (let i = 1, n = listStart; i < len; i++) {\n const next = { val: { val: i }, next: null }\n n.next = next\n n = next\n }\n })\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object<string,string>}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object<string,string>}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (var i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object<string,string>} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","import * as t from './testing.js'\nimport * as url from './url.js'\n\n/**\n * @param {Object<string,any>} params\n */\nconst paramTest = params => {\n const out = url.decodeQueryParams(url.encodeQueryParams(params))\n t.compareObjects(params, out, 'Compare params')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUrlParamQuery = tc => {\n paramTest({})\n paramTest({ a: '4' })\n paramTest({ a: 'dtrn', b: '0x0' })\n\n t.compareObjects({ }, url.decodeQueryParams('http://localhost:8080/dtrn?'))\n t.compareObjects({ a: 'ay' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay'))\n t.compareObjects({ a: '' }, url.decodeQueryParams('http://localhost:8080/dtrn?a='))\n t.compareObjects({ a: '' }, url.decodeQueryParams('http://localhost:8080/dtrn?a'))\n t.compareObjects({ a: 'ay' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay&'))\n t.compareObjects({ a: 'ay', b: 'bey' }, url.decodeQueryParams('http://localhost:8080/dtrn?a=ay&b=bey'))\n}\n","import * as t from './testing.js'\nimport * as metric from './metric.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMetricPrefix = tc => {\n t.compare(metric.prefix(0), { n: 0, prefix: '' })\n t.compare(metric.prefix(1, -1), { n: 1, prefix: 'm' })\n t.compare(metric.prefix(1.5), { n: 1.5, prefix: '' })\n t.compare(metric.prefix(100.5), { n: 100.5, prefix: '' })\n t.compare(metric.prefix(1000.5), { n: 1.0005, prefix: 'k' })\n t.compare(metric.prefix(0.3), { n: 300, prefix: 'm' })\n t.compare(metric.prefix(0.001), { n: 1, prefix: 'm' })\n // up\n t.compare(metric.prefix(10000), { n: 10, prefix: 'k' })\n t.compare(metric.prefix(1e7), { n: 10, prefix: 'M' })\n t.compare(metric.prefix(1e11), { n: 100, prefix: 'G' })\n t.compare(metric.prefix(1e12 + 3), { n: (1e12 + 3) / 1e12, prefix: 'T' })\n t.compare(metric.prefix(1e15), { n: 1, prefix: 'P' })\n t.compare(metric.prefix(1e20), { n: 100, prefix: 'E' })\n t.compare(metric.prefix(1e22), { n: 10, prefix: 'Z' })\n t.compare(metric.prefix(1e24), { n: 1, prefix: 'Y' })\n t.compare(metric.prefix(1e28), { n: 10000, prefix: 'Y' })\n // down\n t.compare(metric.prefix(0.01), { n: 10, prefix: 'm' })\n t.compare(metric.prefix(1e-4), { n: 100, prefix: 'μ' })\n t.compare(metric.prefix(1e-9), { n: 1, prefix: 'n' })\n t.compare(metric.prefix(1e-12), { n: 1, prefix: 'p' })\n t.compare(metric.prefix(1e-14), { n: 10, prefix: 'f' })\n t.compare(metric.prefix(1e-18), { n: 1, prefix: 'a' })\n t.compare(metric.prefix(1e-21), { n: 1, prefix: 'z' })\n t.compare(metric.prefix(1e-22), { n: 100, prefix: 'y' })\n t.compare(metric.prefix(1e-30), { n: 0.000001, prefix: 'y' })\n}\n","import * as f from './function.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeepEquality = tc => {\n t.assert(f.equalityDeep(1, 1))\n t.assert(!f.equalityDeep(1, 2))\n t.assert(!f.equalityDeep(1, '1'))\n t.assert(!f.equalityDeep(1, null))\n\n const obj = { b: 5 }\n const map1 = new Map()\n const map2 = new Map()\n const map3 = new Map()\n const map4 = new Map()\n map1.set('a', obj)\n map2.set('a', { b: 5 })\n map3.set('b', obj)\n map4.set('a', obj)\n map4.set('b', obj)\n\n t.assert(f.equalityDeep({ a: 4 }, { a: 4 }))\n t.assert(f.equalityDeep({ a: 4, obj: { b: 5 } }, { a: 4, obj }))\n t.assert(!f.equalityDeep({ a: 4 }, { a: 4, obj }))\n t.assert(f.equalityDeep({ a: [], obj }, { a: [], obj }))\n t.assert(!f.equalityDeep({ a: [], obj }, { a: [], obj: undefined }))\n\n t.assert(f.equalityDeep({}, {}))\n t.assert(!f.equalityDeep({}, { a: 4 }))\n\n t.assert(f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 1]))\n t.assert(!f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 2]))\n t.assert(!f.equalityDeep([{ a: 4 }, 1], [{ a: 4 }, 1, 3]))\n t.assert(f.equalityDeep([], []))\n t.assert(!f.equalityDeep([1], []))\n\n t.assert(f.equalityDeep(map1, map2))\n t.assert(!f.equalityDeep(map1, map3))\n t.assert(!f.equalityDeep(map1, map4))\n\n const set1 = new Set([1])\n const set2 = new Set([true])\n const set3 = new Set([1, true])\n const set4 = new Set([true])\n\n t.assert(f.equalityDeep(set2, set4))\n t.assert(!f.equalityDeep(set1, set2))\n t.assert(!f.equalityDeep(set1, set3))\n t.assert(!f.equalityDeep(set1, set4))\n t.assert(!f.equalityDeep(set2, set3))\n t.assert(f.equalityDeep(set2, set4))\n\n const buf1 = Uint8Array.from([1, 2])\n const buf2 = Uint8Array.from([1, 3])\n const buf3 = Uint8Array.from([1, 2, 3])\n const buf4 = Uint8Array.from([1, 2])\n\n t.assert(!f.equalityDeep(buf1, buf2))\n t.assert(!f.equalityDeep(buf2, buf3))\n t.assert(!f.equalityDeep(buf3, buf4))\n t.assert(f.equalityDeep(buf4, buf1))\n\n t.assert(!f.equalityDeep(buf1.buffer, buf2.buffer))\n t.assert(!f.equalityDeep(buf2.buffer, buf3.buffer))\n t.assert(!f.equalityDeep(buf3.buffer, buf4.buffer))\n t.assert(f.equalityDeep(buf4.buffer, buf1.buffer))\n\n t.assert(!f.equalityDeep(buf1, buf4.buffer))\n}\n","import * as storage from './storage.js'\nimport * as t from './testing.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStorageModule = tc => {\n const s = storage.varStorage\n /**\n * @type {any}\n */\n let lastEvent = null\n storage.onChange(event => {\n lastEvent = event\n })\n s.setItem('key', 'value')\n t.assert(lastEvent === null)\n}\n","import { runTests } from './testing.js'\nimport * as array from './array.test.js'\nimport * as logging from './logging.test.js'\nimport * as string from './string.test.js'\nimport * as encoding from './encoding.test.js'\nimport * as diff from './diff.test.js'\nimport * as testing from './testing.test.js'\nimport * as indexeddb from './indexeddb.test.js'\nimport * as prng from './prng.test.js'\nimport * as log from './logging.js'\nimport * as statistics from './statistics.test.js'\nimport * as binary from './binary.test.js'\nimport * as random from './random.test.js'\nimport * as promise from './promise.test.js'\nimport * as queue from './queue.test.js'\nimport * as map from './map.test.js'\nimport * as eventloop from './eventloop.test.js'\nimport * as time from './time.test.js'\nimport * as pair from './pair.test.js'\nimport * as object from './object.test.js'\nimport * as math from './math.test.js'\nimport * as number from './number.test.js'\nimport * as buffer from './buffer.test.js'\nimport * as sort from './sort.test.js'\nimport * as url from './url.test.js'\nimport * as metric from './metric.test.js'\nimport * as func from './function.test.js'\nimport * as storage from './storage.test.js'\n\nimport { isBrowser, isNode } from './environment.js'\n\n/* istanbul ignore if */\nif (isBrowser) {\n log.createVConsole(document.body)\n}\n\nrunTests({\n array,\n logging,\n string,\n encoding,\n diff,\n testing,\n indexeddb,\n prng,\n statistics,\n binary,\n random,\n promise,\n queue,\n map,\n eventloop,\n time,\n pair,\n object,\n math,\n number,\n buffer,\n sort,\n url,\n metric,\n func,\n storage\n}).then(success => {\n /* istanbul ignore next */\n if (isNode) {\n process.exit(success ? 0 : 1)\n }\n})\n"],"names":["create","map","map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","forEach","pair.forEach","addEventListener","map.map","queue","enqueue","add","isNaN","math.log10","math.round","math.exp10","metric.prefix","math.floor","every","equalFlat","length","array.equalFlat","object.equalFlat","object.length","object.hasProperty","symbol.create","pair.create","dom.mapToStyleString","env.isNode","env.isBrowser","group","printCanvas","dom.element","dom.text","json.stringify","eventloop.enqueue","dom.append","dom.addEventListener","uint32","binary.BITS32","binary.BITS31","buffer.createUint8ArrayViewFromArrayBuffer","math.max","binary.BITS8","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","math.min","number.isInteger","string.fromCharCode","encoding.createEncoder","encoding.writeAny","encoding.toUint8Array","decoding.readAny","decoding.createDecoder","math.abs","buffer.createUint8ArrayFromLen","math.ceil","math.add","time.getUnixTime","env.hasConf","env.hasParam","env.getParam","random.uint32","prng.create","log.GREY","log.PURPLE","log.BLUE","log.groupCollapsed","log.group","promise.isPromise","log.printError","log.groupEnd","time.humanizeDuration","array.last","statistics.median","statistics.average","log.print","log.BOLD","log.UNBOLD","log.RED","log.UNCOLOR","log.GREEN","log.printCanvas","object.forEach","object.map","log.printImgBase64","array.appendTo","t.compareArrays","array.flatten","log.ORANGE","t.compareStrings","t.skip","string.utf8TextDecoder","prng.utf16String","t.measureTime","string._encodeUtf8Native","string._encodeUtf8Polyfill","t.compare","string.encodeUtf8","string._decodeUtf8Native","string._decodeUtf8Polyfill","t.assert","prng.int53","number.MIN_SAFE_INTEGER","number.MAX_SAFE_INTEGER","number.LOWEST_INT32","number.HIGHEST_INT32","prng.real53","prng.uint32","prng.uint8Array","prng.oneOf","encoding.writeVarUint","utf8ByteLength","string.utf8ByteLength","encoding.length","t.describe","encoding.writeVarString","decoding.peekVarString","decoding.readVarString","string.decodeUtf8","decoding.readVarUint","encoding.writeVarInt","decoding.readVarInt","prng.int32","decoding.peekVarUint","decoding.peekVarInt","t.info","encoding.writeUint8","encoding.writeUint16","encoding.writeUint32","encoding.setUint8","encoding.setUint16","encoding.setUint32","decoding.peekUint8","decoding.readUint8","decoding.peekUint16","decoding.readUint16","decoding.peekUint32","decoding.readUint32","decoding.readUint8Array","encoding.writeUint8Array","decoding.readVarUint8Array","encoding.writeVarUint8Array","binary.BITS16","decoding.readUint32BigEndian","encoding.writeUint32BigEndian","prng.uint53","decoding.readTailAsUint8Array","encoding.write","buffer.createUint8ArrayFromArrayBuffer","decoding.hasContent","decoding.skip8","decoding.clone","encoding.writeBinaryEncoder","encoding.RleEncoder","decoding.RleDecoder","encoding.RleIntDiffEncoder","decoding.RleIntDiffDecoder","encoding.UintOptRleEncoder","decoding.UintOptRleDecoder","encoding.IntDiffOptRleEncoder","decoding.IntDiffOptRleDecoder","encoding.IntDiffEncoder","decoding.IntDiffDecoder","char","prng.char","prng.word","encoding.StringEncoder","decoding.StringDecoder","object.assign","f.equalityFlat","f.equalityStrict","t.fails","t.compareObjects","t.fail","t.measureTimeAsync","promise.create","t.groupAsync","promise.wait","error.create","promise.all","getStore","idb.createStores","idb.getStore","idb.deleteDB","idb.openDB","idb.put","idb.getAll","idb.getAllKeys","idb.getAllKeysValues","idb.iterate","idb.iterateKeys","idb.createIDBKeyRangeBound","idb.get","idb.del","idb.add","idb.addAutoKey","math.imul","t.group","prng.bool","binary.BIT32","binary.BIT31","canvas","dom.canvas","t.printCanvas","math.isNaN","binary","binary.BITS0","random.uuidv4","t.production","t.extensive","promise.createEmpty","promise.resolve","promise.reject","promise.until","queue.QueueNode","queue.create","queue.isEmpty","queue.dequeue","queue.enqueue","map.setIfUndefined","map.copy","timeout","eventloop.timeout","eventloop.interval","eventloop.animationFrame","eventloop.idleCallback","time.getDate","pair.createReversed","pair.map","object.create","object.every","object.some","number.isNaN","buffer.copyUint8Array","buffer.toBase64","buffer.fromBase64","buffer.decodeAny","buffer.encodeAny","sort.insertionSort","sort.quicksort","prng.uint32Array","url.decodeQueryParams","url.encodeQueryParams","f.equalityDeep","storage.onChange","log.createVConsole"],"mappings":";;;EAAA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMA,QAAM,GAAG,MAAM,IAAI,GAAG,GAAE;AACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,CAAC,IAAI;EACzB,EAAE,MAAM,CAAC,GAAGA,QAAM,GAAE;EACpB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC;EACtC,EAAE,OAAO,CAAC;EACV,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK;EACrD,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAC;EACxB,EAAE,IAAI,GAAG,KAAK,SAAS,EAAE;EACzB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,EAAE,EAAC;EACjC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,KAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;EAC7B,EAAE,MAAM,GAAG,GAAG,GAAE;EAChB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;EAChC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAC;EAC3B,GAAG;EACH,EAAE,OAAO,GAAG;EACZ;;ECtEA;EACA;EACA;EACA;EACA;AACA;EACO,MAAM,YAAY,GAAG,MAAM,CAAC,aAAY;EACxC,MAAM,aAAa,GAAG,MAAM,CAAC,cAAa;AACjD;EACA;EACA;EACA;EACA;EACA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,GAAE;AACxC;EACA,MAAM,aAAa,GAAG,QAAO;AAC7B;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAC;AACzD;EACA,MAAM,kBAAkB,GAAG,WAAU;AACrC;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC;AACpI;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,GAAG,IAAI,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM;AAC7E;EACA;EACA;EACA;EACA;EACO,MAAM,mBAAmB,GAAG,GAAG,IAAI;EAC1C,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAC;EACzD,EAAE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAM;EAClC,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,EAAC;EACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAChC,IAAI,GAAG,CAAC,CAAC,CAAC,0BAA0B,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC;EACjE,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AACD;EACA;EACO,MAAM,eAAe,+BAA+B,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,EAAC;AACzH;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,EAAC;AACnE;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG,oBAAmB;AACnF;EACA;EACA;EACA;EACA;EACO,MAAM,mBAAmB,GAAG,GAAG,IAAI;EAC1C,EAAE,IAAI,YAAY,GAAG,GAAG,CAAC,OAAM;EAC/B,EAAE,IAAI,aAAa,GAAG,GAAE;EACxB,EAAE,IAAI,MAAM,GAAG,EAAC;EAChB,EAAE,OAAO,YAAY,GAAG,CAAC,EAAE;EAC3B,IAAI,MAAM,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,MAAK;EAC/D,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAC;EACxD,IAAI,MAAM,IAAI,QAAO;EACrB;EACA,IAAI,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,sBAAsB,KAAK,GAAE;EACjF,IAAI,YAAY,IAAI,QAAO;EAC3B,GAAG;EACH,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EAClD,EAAC;AACD;EACA;EACO,IAAI,eAAe,GAAG,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAC;AACnI;EACA;EACA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;EAC9E;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,eAAe,GAAG,KAAI;EACxB,CAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,GAAG,+BAA+B,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,EAAC;AAChG;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG;;ECjHhE;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG;;ECZ7D;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA,MAAM,kBAAkB,CAAC;EACzB,EAAE,WAAW,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAE;EACxB,GAAG;AACH;EACA;EACA;EACA;EACA;EACA,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE;EAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAC;EAC/B,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;EAChB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAC5B,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,IAAI,aAAa,GAAG,IAAI,kBAAkB,GAAE;EAC5C,IAAI,WAAW,GAAG,KAAI;AACtB;EACA,IAAI;EACJ;EACA;EACA,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;EAC3C,IAAI,aAAa,GAAG,aAAY;EAChC,IAAI,WAAW,GAAG,MAAK;EACvB,GAAG;EACH,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG;AACf;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,cAAa;AACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,YAAY,IAAI,WAAW,IAAI,gBAAgB,CAAC,SAAS,sBAAsB,YAAY;;EC7DnH;EACA;EACA;EACA;EACA;AAMA;EACA;EACA;EACO,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAC;EACnH;EACO,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,OAAM;EACjE;EACqB,OAAO,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAK;AAC9F;EACA;EACA;EACA;EACA,IAAI,OAAM;AAEV;EACA;EACA,MAAM,aAAa,GAAG,MAAM;EAC5B,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;EAC5B,IAAI,IAAI,MAAM,EAAE;EAChB,MAAM,MAAM,GAAGC,QAAU,GAAE;EAC3B,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,KAAI;EAChC,MAAM,IAAI,aAAa,GAAG,KAAI;EAC9B;EACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAC;EAC7B,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC7B,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;EACtC,YAAY,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,EAAC;EACzC,WAAW;EACX,UAAU,aAAa,GAAG,KAAI;EAC9B,SAAS,MAAM;EACf,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;EACtC,YAAY,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAC;EAC3C,YAAY,aAAa,GAAG,KAAI;EAChC,WAEW;EACX,SAAS;EACT,OAAO;EACP,MAAM,IAAI,aAAa,KAAK,IAAI,EAAE;EAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,EAAC;EACrC,OAAO;EACP;EACA,KAAK,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;EAC7C,MAAM,MAAM,GAAGA,QAAU,EAAE;EAC3B;EACA,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI;EAClE,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,UAAU,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAC;EAC5C,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAEC,aAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAC;EAClE,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAEA,aAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAC;EACjE,SAAS;EACT,OAAO,EAAC;EACR,KAAK,MAAM;EACX,MAAM,MAAM,GAAGD,QAAU,GAAE;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,OAAO,MAAM;EACf,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,IAAI,IAAI,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,EAAC;AACzD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAU;EACrF;AACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,IAAI,IAAI,MAAM,GAAGE,eAA0B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,GAAGA,eAA0B,CAACC,UAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC;AAOtK;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAI;AAClF;EACA;EACO,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY;;EC3G9C;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAML,QAAM,GAAG;;ECXtB;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACO,MAAM,IAAI,CAAC;EAClB;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;EAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;EACpB,IAAI,IAAI,CAAC,KAAK,GAAG,MAAK;EACtB,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMA,QAAM,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAC;AAC5D;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAC;AACpE;EACA;EACA;EACA;EACA;EACA;EACO,MAAMM,SAAO,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAC;AACvE;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAML,KAAG,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;;ECjD9D;AAUA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,4BAA4B,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,EAAE,EAAC;AAC5F;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,EAAC;AAC5D;EACA;EACA;EACA;EACA;EACO,MAAM,sBAAsB,GAAG,MAAM,GAAG,CAAC,sBAAsB,GAAE;AACxE;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAC;AAC9D;EACA;EACyB,0BAA0B,OAAO,SAAS,KAAK,WAAW,GAAG,IAAI,SAAS,EAAE,GAAG,IAAI,EAAC;AAS7G;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,KAAK,KAAK;EAC5C,EAAEM,SAAY,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;EACtC,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;EACzB,MAAM,EAAE,CAAC,eAAe,CAAC,GAAG,EAAC;EAC7B,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;EAC/B,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,EAAC;EAC9B,KAAK,MAAM;EACX;EACA,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAC;EACjC,KAAK;EACL,GAAG,EAAC;EACJ,EAAE,OAAO,EAAE;EACX,EAAC;AAYD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,QAAQ,IAAI;EACpC,EAAE,MAAM,QAAQ,GAAG,sBAAsB,GAAE;EAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAC;EACtC,GAAG;EACH,EAAE,OAAO,QAAQ;EACjB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK;EACzC,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAC;EACtC,EAAE,OAAO,MAAM;EACf,EAAC;AAOD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,kBAAgB,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAC;AA+B7E;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;EACvD,EAAE,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAC;AAC7D;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;EACzC,EAAE,MAAM,CAAC,qCAAqC,aAAa,CAAC,QAAQ,CAAC,EAAC;EACtE,EAAE,CAAC,CAAC,MAAM,GAAG,OAAM;EACnB,EAAE,CAAC,CAAC,KAAK,GAAG,MAAK;EACjB,EAAE,OAAO,CAAC;EACV,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,eAAc;AAclC;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,CAAC,IAAIC,KAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC;AA+D5F;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,EAAC;AACvE;EAC4B,GAAG,CAAC,aAAY;EACnB,GAAG,CAAC,UAAS;EACJ,GAAG,CAAC,mBAAkB;EAC5B,GAAG,CAAC,aAAY;EACf,GAAG,CAAC,cAAa;EACZ,GAAG,CAAC,mBAAkB;EAClB,GAAG,CAAC;;EChR1C;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,IAAI,CAAC;;ECZ9B;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA,IAAIC,OAAK,GAAG,GAAE;AACd;EACA,MAAM,SAAS,GAAG,MAAM;EACxB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,OAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,IAAIA,OAAK,CAAC,CAAC,CAAC,GAAE;EACd,GAAG;EACH,EAAEA,OAAK,GAAG,GAAE;EACZ,EAAC;AACD;EACA;EACA;EACA;EACO,MAAMC,SAAO,GAAG,CAAC,IAAI;EAC5B,EAAED,OAAK,CAAC,IAAI,CAAC,CAAC,EAAC;EACf,EAAE,IAAIA,OAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,EAAC;EAC5B,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA,MAAM,kBAAkB,GAAG,aAAa,IAAI,MAAM,EAAE,CAAC;EACrD;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE;EAC1B,IAAI,IAAI,CAAC,CAAC,GAAG,UAAS;EACtB,GAAG;AACH;EACA,EAAE,OAAO,CAAC,GAAG;EACb,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAC;EACzB,GAAG;EACH,EAAC;AACD;EACA,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,EAAC;AAChD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAC;AACxF;EACA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,EAAC;AAClD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAC;AAC3F;EACA;EACO,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,IAAI,OAAO,qBAAqB,KAAK,WAAW,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAC;AAC7H;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,EAAE,IAAI,OAAO,qBAAqB,KAAK,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAC;AAC5I;EACA;EACA;EACA,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,IAAI,OAAO,kBAAkB,KAAK,WAAW,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAC;AAC5G;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,EAAE,IAAI,OAAO,mBAAmB,KAAK,WAAW,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE;;EC3FnI;EACA;EACA;EACA;EACA;AACA;EACO,MAAM,KAAK,GAAG,IAAI,CAAC,MAAK;EACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAI;EACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAG;EACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAI;EACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAK;EACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAK;AAI/B;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAME,KAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAC;AAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAC;AAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAC;AAC1C;EACO,MAAMC,OAAK,GAAG,MAAM,CAAC,MAAK;EAGjC;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAC;AAG7C;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;;ECzD7D;EACA;EACA;EACA;EACA;AAwBA;EACA,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC;EAC7D,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC;AAC/D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,KAAK;EACjD,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGC,KAAU,CAAC,CAAC,EAAC;EAC1C,EAAE,IAAI,IAAI,GAAG,EAAC;EACd,EAAE,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE;EACjD,IAAI,cAAc,GAAE;EACpB,IAAI,IAAI,GAAE;EACV,GAAG;EACH,EAAE,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;EACrD,IAAI,cAAc,GAAE;EACpB,IAAI,IAAI,GAAE;EACV,GAAG;EACH,EAAE,MAAM,MAAM,GAAG,cAAc,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,cAAc,EAAC;EAC5F,EAAE,OAAO;EACT,IAAI,CAAC,EAAEC,KAAU,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAGC,KAAU,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAGA,KAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI;EAClG,IAAI,MAAM;EACV,GAAG;EACH;;ECvDA;EACA;EACA;EACA;EACA;AAIA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,GAAE;AACvC;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,IAAI,CAAC,IAAG;AACnC;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,CAAC,IAAI;EACrC,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE;EACjB,IAAI,MAAM,CAAC,GAAGC,MAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EAClC,IAAI,OAAOF,KAAU,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG;EACvD,GAAG;EACH,EAAE,CAAC,GAAGG,KAAU,CAAC,CAAC,GAAG,IAAI,EAAC;EAC1B,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,GAAE;EACxB,EAAE,MAAM,OAAO,GAAGA,KAAU,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAE;EACzC,EAAE,MAAM,KAAK,GAAGA,KAAU,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAE;EACzC,EAAE,MAAM,IAAI,GAAGA,KAAU,CAAC,CAAC,GAAG,KAAK,EAAC;EACpC,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE;EAChB,IAAI,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;EAC3G,GAAG;EACH,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EACjB;EACA,IAAI,OAAO,KAAK,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;EACpH,GAAG;EACH,EAAE,OAAO,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;EACnE;;EC/CA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAC;AAc9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK;EACvC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC;EACrB,GAAG;EACH,EAAC;AAWD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,OAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAC;AAY7C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,WAAS,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAID,OAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,EAAC;AACxG;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;;ECxF1E;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACO,MAAMnB,QAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC;AAC/C;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,MAAM,CAAC,OAAM;AACnC;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,MAAM,CAAC,KAAI;AAC/B;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;EACnC,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;EACzB,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAC;EACpB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,KAAG,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;EAC/B,EAAE,MAAM,OAAO,GAAG,GAAE;EACpB,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;EACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAC;EAClC,GAAG;EACH,EAAE,OAAO,OAAO;EAChB,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAMoB,QAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAM;AAC7C;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;EAChC,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;EACzB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;EAC1B,MAAM,OAAO,IAAI;EACjB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,KAAK;EACd,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;EACjC,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;EACzB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;EAC3B,MAAM,OAAO,KAAK;EAClB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAC;AACvF;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAKA,QAAM,CAAC,CAAC,CAAC,KAAKA,QAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;;EC7F9J;EACA;EACA;EACA;EACA;AAuCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAC;AAC/C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,YAAY,KAAK,IAAIC,WAAe,CAAC,CAAC,2BAA2B,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,QAAQ,IAAIC,SAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;AAC9O;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;EACtC,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;EAC9B,IAAI,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE;EACvC,IAAI,OAAO,KAAK;EAChB,GAAG;EACH,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EACf,IAAI,OAAO,IAAI;EACf,GAAG;EACH,EAAE,QAAQ,CAAC,CAAC,WAAW;EACvB,IAAI,KAAK,WAAW;EACpB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,EAAC;EAC3B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,EAAC;EAC3B;EACA,IAAI,KAAK,UAAU,EAAE;EACrB,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE;EACzC,QAAQ,OAAO,KAAK;EACpB,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;EAC3B,UAAU,OAAO,KAAK;EACtB,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,GAAG,EAAE;EACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;EAC7B,QAAQ,OAAO,KAAK;EACpB,OAAO;EACP,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE;EAC7B,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAC3B,UAAU,OAAO,KAAK;EACtB,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,GAAG,EAAE;EACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;EAC7B,QAAQ,OAAO,KAAK;EACpB,OAAO;EACP,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;EAClC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;EAClE,UAAU,OAAO,KAAK;EACtB,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,MAAM;EACf,MAAM,IAAIC,QAAa,CAAC,CAAC,CAAC,KAAKA,QAAa,CAAC,CAAC,CAAC,EAAE;EACjD,QAAQ,OAAO,KAAK;EACpB,OAAO;EACP,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;EAC3B,QAAQ,IAAI,CAACC,WAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;EAC1E,UAAU,OAAO,KAAK;EACtB,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,IAAI,KAAK,KAAK;EACd,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;EACjC,QAAQ,OAAO,KAAK;EACpB,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACvC,UAAU,OAAO,KAAK;EACtB,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,IAAI;EACJ,MAAM,OAAO,KAAK;EAClB,GAAG;EACH,EAAE,OAAO,IAAI;EACb;;EC3IA;EACA;EACA;EACA;EACA;AAYA;EACO,MAAM,IAAI,GAAGC,QAAa,GAAE;EAC5B,MAAM,MAAM,GAAGA,QAAa,GAAE;EAC9B,MAAM,IAAI,GAAGA,QAAa,GAAE;EAC5B,MAAM,IAAI,GAAGA,QAAa,GAAE;EAC5B,MAAM,KAAK,GAAGA,QAAa,GAAE;EAC7B,MAAM,GAAG,GAAGA,QAAa,GAAE;EAC3B,MAAM,MAAM,GAAGA,QAAa,GAAE;EAC9B,MAAM,MAAM,GAAGA,QAAa,GAAE;EAC9B,MAAM,OAAO,GAAGA,QAAa,GAAE;AACtC;EACA;EACA;EACA;EACA,MAAM,gBAAgB,GAAG;EACzB,EAAE,CAAC,IAAI,GAAGC,QAAW,CAAC,aAAa,EAAE,MAAM,CAAC;EAC5C,EAAE,CAAC,MAAM,GAAGA,QAAW,CAAC,aAAa,EAAE,QAAQ,CAAC;EAChD,EAAE,CAAC,IAAI,GAAGA,QAAW,CAAC,OAAO,EAAE,MAAM,CAAC;EACtC,EAAE,CAAC,KAAK,GAAGA,QAAW,CAAC,OAAO,EAAE,OAAO,CAAC;EACxC,EAAE,CAAC,IAAI,GAAGA,QAAW,CAAC,OAAO,EAAE,MAAM,CAAC;EACtC,EAAE,CAAC,GAAG,GAAGA,QAAW,CAAC,OAAO,EAAE,KAAK,CAAC;EACpC,EAAE,CAAC,MAAM,GAAGA,QAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;EAC1C,EAAE,CAAC,MAAM,GAAGA,QAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;EAC1C,EAAE,CAAC,OAAO,GAAGA,QAAW,CAAC,OAAO,EAAE,OAAO,CAAC;EAC1C,EAAC;AACD;EACA,MAAM,aAAa,GAAG;EACtB,EAAE,CAAC,IAAI,GAAG,WAAW;EACrB,EAAE,CAAC,MAAM,GAAG,WAAW;EACvB,EAAE,CAAC,IAAI,GAAG,UAAU;EACpB,EAAE,CAAC,KAAK,GAAG,UAAU;EACrB,EAAE,CAAC,IAAI,GAAG,YAAY;EACtB,EAAE,CAAC,GAAG,GAAG,UAAU;EACnB,EAAE,CAAC,MAAM,GAAG,UAAU;EACtB,EAAE,CAAC,MAAM,GAAG,gBAAgB;EAC5B,EAAE,CAAC,OAAO,GAAG,SAAS;EACtB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,yBAAyB,GAAG,IAAI,IAAI;EAC1C,EAAE,MAAM,UAAU,GAAG,GAAE;EACvB,EAAE,MAAM,MAAM,GAAG,GAAE;EACnB,EAAE,MAAM,YAAY,GAAGzB,QAAU,GAAE;EACnC;EACA;EACA;EACA,EAAE,IAAI,OAAO,GAAG,GAAE;EAClB;EACA,EAAE,IAAI,CAAC,GAAG,EAAC;AACX;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACvB;EACA,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAC;EACvC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC7B,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAC;EAC/C,KAAK,MAAM;EACX,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE;EACpE,QAAQ,MAAM,KAAK,GAAG0B,gBAAoB,CAAC,YAAY,EAAC;EACxD,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EACvC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAC;EACrC,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC;EAC5B,SAAS,MAAM;EACf,UAAU,UAAU,CAAC,IAAI,CAAC,GAAG,EAAC;EAC9B,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,KAAK;EACb,OAAO;EACP,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;EACb;EACA,IAAI,OAAO,GAAG,OAAM;EACpB,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;EACxC,GAAG;EACH;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACvB,IAAI,IAAI,EAAE,GAAG,YAAY,MAAM,CAAC,EAAE;EAClC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAC;EACvB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,OAAO;EAChB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA,MAAM,sBAAsB,GAAG,IAAI,IAAI;EACvC,EAAE,MAAM,UAAU,GAAG,GAAE;EACvB,EAAE,MAAM,OAAO,GAAG,GAAE;AACpB;EACA;EACA,EAAE,IAAI,CAAC,GAAG,EAAC;AACX;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACvB;EACA,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAC;EACpC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC7B,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAC;EAC5B,KAAK,MAAM;EACX,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE;EACpE,QAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,EAAC;EAC5B,OAAO,MAAM;EACb,QAAQ,KAAK;EACb,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;EACb;EACA,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAC;EAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;EACrC,GAAG;EACH;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACvB;EACA,IAAI,IAAI,EAAE,GAAG,YAAY,MAAM,CAAC,EAAE;EAClC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAC;EACvB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,OAAO;EAChB,EAAC;AACD;EACA;EACA,MAAM,kBAAkB,GAAGC,MAAU,GAAG,sBAAsB,GAAG,0BAAyB;AAC1F;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK;EAClC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAC;EAC1C;EACA,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;EACzC,EAAC;AAWD;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,GAAG,IAAI;EACjC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAC;EACpB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAC;EAC7C,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;EACzC,EAAE,IAAIC,SAAa,EAAE;EACrB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,kFAAkF,EAAE,GAAG,CAAC,CAAC,CAAC,EAAC;EAC5J;EACA,GAAG;EACH,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAC;EACnD,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAC;AACrG;EACA;EACA;EACA;EACO,MAAMC,OAAK,GAAG,CAAC,GAAG,IAAI,KAAK;EAClC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAC;EAC5C;EACA,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;EACzC,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,KAAK;EAC3C,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAC;EACrD;EACA,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC;EAClD,EAAC;AACD;EACO,MAAM,QAAQ,GAAG,MAAM;EAC9B,EAAE,OAAO,CAAC,QAAQ,GAAE;EACpB;EACA,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAC;EACxC,EAAC;AAQD;EACA;EACA;EACA;EACA;EACA;EACO,MAAMC,aAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAC;AACnF;EACO,MAAM,SAAS,GAAG,IAAI,GAAG,GAAE;AAClC;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,iBAAiB,GAAG,IAAI,IAAI;EAClC,EAAE,MAAM,KAAK,GAAG,GAAE;EAClB,EAAE,MAAM,YAAY,GAAG,IAAI,GAAG,GAAE;EAChC;EACA,EAAE,IAAI,CAAC,GAAG,EAAC;EACX,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACvB;EACA,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAC;EACvC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC7B,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAC;EAC/C,KAAK,MAAM;EACX,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE;EACpE;EACA,QAAQ,MAAM,IAAI,GAAGC,OAAW,CAAC,MAAM,EAAE,CAACN,QAAW,CAAC,OAAO,EAAEC,gBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAACM,IAAQ,CAAC,GAAG,CAAC,CAAC,EAAC;EACrH,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;EACnC,UAAU,IAAI,CAAC,SAAS,GAAG,SAAQ;EACnC,SAAS;EACT,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;EACxB,OAAO,MAAM;EACb,QAAQ,KAAK;EACb,OAAO;EACP,KAAK;EACL,GAAG;EACH;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,EAAC;EACzB,IAAI,IAAI,EAAE,OAAO,YAAY,MAAM,CAAC,EAAE;EACtC,MAAM,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE;EAC5E,QAAQ,OAAO,GAAG,GAAG,GAAGC,SAAc,CAAC,OAAO,CAAC,GAAG,IAAG;EACrD,OAAO;EACP,MAAM,KAAK,CAAC,IAAI,CAACF,OAAW,CAAC,MAAM,EAAE,EAAE,EAAE,CAACC,IAAQ,wBAAwB,OAAO,EAAE,CAAC,CAAC,EAAC;EACtF,KAAK;EACL,GAAG;EACH,EAAE,OAAO,KAAK;EACd,EAAC;AACD;EACA,MAAM,SAAS,GAAG,qEAAoE;AACtF;EACA;EACO,MAAM,QAAQ,CAAC;EACtB;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE;EACpB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAG;EAClB;EACA;EACA;EACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAG;EAC9B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAC;EACvB,GAAG;AACH;EACA;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE;EAClC,IAAIE,SAAiB,CAAC,MAAM;EAC5B,MAAM,MAAM,YAAY,GAAGH,OAAW,CAAC,MAAM,EAAE,CAACN,QAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAEA,QAAW,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAACO,IAAQ,CAAC,GAAG,CAAC,CAAC,EAAC;EACvJ,MAAM,MAAM,aAAa,GAAGD,OAAW,CAAC,MAAM,EAAE,CAACN,QAAW,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAEA,QAAW,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAACO,IAAQ,CAAC,GAAG,CAAC,CAAC,EAAC;EACzJ,MAAM,MAAM,OAAO,GAAGD,OAAW,CAAC,KAAK,EAAE,CAACN,QAAW,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,EAAEO,IAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAC;EAChM,MAAM,MAAM,aAAa,GAAGD,OAAW,CAAC,KAAK,EAAE,CAACN,QAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAC;EAClF,MAAM,MAAM,QAAQ,GAAGM,OAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAC;EACvE,MAAMI,MAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAC;EAC7C,MAAM,IAAI,CAAC,UAAU,GAAG,cAAa;EACrC,MAAM,IAAI,CAAC,KAAK,GAAE;EAClB;EACA,MAAMC,kBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI;EACtD,QAAQ,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAC;EAC/C,QAAQ,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAC;EAC9C,QAAQ,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAC;EAC/C,OAAO,EAAC;EACR,KAAK,EAAC;EACN,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE;EACxB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC;EAC1B,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,GAAG;EACd,IAAIF,SAAiB,CAAC,MAAM;EAC5B,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;EAC1B,QAAQ,IAAI,CAAC,KAAK,GAAE;EACpB;EACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAa;EACrE,OAAO;EACP,KAAK,EAAC;EACN,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;EACf,IAAIA,SAAiB,CAAC,MAAM;EAC5B,MAAMC,MAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAACJ,OAAW,CAAC,KAAK,EAAE,CAACN,QAAW,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC;EAC1J,KAAK,EAAC;EACN,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE;EACnB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAC;EAC3C,GAAG;AACH;EACA;EACA;EACA;EACA;EACA,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE;EACzB,IAAIS,SAAiB,CAAC,MAAM;EAC5B,MAAMC,MAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAACJ,OAAW,CAAC,KAAK,EAAE,CAACN,QAAW,CAAC,KAAK,EAAE,GAAG,CAAC,EAAEA,QAAW,CAAC,QAAQ,EAAE,CAAC,EAAEZ,KAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;EAC1I,KAAK,EAAC;EACN,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;EAClB,IAAIqB,SAAiB,CAAC,MAAM;EAC5B,MAAMC,MAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAC;EACzC,KAAK,EAAC;EACN,GAAG;AACH;EACA,EAAE,OAAO,CAAC,GAAG;EACb,IAAID,SAAiB,CAAC,MAAM;EAC5B,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAC;EAC5B,KAAK,EAAC;EACN,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,GAAG,IAAI,IAAI,QAAQ,CAAC,GAAG;;EC/XrD;EACA;EACA;EACA;EACA;AAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;EAC1C,EAAE,IAAI,IAAI,GAAG,EAAC;EACd,EAAE,IAAI,KAAK,GAAG,EAAC;EACf,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;EACpE,IAAI,IAAI,GAAE;EACV,GAAG;EACH,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;EAC9C;EACA,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE;EACtH,MAAM,KAAK,GAAE;EACb,KAAK;EACL,GAAG;EACH,EAAE,OAAO;EACT,IAAI,KAAK,EAAE,IAAI;EACf,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;EACnC,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;EAC3C,GAAG;EACH,EAAC;AAOD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,cAAc,KAAK;EACnE,EAAE,IAAI,IAAI,GAAG,EAAC;EACd,EAAE,IAAI,KAAK,GAAG,EAAC;EACf,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;EAC1E,IAAI,IAAI,GAAE;EACV,GAAG;EACH,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;EAC9C;EACA,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;EAC5H,MAAM,KAAK,GAAE;EACb,KAAK;EACL,GAAG;EACH,EAAE,OAAO;EACT,IAAI,KAAK,EAAE,IAAI;EACf,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;EACnC,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;EAC3C,GAAG;EACH;;ECjGA;EACO,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,KAAI;AAC3I;EACA,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,OAAM;AAC/D;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,SAAS,KAAK,IAAI;EACpD,IAAI,GAAG,IAAI;EACX;EACA,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,EAAC;EACpC,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,EAAC;EACnC,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,EAAC;EAClC,IAAI,OAAO,GAAG;EACd,GAAG;EACH,IAAI,GAAG,IAAI;EACX;EACA,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,EAAC;EACpC,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,EAAC;EACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAClC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,MAAM,CAAC,EAAC;EAC5D,KAAK;EACL,IAAI,OAAO,GAAG;EACd;;ECVA;EACO,MAAMG,QAAM,GAAG,MAAM,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;AAQrE;EACA;EACA,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,KAAI;EAClD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,2BAA2B,CAAC;EACvF,EAAE,CAAC,CAAC,GAAGA,QAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;EAC3C;;EC5BA;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,EAAC;EACd,MAAM,IAAI,GAAG,EAAC;EACd,MAAM,IAAI,GAAG,EAAC;EACd,MAAM,IAAI,GAAG,EAAC;EACd,MAAM,IAAI,GAAG,GAAE;EACf,MAAM,IAAI,GAAG,GAAE;EACf,MAAM,IAAI,GAAG,GAAE;EACf,MAAM,IAAI,GAAG,IAAG;EAChB,MAAM,IAAI,GAAG,IAAG;EAChB,MAAM,KAAK,GAAG,IAAG;EACjB,MAAM,KAAK,GAAG,KAAI;EAClB,MAAM,KAAK,GAAG,KAAI;EAClB,MAAM,KAAK,GAAG,KAAI;EAClB,MAAM,KAAK,GAAG,KAAI;EAClB,MAAM,KAAK,GAAG,MAAK;EACnB,MAAM,KAAK,GAAG,MAAK;EACnB,MAAM,KAAK,GAAG,MAAK;EACnB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;EACrB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAE;AAC5B;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,EAAC;EACf,MAAM,KAAK,GAAG,EAAC;EACf,MAAM,KAAK,GAAG,EAAC;EACf,MAAM,KAAK,GAAG,EAAC;EACf,MAAM,KAAK,GAAG,GAAE;EAChB,MAAM,KAAK,GAAG,GAAE;EAChB,MAAM,KAAK,GAAG,GAAE;EAChB,MAAM,KAAK,GAAG,IAAG;EACjB,MAAM,KAAK,GAAG,IAAG;EACjB,MAAM,KAAK,GAAG,IAAG;EACjB,MAAM,MAAM,GAAG,KAAI;EACnB,MAAM,MAAM,GAAG,KAAI;EACnB,MAAM,MAAM,GAAG,KAAI;EACnB,MAAM,MAAM,GAAG,KAAI;EACnB,MAAM,MAAM,GAAG,MAAK;EACpB,MAAM,MAAM,GAAG,MAAK;EACpB,MAAM,MAAM,GAAG,MAAK;EACpB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EACxB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAC;EAC/B;EACA;EACA;EACO,MAAM,MAAM,GAAG,WAAU;EAChC;EACA;EACA;EACO,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECzFtB;EACA;EACA;AAGA;EACA;EACA;EACA;EACO,MAAM,UAAU,CAAC;EACxB;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;EACpB;EACA;EACA;EACA,IAAI,IAAI,CAAC,MAAM,GAAG,KAAI;EACtB,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAM;EACvB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAE;EAChB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAE;EAChB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;EACf,IAAI,IAAI,CAAC,MAAM,GAAG,EAAC;EACnB,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,KAAKC,MAAa,GAAG,CAAC,CAAC;EAC1C,GAAG;EACH;;EClCA;EACA;EACA;AAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,CAAC;EAC9B;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;EACpB;EACA,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,EAAC;EAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,EAAC;EACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAGA,OAAa;EACvD,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,KAAI;EACtB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAK;EAC5B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,MAAM,GAAG,MAAK;EACzB,MAAM,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAKA,MAAa,GAAG,CAAC,CAAC;EAChE,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,GAAG,KAAI;EACxB,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAC;EACzB,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAC;EACzB,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAE;EAC9B,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAE;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAC;EACpE,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC;EACxD;EACA,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,GAAE;EACpC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,GAAE;EACpC,MAAM,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAKA,MAAa,GAAG,CAAC,CAAC,CAAC;EAClE,KAAK;EACL,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EC9GA;EACA;EACA;EACA;EACA;AAIA;EACO,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAgB;EAChD,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAgB;AACvD;EACO,MAAM,YAAY,GAAG,CAAC,IAAI,GAAE;EACnC;EACA;EACA;EACO,MAAM,aAAa,GAAGC,OAAa;AAC1C;EACA;EACA;EACA;AACA;EACA;EACO,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAIvB,KAAU,CAAC,GAAG,CAAC,KAAK,GAAG,EAAC;EAClH,MAAM,KAAK,GAAG,MAAM,CAAC;;ECxB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;EACA;EACA;EACA;EACO,MAAM,OAAO,CAAC;EACrB,EAAE,WAAW,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAC;EACjB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAC;EACnC;EACA;EACA;EACA,IAAI,IAAI,CAAC,IAAI,GAAG,GAAE;EAClB,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,GAAE;AAChD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,OAAO,IAAI;EACjC,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC,KAAI;EACxB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM;EACjC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,OAAO,IAAI;EACvC,EAAE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAC;EAClD,EAAE,IAAI,MAAM,GAAG,EAAC;EAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC;EAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAC;EAC3B,IAAI,MAAM,IAAI,CAAC,CAAC,OAAM;EACtB,GAAG;EACH,EAAE,QAAQ,CAAC,GAAG,CAACwB,mCAA0C,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAC;EACxG,EAAE,OAAO,QAAQ;EACjB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EACpC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAM;EACvC,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE;EACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAACA,mCAA0C,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAC;EACvG,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAACC,GAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,EAAC;EAC/D,IAAI,OAAO,CAAC,IAAI,GAAG,EAAC;EACpB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EACvC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAM;EACvC,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;EAClC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;EACnC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC,EAAC;EAChD,IAAI,OAAO,CAAC,IAAI,GAAG,EAAC;EACpB,GAAG;EACH,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAG;EACpC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK;EAC1C,EAAE,IAAI,MAAM,GAAG,KAAI;EACnB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE;EACnE,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC;EAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE;EACxB,MAAM,MAAM,GAAG,EAAC;EAChB,KAAK,MAAM;EACX,MAAM,GAAG,IAAI,CAAC,CAAC,OAAM;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,KAAK,IAAI,EAAE;EACvB;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,KAAI;EACzB,GAAG;EACH,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAG;EACnB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,MAAK;AAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,IAAG;AAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAC7C,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,GAAGC,KAAY,EAAC;EACpC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,IAAIA,KAAY,EAAC;EAC5C,EAAC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK;EAChD,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAGA,KAAY,EAAC;EACvC,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAIA,KAAY,EAAC;EACnD,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAC7C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,GAAGA,KAAY,EAAC;EACtC,IAAI,GAAG,MAAM,EAAC;EACd,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EACtD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAIA,KAAY,EAAC;EACpD,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK;EAChD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAGA,KAAY,EAAC;EAC7C,IAAI,GAAG,MAAM,EAAC;EACd,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAC9C,EAAE,OAAO,GAAG,GAAGC,KAAY,EAAE;EAC7B,IAAI,KAAK,CAAC,OAAO,EAAEC,IAAW,IAAID,KAAY,GAAG,GAAG,CAAC,EAAC;EACtD,IAAI,GAAG,MAAM,EAAC;EACd,GAAG;EACH,EAAE,KAAK,CAAC,OAAO,EAAEA,KAAY,GAAG,GAAG,EAAC;EACpC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAC7C,EAAE,MAAM,UAAU,GAAGE,cAAmB,CAAC,GAAG,EAAC;EAC7C,EAAE,IAAI,UAAU,EAAE;EAClB,IAAI,GAAG,GAAG,CAAC,IAAG;EACd,GAAG;EACH;EACA,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,GAAGC,KAAY,GAAGF,IAAW,GAAG,CAAC,KAAK,UAAU,GAAGG,IAAW,GAAG,CAAC,CAAC,IAAID,KAAY,GAAG,GAAG,CAAC,EAAC;EAChH,EAAE,GAAG,MAAM,EAAC;EACZ;EACA;EACA,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE;EAClB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,GAAGH,KAAY,GAAGC,IAAW,GAAG,CAAC,KAAKD,KAAY,GAAG,GAAG,CAAC,EAAC;EACjF,IAAI,GAAG,MAAM,EAAC;EACd,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAChD,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAC;EACzD,EAAE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAM;EAClC,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,EAAC;EAC5B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAChC,IAAI,KAAK,CAAC,OAAO,yBAAyB,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAE;EACxE,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAAC;AACrG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;EACxD,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAM;EACvC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAI;EAC3B,EAAE,MAAM,WAAW,GAAGK,GAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM,EAAC;EACnE,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,YAAW;EACtD,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI,EAAC;EAC7D,EAAE,OAAO,CAAC,IAAI,IAAI,YAAW;EAC7B,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;EACxB;EACA;EACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;EACnC;EACA,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAACP,GAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,YAAY,CAAC,EAAC;EACxE;EACA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC;EACtD,IAAI,OAAO,CAAC,IAAI,GAAG,aAAY;EAC/B,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;EAC3D,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAC;EAC9C,EAAE,eAAe,CAAC,OAAO,EAAE,UAAU,EAAC;EACtC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EACjD,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,EAAC;EACzB,EAAE,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAC;EACpE,EAAE,OAAO,CAAC,IAAI,IAAI,IAAG;EACrB,EAAE,OAAO,KAAK;EACd,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAC;AACnG;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAC;AACnG;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAC;AAO1H;EACA,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAC;EACrD;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,SAAS,GAAG,GAAG,IAAI;EACzB,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAC;EACjC,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG;EAC3C,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;EAC3C,EAAE,QAAQ,OAAO,IAAI;EACrB,IAAI,KAAK,QAAQ;EACjB;EACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EACzB,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,EAAC;EACnC,MAAM,KAAK;EACX,IAAI,KAAK,QAAQ;EACjB,MAAM,IAAIQ,SAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAIV,MAAa,EAAE;EAC3D;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,WAAW,CAAC,OAAO,EAAE,IAAI,EAAC;EAClC,OAAO,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;EAClC;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAC;EACnC,OAAO,MAAM;EACb;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAC;EACnC,OAAO;EACP,MAAM,KAAK;EACX,IAAI,KAAK,QAAQ;EACjB;EACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EACzB,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,EAAC;EAClC,MAAM,KAAK;EACX,IAAI,KAAK,QAAQ;EACjB,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;EACzB;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,OAAO,MAAM,IAAI,IAAI,YAAY,KAAK,EAAE;EACxC;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAC;EAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,UAAU,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAC;EACpC,SAAS;EACT,OAAO,MAAM,IAAI,IAAI,YAAY,UAAU,EAAE;EAC7C;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAC;EACzC,OAAO,MAAM;EACb;EACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC3B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAC;EACtC,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAC;EAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,UAAU,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EAC7B,UAAU,cAAc,CAAC,OAAO,EAAE,GAAG,EAAC;EACtC,UAAU,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC;EACtC,SAAS;EACT,OAAO;EACP,MAAM,KAAK;EACX,IAAI,KAAK,SAAS;EAClB;EACA,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAC;EACtC,MAAM,KAAK;EACX,IAAI;EACJ;EACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EACzB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,SAAS,OAAO,CAAC;EACxC;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE;EACvB,IAAI,KAAK,GAAE;EACX;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,OAAM;EACnB;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,KAAI;EACjB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACZ,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;EACtB,MAAM,IAAI,CAAC,KAAK,GAAE;EAClB,KAAK,MAAM;EACX,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;EAC1B;EACA,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EAC1C,OAAO;EACP,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB;EACA,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAC;EACrB,MAAM,IAAI,CAAC,CAAC,GAAG,EAAC;EAChB,KAAK;EACL,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,SAAS,OAAO,CAAC;EAC5C;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;EACtB,IAAI,KAAK,GAAE;EACX;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,MAAK;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACZ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAC;EACjC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,SAAS,OAAO,CAAC;EAC/C;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;EACtB,IAAI,KAAK,GAAE;EACX;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,MAAK;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACZ,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;EACxC,MAAM,IAAI,CAAC,KAAK,GAAE;EAClB,KAAK,MAAM;EACX,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;EAC1B;EACA,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EAC1C,OAAO;EACP,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB;EACA,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAC;EACnC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAC;EAChB,KAAK;EACL,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA,MAAM,sBAAsB,GAAG,OAAO,IAAI;EAC1C;EACA,EAAE,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;EACzB;EACA;EACA;EACA,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAC;EAC9E,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;EAC3B,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAC;EACtD,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,CAAC;EAC/B,EAAE,WAAW,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,GAAE;EAChC;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACZ,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;EACtB,MAAM,IAAI,CAAC,KAAK,GAAE;EAClB,KAAK,MAAM;EACX,MAAM,sBAAsB,CAAC,IAAI,EAAC;EAClC,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB,MAAM,IAAI,CAAC,CAAC,GAAG,EAAC;EAChB,KAAK;EACL,GAAG;AACH;EACA,EAAE,YAAY,CAAC,GAAG;EAClB,IAAI,sBAAsB,CAAC,IAAI,EAAC;EAChC,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;EACrC,GAAG;EACH,CAAC;AAsCD;EACA;EACA;EACA;EACA,MAAM,yBAAyB,GAAG,OAAO,IAAI;EAC7C,EAAE,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;EACzB;EACA,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;EACzE;EACA;EACA;EACA,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAC;EAC7C,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;EAC3B,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAC;EACtD,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,oBAAoB,CAAC;EAClC,EAAE,WAAW,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,GAAE;EAChC;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAC;EACjB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACZ,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;EAClC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAC;EAChB,MAAM,IAAI,CAAC,KAAK,GAAE;EAClB,KAAK,MAAM;EACX,MAAM,yBAAyB,CAAC,IAAI,EAAC;EACrC,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAC;EAC5B,MAAM,IAAI,CAAC,CAAC,GAAG,EAAC;EAChB,KAAK;EACL,GAAG;AACH;EACA,EAAE,YAAY,CAAC,GAAG;EAClB,IAAI,yBAAyB,CAAC,IAAI,EAAC;EACnC,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;EACrC,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,CAAC;EAC3B,EAAE,WAAW,CAAC,GAAG;EACjB;EACA;EACA;EACA,IAAI,IAAI,CAAC,IAAI,GAAG,GAAE;EAClB,IAAI,IAAI,CAAC,CAAC,GAAG,GAAE;EACf,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,GAAE;EACxC,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;EACjB,IAAI,IAAI,CAAC,CAAC,IAAI,OAAM;EACpB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE;EAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;EAC5B,MAAM,IAAI,CAAC,CAAC,GAAG,GAAE;EACjB,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAC;EACnC,GAAG;AACH;EACA,EAAE,YAAY,CAAC,GAAG;EAClB,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,GAAE;EACjC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;EAC1B,IAAI,IAAI,CAAC,CAAC,GAAG,GAAE;EACf,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;EAC/C,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAC;EACvD,IAAI,OAAO,YAAY,CAAC,OAAO,CAAC;EAChC,GAAG;EACH;;ECvzBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAKA;EACA;EACA;EACA;EACO,MAAM,OAAO,CAAC;EACrB;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE;EAC3B;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,WAAU;EACzB;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,EAAC;EAChB,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,UAAU,IAAI,IAAI,OAAO,CAAC,UAAU,EAAC;AAClE;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,OAAM;AACvE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK;EACxD,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAC;EAC7C,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAM;EACvB,EAAE,OAAO,QAAQ;EACjB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAChD,EAAE,MAAM,IAAI,GAAGC,mCAA0C,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAC;EACxH,EAAE,OAAO,CAAC,GAAG,IAAI,IAAG;EACpB,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAC;AACzF;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,oBAAoB,GAAG,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,EAAC;AACxG;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,GAAE;AAC7C;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC;AAC9D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI;EACrC,EAAE,MAAM,IAAI;EACZ,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;EAC5B,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;EACvC,EAAE,OAAO,CAAC,GAAG,IAAI,EAAC;EAClB,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI;EACrC,EAAE,MAAM,IAAI;EACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;EAC7B,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EACvC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EACxC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAC;EAC/C,EAAE,OAAO,CAAC,GAAG,IAAI,EAAC;EAClB,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,mBAAmB,GAAG,OAAO,IAAI;EAC9C,EAAE,MAAM,IAAI;EACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;EACjC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EACvC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EACxC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAC;EAC3C,EAAE,OAAO,CAAC,GAAG,IAAI,EAAC;EAClB,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAC;AAC5D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO;EACjC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;EAC1B,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;AACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI;EACrC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;EAC1B,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EACrC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EACtC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EACtC,MAAM,EAAC;AACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,OAAO,IAAI;EACtC,EAAE,IAAI,GAAG,GAAG,EAAC;EACb,EAAE,IAAI,GAAG,GAAG,EAAC;EACb,EAAE,OAAO,IAAI,EAAE;EACf,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC;EACxC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAGG,KAAY,KAAK,GAAG,EAAC;EAC3C,IAAI,GAAG,IAAI,EAAC;EACZ,IAAI,IAAI,CAAC,GAAGC,IAAW,EAAE;EACzB,MAAM,OAAO,GAAG,KAAK,CAAC;EACtB,KAAK;EACL;EACA,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE;EAClB,MAAM,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI;EACrC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC;EACpC,EAAE,IAAI,GAAG,GAAG,CAAC,GAAGE,MAAY;EAC5B,EAAE,IAAI,GAAG,GAAG,EAAC;EACb,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAGC,IAAW,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC;EAC7C,EAAE,IAAI,CAAC,CAAC,GAAGH,IAAW,MAAM,CAAC,EAAE;EAC/B;EACA,IAAI,OAAO,IAAI,GAAG,GAAG;EACrB,GAAG;EACH,EAAE,OAAO,IAAI,EAAE;EACf,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC;EAClC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAGD,KAAY,KAAK,GAAG,EAAC;EAC3C,IAAI,GAAG,IAAI,EAAC;EACZ,IAAI,IAAI,CAAC,GAAGC,IAAW,EAAE;EACzB,MAAM,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EAC/B,KAAK;EACL;EACA,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE;EAClB,MAAM,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,OAAO,IAAI;EACtC,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAG;EACzB,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,EAAC;EAChC,EAAE,OAAO,CAAC,GAAG,GAAG,IAAG;EACnB,EAAE,OAAO,CAAC;EACV,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,IAAI;EACrC,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAG;EACzB,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAC;EAC/B,EAAE,OAAO,CAAC,GAAG,GAAG,IAAG;EACnB,EAAE,OAAO,CAAC;EACV,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,OAAO,IAAI;EACxC,EAAE,IAAI,YAAY,GAAG,WAAW,CAAC,OAAO,EAAC;EACzC,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;EAC1B,IAAI,OAAO,EAAE;EACb,GAAG,MAAM;EACT,IAAI,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAC;EAChE,IAAI,IAAI,EAAE,YAAY,GAAG,GAAG,EAAE;EAC9B,MAAM,OAAO,YAAY,EAAE,EAAE;EAC7B,QAAQ,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAC;EACjE,OAAO;EACP,KAAK,MAAM;EACX,MAAM,OAAO,YAAY,GAAG,CAAC,EAAE;EAC/B,QAAQ,MAAM,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,MAAK;EACnE;EACA,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,EAAC;EAC9E,QAAQ,OAAO,CAAC,GAAG,IAAI,QAAO;EAC9B;EACA,QAAQ,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,sBAAsB,KAAK,GAAE;EACrF,QAAQ,YAAY,IAAI,QAAO;EAC/B,OAAO;EACP,KAAK;EACL,IAAI,OAAO,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EACpD,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,OAAO,IAAI;EACxC,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAG;EACzB,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAC;EAClC,EAAE,OAAO,CAAC,GAAG,GAAG,IAAG;EACnB,EAAE,OAAO,CAAC;EACV,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;EAClD,EAAE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAC;EACxF,EAAE,OAAO,CAAC,GAAG,IAAI,IAAG;EACpB,EAAE,OAAO,EAAE;EACX,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAC;AACvF;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAC;AACvF;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAC;AAM9G;EACA;EACA;EACA;EACA,MAAM,kBAAkB,GAAG;EAC3B,EAAE,OAAO,IAAI,SAAS;EACtB,EAAE,OAAO,IAAI,IAAI;EACjB,EAAE,UAAU;EACZ,EAAE,WAAW;EACb,EAAE,WAAW;EACb,EAAE,YAAY;EACd,EAAE,OAAO,IAAI,KAAK;EAClB,EAAE,OAAO,IAAI,IAAI;EACjB,EAAE,aAAa;EACf,EAAE,OAAO,IAAI;EACb,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAC;EACpC;EACA;EACA;EACA,IAAI,MAAM,GAAG,GAAG,GAAE;EAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAClC,MAAM,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAC;EACxC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAC;EACjC,KAAK;EACL,IAAI,OAAO,GAAG;EACd,GAAG;EACH,EAAE,OAAO,IAAI;EACb,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAC;EACpC,IAAI,MAAM,GAAG,GAAG,GAAE;EAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAClC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC;EAChC,KAAK;EACL,IAAI,OAAO,GAAG;EACd,GAAG;EACH,EAAE,iBAAiB;EACnB,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAC;AACvF;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,SAAS,OAAO,CAAC;EACxC;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE;EACnC,IAAI,KAAK,CAAC,UAAU,EAAC;EACrB;EACA;EACA;EACA,IAAI,IAAI,CAAC,MAAM,GAAG,OAAM;EACxB;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,KAAI;EACjB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;EAC1B,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAC;EAChC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;EAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAC;EAC1C,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EACvB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAE;EAChB,IAAI,yBAAyB,IAAI,CAAC,CAAC,CAAC;EACpC,GAAG;EACH,CAAC;AACD;EACO,MAAM,cAAc,SAAS,OAAO,CAAC;EAC5C;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;EAClC,IAAI,KAAK,CAAC,UAAU,EAAC;EACrB;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,MAAK;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAC;EAC9B,IAAI,OAAO,IAAI,CAAC,CAAC;EACjB,GAAG;EACH,CAAC;AACD;EACO,MAAM,iBAAiB,SAAS,OAAO,CAAC;EAC/C;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;EAClC,IAAI,KAAK,CAAC,UAAU,EAAC;EACrB;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,MAAK;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;EAC1B,MAAM,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAC;EAChC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;EAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAC;EAC1C,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EACvB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAE;EAChB,IAAI,8BAA8B,IAAI,CAAC,CAAC,CAAC;EACzC,GAAG;EACH,CAAC;AACD;EACO,MAAM,iBAAiB,SAAS,OAAO,CAAC;EAC/C;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE;EAC3B,IAAI,KAAK,CAAC,UAAU,EAAC;EACrB;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;EAC1B,MAAM,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAC;EAC/B;EACA,MAAM,MAAM,UAAU,GAAGC,cAAmB,CAAC,IAAI,CAAC,CAAC,EAAC;EACpD,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;EACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAC;EAC1C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAE;EAChB,IAAI,8BAA8B,IAAI,CAAC,CAAC,CAAC;EACzC,GAAG;EACH,CAAC;AA8BD;EACO,MAAM,oBAAoB,SAAS,OAAO,CAAC;EAClD;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE;EAC3B,IAAI,KAAK,CAAC,UAAU,EAAC;EACrB;EACA;EACA;EACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,IAAI,IAAI,CAAC,KAAK,GAAG,EAAC;EAClB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAC;EACjB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;EAC1B,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAC;EACnC;EACA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAC;EAC/B,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAC;EAC3B,MAAM,IAAI,CAAC,KAAK,GAAG,EAAC;EACpB,MAAM,IAAI,QAAQ,EAAE;EACpB,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAC;EAC1C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAI;EACvB,IAAI,IAAI,CAAC,KAAK,GAAE;EAChB,IAAI,OAAO,IAAI,CAAC,CAAC;EACjB,GAAG;EACH,CAAC;AACD;EACO,MAAM,aAAa,CAAC;EAC3B;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE;EAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAC;EACpD,IAAI,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAC;EAC1C;EACA;EACA;EACA,IAAI,IAAI,CAAC,IAAI,GAAG,EAAC;EACjB,GAAG;AACH;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAE;EAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAC;EAC9C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAG;EACnB,IAAI,OAAO,GAAG;EACd,GAAG;EACH;;ECpoBA;EACA;EACA;EACA;EACA;AAMA;EACA;EACA;EACA;EACO,MAAM,uBAAuB,GAAG,GAAG,IAAI,IAAI,UAAU,CAAC,GAAG,EAAC;AACjE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,mCAAmC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAC;AAC7H;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,+BAA+B,GAAG,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAC;AAC/E;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,eAAe,GAAG,KAAK,IAAI;EACjC,EAAE,IAAI,CAAC,GAAG,GAAE;EACZ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;EAC7C,IAAI,CAAC,IAAIK,YAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EACtC,GAAG;EACH;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EAChB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA,MAAM,YAAY,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAC;AAC9G;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,iBAAiB,GAAG,CAAC,IAAI;EAC/B;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAC;EACnB,EAAE,MAAM,KAAK,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,EAAC;EACjD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAC;EAC9B,GAAG;EACH,EAAE,OAAO,KAAK;EACd,EAAC;AACD;EACA;EACA;EACA;EACA,MAAM,cAAc,GAAG,CAAC,IAAI;EAC5B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAC;EACtC,EAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC;EACnE,EAAC;AACD;EACA;EACO,MAAM,QAAQ,GAAGtB,SAAa,GAAG,eAAe,GAAG,aAAY;AACtE;EACA;EACO,MAAM,UAAU,GAAGA,SAAa,GAAG,iBAAiB,GAAG,eAAc;AAC5E;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,UAAU,IAAI;EAC5C,EAAE,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,CAAC,UAAU,EAAC;EAC/D,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAC;EACxB,EAAE,OAAO,MAAM;EACf,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,IAAI,IAAI;EACjC,EAAE,MAAM,OAAO,GAAGuB,aAAsB,GAAE;EAC1C,EAAEC,QAAiB,CAAC,OAAO,EAAE,IAAI,EAAC;EAClC,EAAE,OAAOC,YAAqB,CAAC,OAAO,CAAC;EACvC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,GAAG,IAAIC,OAAgB,CAACC,aAAsB,CAAC,GAAG,CAAC;;EChH5E;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAOA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACO,MAAM,WAAW,GAAG,iBAAgB;AAC3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMzD,QAAM,GAAG,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,EAAC;AACnD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAC;AAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAKkB,KAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAC;AACtF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAKwC,GAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC;AACvE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAKxC,KAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAC;AACtF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAC;AACnE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC;AAC5D;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,GAAE;AACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAC;AAC5D;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAC;AAC9D;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,KAAK;EACtD,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC;EACxC,EAAE,IAAI,GAAG,GAAG,GAAE;EACd,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAChC,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,EAAC;EACtB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,GAAG,IAAI;EAChC,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAC;EACtC,EAAE,OAAO,aAAa,CAAC,SAAS,CAAC;EACjC,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK;EACjD,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAC;EACnC,EAAE,IAAI,GAAG,GAAG,GAAE;EACd,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAChC,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAC;EACzB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAC;AAC3E;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;EACxC,EAAE,MAAM,GAAG,GAAGyC,uBAA8B,CAAC,GAAG,EAAC;EACjD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAEf,KAAY,EAAC;EACxC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,EAAC;AAQD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM;;ECtMxF;EACA;EACA;EACA;EACA;AAGA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC1B,KAAU,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC0C,IAAS,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC;AAC7L;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAACC,KAAQ,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;;EClB5D;EACA;EACA;EACA;EACA;AAGA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM7D,QAAM,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,CAAC,CAAC,EAAC;AACrE;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,EAAC;AAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAC;AAC5C;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAC;AACtD;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAC;AAQlD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,KAAKA,QAAM,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EAC9F,EAAE,MAAM,SAAS,GAAG8D,WAAgB,GAAE;EACtC,EAAE,MAAM,UAAU,GAAG,OAAO,GAAG,EAAC;EAChC,EAAE,MAAM,aAAa,GAAG,MAAM;EAC9B,IAAI,IAAI,KAAK,EAAE,EAAE;EACjB,MAAM,aAAa,CAAC,cAAc,EAAC;EACnC,MAAM,OAAO,GAAE;EACf,KAAK,MAAM,IAAI,UAAU,EAAE;EAC3B;EACA,MAAM,IAAIA,WAAgB,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE;EACpD,QAAQ,aAAa,CAAC,cAAc,EAAC;EACrC,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAC;EACpC,OAAO;EACP,KAAK;EACL,IAAG;EACH,EAAE,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAC;EACvE,CAAC,EAAC;AACF;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,OAAO,IAAI9D,QAAM,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAC;AACxF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO;;EChG1F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;EACO,MAAM,SAAS,GAAG+D,OAAW,CAAC,WAAW,EAAC;AACjD;EACA;EACO,MAAM,OAAO,GAAGC,QAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAACC,QAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,KAAI;AACnG;EACO,MAAM,QAAQ,CAAC;EACtB;EACA;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE;EACrC;EACA;EACA;EACA,IAAI,IAAI,CAAC,UAAU,GAAG,WAAU;EAChC;EACA;EACA;EACA,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAQ;EAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;EACrB,GAAG;AACH;EACA,EAAE,SAAS,CAAC,GAAG;EACf,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;EACrB,GAAG;AACH;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,IAAI,CAAC,GAAG;EACd;EACA,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B;EACA,MAAM,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,IAAI,GAAGC,QAAa,EAAE,GAAG,QAAO;EAC/D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK;EACrB,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,IAAI,CAAC,GAAG;EACd;EACA,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B,MAAM,IAAI,CAAC,KAAK,GAAGC,QAAW,CAAC,IAAI,CAAC,IAAI,EAAC;EACzC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK;EACrB,GAAG;EACH,CAAC;AACD;EACO,MAAM,cAAc,GAAG,MAAM,CAACF,QAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAC;EAC7E;EACA,MAAM,UAAU,GAAGD,QAAY,CAAC,UAAU,CAAC,GAAGC,QAAY,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,KAAI;AACjF;EACA;EACA,MAAM,gBAAgB,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,EAAC;AACxF;EACA,MAAM,eAAe,GAAG,wBAAuB;AAC/C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,OAAO,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,KAAK;EACpE,EAAE,MAAM,WAAW,GAAG9D,aAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAC;EAC9D,EAAE,MAAM,QAAQ,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAC;EACtG;EACA,EAAE,IAAI,QAAQ,EAAE;EAChB,IAAI,OAAO,IAAI;EACf,GAAG;EACH,EAAE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAC;EAC3C,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAC;EAClD,EAAE,MAAM,SAAS,GAAG,CAACiE,IAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,EAAEC,MAAU,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,EAAEC,IAAQ,EAAE,WAAW,EAAC;EACpH;EACA,EAAE,IAAI,UAAU,KAAK,IAAI,EAAE;EAC3B,IAAIC,cAAkB,CAAC,GAAG,SAAS,EAAC;EACpC,GAAG,MAAM;EACT,IAAIC,OAAS,CAAC,GAAG,SAAS,EAAC;EAC3B,GAAG;EACH,EAAE,MAAM,KAAK,GAAG,GAAE;EAClB,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,GAAE;EACjC,EAAE,IAAI,QAAQ,GAAG,MAAK;EACtB;EACA;EACA;EACA,EAAE,IAAI,GAAG,GAAG,KAAI;EAChB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;EACnC,EAAE,GAAG;EACL,IAAI,IAAI;EACR,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC;EACrB,MAAM,IAAIC,SAAiB,CAAC,CAAC,CAAC,EAAE;EAChC,QAAQ,MAAM,EAAC;EACf,OAAO;EACP,KAAK,CAAC,OAAO,IAAI,EAAE;EACnB,MAAM,GAAG,GAAG,KAAI;EAChB,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,GAAE;EACtC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAC;EACnC,IAAI,QAAQ,GAAG,SAAQ;EACvB,IAAI,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,cAAc,EAAE;EACvE,MAAM,EAAE,CAAC,SAAS,GAAE;EACpB,KAAK,MAAM;EACX,MAAM,KAAK;EACX,KAAK;EACL,GAAG,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,cAAc,CAAC;EAC/D,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAC;EACjC;EACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;EACrD,IAAIC,UAAc,CAAC,GAAG,EAAC;EACvB,GAAG;EACH,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAC;EAC3D,EAAEC,QAAY,GAAE;EAChB,EAAE,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAK;EACnC,EAAE,IAAI,OAAO,GAAG,KAAI;EACpB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC;EAC7B;EACA,EAAE,MAAM,YAAY,GAAG7C,SAAa;EACpC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACzG,MAAM,CAAC,uCAAuC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EAC1G,EAAE,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,GAAG,KAAK,IAAI;EAC1C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE8C,gBAAqB,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAEA,gBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAEA,gBAAqB,CAACC,IAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAED,gBAAqB,CAACE,MAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAEF,gBAAqB,CAACG,OAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrS,MAAM,CAAC,IAAI,EAAEH,gBAAqB,CAAC,QAAQ,CAAC,CAAC,EAAC;EAC9C,EAAE,IAAI,GAAG,KAAK,IAAI,EAAE;EACpB;EACA,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;EACvC,MAAMI,KAAS,CAACZ,IAAQ,EAAEa,IAAQ,EAAE,WAAW,EAAEC,MAAU,EAAE,WAAW,EAAC;EACzE,KAAK,MAAM;EACX,MAAM,OAAO,GAAG,MAAK;EACrB,MAAMF,KAAS,CAACG,GAAO,EAAEF,IAAQ,EAAE,WAAW,EAAEC,MAAU,EAAEE,OAAW,EAAE,WAAW,EAAEhB,IAAQ,EAAE,QAAQ,EAAE,YAAY,EAAC;EACvH,KAAK;EACL,GAAG,MAAM;EACT,IAAIY,KAAS,CAACK,KAAS,EAAEJ,IAAQ,EAAE,WAAW,EAAEC,MAAU,EAAEE,OAAW,EAAE,WAAW,EAAEhB,IAAQ,EAAE,QAAQ,EAAE,YAAY,EAAC;EACvH,GAAG;EACH,EAAE,OAAO,OAAO;EAChB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,KAAKY,KAAS,CAACV,IAAQ,EAAE,WAAW,EAAE,GAAG,EAAEF,IAAQ,EAAE,IAAI,EAAC;AACzG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAC;AAG9C;EACO,MAAM,WAAW,GAAGkB,cAAe;AAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK;EACzC,EAAEd,OAAS,CAACF,IAAQ,EAAE,WAAW,EAAC;EAClC,EAAE,IAAI;EACN,IAAI,CAAC,GAAE;EACP,GAAG,SAAS;EACZ,IAAIK,QAAY,GAAE;EAClB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,OAAO,WAAW,EAAE,CAAC,KAAK;EACpD,EAAEH,OAAS,CAACF,IAAQ,EAAE,WAAW,EAAC;EAClC,EAAE,IAAI;EACN,IAAI,MAAM,CAAC,GAAE;EACb,GAAG,SAAS;EACZ,IAAIK,QAAY,GAAE;EAClB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK;EAC3C,EAAE,IAAI,SAAQ;EACd,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,GAAE;EACjC,EAAE,IAAI;EACN,IAAI,CAAC,GAAE;EACP,GAAG,SAAS;EACZ,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,MAAK;EACxC,IAAIK,KAAS,CAACX,MAAU,EAAE,OAAO,EAAED,IAAQ,EAAE,CAAC,CAAC,EAAEQ,gBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC;EACnF,GAAG;EACH,EAAE,OAAO,QAAQ;EACjB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,OAAO,OAAO,EAAE,CAAC,KAAK;EACtD,EAAE,IAAI,SAAQ;EACd,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,GAAE;EACjC,EAAE,IAAI;EACN,IAAI,MAAM,CAAC,GAAE;EACb,GAAG,SAAS;EACZ,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,MAAK;EACxC,IAAII,KAAS,CAACX,MAAU,EAAE,OAAO,EAAED,IAAQ,EAAE,CAAC,CAAC,EAAEQ,gBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC;EACnF,GAAG;EACH,EAAE,OAAO,QAAQ;EACjB,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,cAAc,KAAK;EAC7D,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE;EAC/B,IAAI,IAAI,CAAC,CAAC,EAAC;EACX,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;EACzB,MAAM,IAAI,CAAC,CAAC,EAAC;EACb,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,eAAe,KAAK;EAC7D,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EACf,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAC;EACvC,IAAII,KAAS,CAACZ,IAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAEe,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAEE,KAAS,EAAE,IAAI,CAAC,MAAM,EAAEjB,IAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAC;EAC/J,IAAI,IAAI,CAAC,CAAC,EAAC;EACX,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,eAAe,KAAK,EAAE7C,SAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAC,GAAE;AAClG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK;EACnD,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EACf,IAAI,IAAI,CAAC,CAAC,OAAO,EAAEY,SAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAEA,SAAc,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAC;EACtF,GAAG;EACH,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI;EACpD,EAAE,OAAO,KAAK,IAAI;EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;EACtC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,KAAK;EACzD;EACA,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;EAC9B,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;EAC1C,GAAG;EACH,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE;EACvC,IAAI,YAAY,CAAC,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAC;EAC5D,GAAG;EACH,EAAE,IAAI,OAAO,GAAG,KAAI;EACpB,EAAE,QAAQ,CAAC,CAAC,WAAW;EACvB,IAAI,KAAK,WAAW;EACpB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,EAAC;EAC3B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,EAAC;EAC3B;EACA,IAAI,KAAK,UAAU,EAAE;EACrB,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE;EACzC,QAAQ,YAAY,CAAC,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAC;EAChE,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,QAAQ,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EAC1C,OAAO;EACP,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,GAAG,EAAE;EACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;EAC7B,QAAQ,YAAY,CAAC,OAAO,EAAE,0CAA0C,EAAE,IAAI,EAAC;EAC/E,OAAO;EACP;EACA,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI;EACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAC3B,UAAU,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAC;EACrE,SAAS;EACT,OAAO,EAAC;EACR,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,GAAG,EAAE;EACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;EAC7B,QAAQ,YAAY,CAAC,OAAO,EAAE,0CAA0C,EAAE,IAAI,EAAC;EAC/E,OAAO;EACP;EACA,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;EAChC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EACzB,UAAU,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,oCAAoC,CAAC,EAAE,IAAI,EAAC;EACrG,SAAS;EACT,QAAQ,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAC;EAChF,OAAO,EAAC;EACR,MAAM,KAAK;EACX,KAAK;EACL,IAAI,KAAK,MAAM;EACf,MAAM,IAAIX,QAAa,CAAC,CAAC,CAAC,KAAKA,QAAa,CAAC,CAAC,CAAC,EAAE;EACjD,QAAQ,YAAY,CAAC,OAAO,EAAE,+CAA+C,EAAE,IAAI,EAAC;EACpF,OAAO;EACP,MAAM+D,OAAc,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;EACxC,QAAQ,IAAI,CAAC9D,WAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;EACzC,UAAU,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,kCAAkC,CAAC,EAAE,IAAI,EAAC;EAC3F,SAAS;EACT,QAAQ,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAC;EAC5E,OAAO,EAAC;EACR,MAAM,KAAK;EACX,IAAI,KAAK,KAAK;EACd,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;EACjC,QAAQ,YAAY,CAAC,OAAO,EAAE,8CAA8C,EAAE,IAAI,EAAC;EACnF,OAAO;EACP;EACA,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAC;EAC7F,MAAM,KAAK;EACX;EACA,IAAI;EACJ,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;EACpE,QAAQ,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAEU,SAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAEA,SAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC;EACvG,OAAO;EACP,GAAG;EACH,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAC;EAC1B,EAAE,OAAO,IAAI;EACb,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,GAAG,aAAa,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAC;AAC7H;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,gBAAgB,EAAE,OAAO,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;AACnI;EACA;EACA;EACA;EACA;EACO,MAAM,KAAK,GAAG,CAAC,IAAI;EAC1B,EAAE,IAAI,GAAG,GAAG,KAAI;EAChB,EAAE,IAAI;EACN,IAAI,CAAC,GAAE;EACP,GAAG,CAAC,OAAO,IAAI,EAAE;EACjB,IAAI,GAAG,GAAG,KAAI;EACd,IAAI6C,KAAS,CAACK,KAAS,EAAE,2BAA2B,EAAC;EACrD,GAAG;EACH;EACA,EAAE,IAAI,GAAG,KAAK,IAAI,EAAE;EACpB,IAAI,IAAI,CAAC,uBAAuB,EAAC;EACjC,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI;EACvC,EAAE,MAAM,aAAa,GAAGG,KAAU,CAAC,KAAK,EAAE,GAAG,IAAIA,KAAU,CAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC3B,KAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAACA,KAAQ,EAAE,CAAC,EAAC;EACpJ,EAAE,IAAI,eAAe,GAAG,EAAC;EACzB,EAAE,IAAI,UAAU,GAAG,EAAC;EACpB,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,GAAE;EACjC,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;EAC/B,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAC;EAC9B,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;EAC7B,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,EAAC;EAC1B;EACA,MAAM,IAAI,CAAC,EAAE;EACb,QAAQ,MAAM,cAAc,GAAG,EAAC;EAChC,QAAQ,IAAI,OAAO,GAAG,KAAI;EAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;EAC5D,UAAU,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAC;EAC3E,SAAS;EACT,QAAQ,UAAU,GAAE;EACpB;EACA,QAAQ,IAAI,OAAO,EAAE;EACrB,UAAU,eAAe,GAAE;EAC3B,SAAS;EACT,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,GAAE;EAC/B,EAAEmB,KAAS,CAAC,EAAE,EAAC;EACf,EAAE,MAAM,OAAO,GAAG,eAAe,KAAK,cAAa;EACnD;EACA,EAAE,IAAI,OAAO,EAAE;EACf;EACA,IAAIA,KAAS,CAACK,KAAS,EAAEJ,IAAQ,EAAE,uBAAuB,EAAEb,IAAQ,EAAEc,MAAU,EAAE,CAAC,IAAI,EAAEN,gBAAqB,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAC;EAC9H;EACA,IAAIa,cAAkB,CAAC,YAAY,EAAE,EAAE,EAAC;EACxC,GAAG,MAAM;EACT,IAAI,MAAM,WAAW,GAAG,aAAa,GAAG,gBAAe;EACvD,IAAIT,KAAS,CAACG,GAAO,EAAEF,IAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAC;EAC7F,GAAG;EACH,EAAE,OAAO,OAAO;EAChB,EAAC;AACD;EACA,MAAM,SAAS,SAAS,KAAK,CAAC,EAAE;AAChC;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,MAAM,IAAI;EAC9B,EAAED,KAAS,CAACG,GAAO,EAAEF,IAAQ,EAAE,IAAI,EAAEC,MAAU,EAAE,MAAM,EAAC;EACxD,EAAE,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC;EACpC,EAAC;AACD;EACA,MAAM,SAAS,SAAS,KAAK,CAAC,EAAE;AAChC;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK;EACrC,EAAE,IAAI,IAAI,EAAE;EACZ,IAAI,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC;EACrC,GAAG;EACH,EAAC;AACD;EACA;EACA,MAAM,YAAY,GAAG;;ECxlBrB;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;EACvB,EAAEQ,QAAc,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAC;EAClC,EAAEC,aAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC;EAC1C,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,EAAE,IAAI;EACjC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;EAC9B,EAAEA,aAAe,CAACC,OAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC;EACnD;;;;;;;;EChBO,MAAM,WAAW,GAAG,MAAM;EACjC,EAAEZ,KAAS,CAACV,IAAQ,EAAE,OAAO,EAAC;EAC9B,EAAEU,KAAS,CAACV,IAAQ,EAAE,OAAO,EAAEW,IAAQ,EAAE,WAAW,EAAC;EACrD,EAAED,KAAS,CAACK,KAAS,EAAEF,GAAO,EAAE,MAAM,EAAE,KAAK,EAAC;EAC9C,EAAEH,KAAS,CAACa,MAAU,EAAE,QAAQ,EAAC;EACjC,EAAEb,KAAS,CAACC,IAAQ,EAAE,OAAO,EAAEC,MAAU,EAAE,QAAQ,EAAC;EACpD,EAAEF,KAAS,CAACK,KAAS,EAAE,QAAQ,EAAED,OAAW,EAAE,SAAS,EAAC;EACxD,EAAEJ,KAAS,CAAC,gCAAgC,EAAC;EAC7C,EAAEA,KAAS,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAC;EACxC,EAAEA,KAAS,CAACK,KAAS,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAC;EAC7D,EAAEL,KAAS,CAACK,KAAS,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,aAAa,EAAC;EAC5E,EAAEL,KAAS,CAACV,IAAQ,EAAEW,IAAQ,EAAE,QAAQ,EAAE,CAAC,EAAC;EAC5C,EAAED,KAAS,CAACV,IAAQ,EAAEW,IAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAC;EACxD,EAAED,KAAS,CAAC,EAAE,EAAE,MAAM,EAAC;EACvB;;;;;;;ECbA;EACA;EACA;EACO,MAAM,2BAA2B,GAAG,EAAE,IAAI;EACjD,EAAEc,cAAgB,CAAC3F,aAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,gBAAgB,EAAC;EAC9E,EAAE2F,cAAgB,CAAC3F,aAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,SAAS,EAAC;EACnE,EAAE2F,cAAgB,CAAC3F,aAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,cAAc,EAAC;EAC5E,EAAE2F,cAAgB,CAAC3F,aAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,YAAY,EAAC;EACtE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,4BAA4B,GAAG,EAAE,IAAI;EAClD,EAAE4F,IAAM,CAAC,CAACC,eAAsB,EAAC;EACjC,EAAE,MAAM,GAAG,GAAGC,WAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAC;EAChD,EAAE,IAAI,YAAY,EAAE,iBAAgB;EACpC,EAAEC,WAAa,CAAC,2BAA2B,EAAE,MAAM;EACnD,IAAI,YAAY,GAAGC,iBAAwB,CAAC,GAAG,EAAC;EAChD,GAAG,EAAC;EACJ,EAAED,WAAa,CAAC,0BAA0B,EAAE,MAAM;EAClD,IAAI,gBAAgB,GAAGE,mBAA0B,CAAC,GAAG,EAAC;EACtD,GAAG,EAAC;EACJ,EAAEC,OAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAC;EACzE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,4BAA4B,GAAG,EAAE,IAAI;EAClD,EAAEN,IAAM,CAAC,CAACC,eAAsB,EAAC;EACjC,EAAE,MAAM,GAAG,GAAGM,UAAiB,CAACL,WAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAC;EACnE,EAAE,IAAI,YAAY,EAAE,iBAAgB;EACpC,EAAEC,WAAa,CAAC,2BAA2B,EAAE,MAAM;EACnD,IAAI,YAAY,GAAGK,iBAAwB,CAAC,GAAG,EAAC;EAChD,GAAG,EAAC;EACJ,EAAEL,WAAa,CAAC,0BAA0B,EAAE,MAAM;EAClD,IAAI,gBAAgB,GAAGM,mBAA0B,CAAC,GAAG,EAAC;EACtD,GAAG,EAAC;EACJ,EAAEH,OAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAC;EACzE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,uBAAuB,GAAG,EAAE,IAAI;EAC7C,EAAE,MAAM,MAAM,GAAG,OAAM;EACvB,EAAEI,MAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAC;EAC/B,EAAE,MAAM,gBAAgB,GAAGD,mBAA0B,CAACJ,mBAA0B,CAAC,MAAM,CAAC,EAAC;EACzF,EAAEK,MAAQ,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAC;EACzC,EAAEA,MAAQ,CAAC,gBAAgB,KAAK,MAAM,EAAC;EACvC,EAAE,IAAIT,eAAsB,EAAE;EAC9B,IAAI,MAAM,YAAY,GAAGO,iBAAwB,CAACJ,iBAAwB,CAAC,MAAM,CAAC,EAAC;EACnF,IAAIM,MAAQ,CAAC,YAAY,KAAK,gBAAgB,EAAC;EAC/C,GAAG;EACH;;;;;;;;;;EC3DA;AASA;EACA;EACA;EACA;EACA,IAAI,iBAAiB,GAAG;EACxB,EAAE,GAAG,IAAI,MAAM,CAACC,KAAU,CAAC,GAAG,EAAEC,gBAAuB,EAAEC,gBAAuB,CAAC,CAAC;EAClF,EAAE,GAAG,IAAI,SAAS;EAClB,EAAE,GAAG,IAAI,IAAI;EACb,EAAE,GAAG,IAAIF,KAAU,CAAC,GAAG,EAAEG,YAAmB,EAAEC,aAAoB,CAAC;EACnE,EAAE,GAAG,IAAIC,MAAW,CAAC,GAAG,CAAC;EACzB,EAAE,GAAG,IAAI,IAAI;EACb,EAAE,GAAG,IAAI,KAAK;EACd,EAAE,GAAG,IAAId,WAAgB,CAAC,GAAG,CAAC;EAC9B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC;EACvF,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAEe,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;EAC/I,EAAE,GAAG,IAAIC,UAAe,CAAC,GAAG,EAAED,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,EAAC;AACD;EACA,MAAM,+BAA+B,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAC;AAClE;EACA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACnC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAC;EAChD,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,gBAAgB,GAAG,KAAK,KAAKE,KAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,+BAA+B,GAAG,iBAAiB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAC;AACpL;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,qCAAqC,GAAG,MAAM;EAC3D,EAAE,MAAM,KAAK,GAAG;EAChB,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;EACvB,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;EACvB,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;EACzB,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC/B,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC/B,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAChC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAChC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;EACxC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;EACpD,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;EACpD,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;EACpD,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;EACpD,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;EACrD,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;EACrD,IAAG;EACH,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;EACxB,IAAI,MAAM,OAAO,GAAG7D,aAAsB,GAAE;EAC5C,IAAI8D,YAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAC;EAC3C,IAAI,MAAM,MAAM,GAAG5D,YAAqB,CAAC,OAAO,EAAC;EACjD,IAAIkD,MAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC;EACnD,IAAIA,MAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC;EAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,MAAMA,MAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC;EACzC,KAAK;EACL,GAAG,EAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE;EACzD,EAAE,MAAM,OAAO,GAAGpD,aAAsB,GAAE;EAC1C,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EACrB,EAAE,MAAM,MAAM,GAAGI,aAAsB,CAACF,YAAqB,CAAC,OAAO,CAAC,EAAC;EACvE,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAC;EAC7B,EAAE,MAAM6D,gBAAc,GAAGC,cAAqB,CAAC,GAAG,GAAG,EAAE,EAAC;EACxD,EAAE,MAAM,gBAAgB,GAAGC,MAAe,CAAC,OAAO,EAAC;EACnD,EAAE,IAAI,KAAK,EAAE;EACb,IAAIC,QAAU,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAEH,gBAAc,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAC;EAC5G,GAAG;EACH,EAAEf,OAAS,CAAC,GAAG,EAAE,MAAM,EAAC;EACxB,EAAE,OAAO;EACT,oBAAIe,gBAAc;EAClB,IAAI,gBAAgB;EACpB,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA,MAAM,aAAa,GAAG,CAAC,IAAI;EAC3B,EAAE,MAAM,OAAO,GAAG/D,aAAsB,GAAE;EAC1C,EAAEmE,cAAuB,CAAC,OAAO,EAAE,CAAC,EAAC;EACrC,EAAE,MAAM,OAAO,GAAG/D,aAAsB,CAACF,YAAqB,CAAC,OAAO,CAAC,EAAC;EACxE,EAAE,MAAM,MAAM,GAAGkE,aAAsB,CAAC,OAAO,EAAC;EAChD,EAAE,MAAM,MAAM,GAAGC,aAAsB,CAAC,OAAO,EAAC;EAChD,EAAE5B,cAAgB,CAAC,CAAC,EAAE,MAAM,EAAC;EAC7B,EAAEA,cAAgB,CAAC,CAAC,EAAE,MAAM,EAAC;EAC7B,EAAC;AACD;EACO,MAAM,6BAA6B,GAAG,MAAM;EACnD;EACA;EACA,EAAE,MAAM,CAAC,GAAG,QAAO;EACnB,EAAE,MAAM,sBAAsB,GAAGI,WAAa,CAAC,8BAA8B,EAAE,MAAM;EACrF,IAAI,MAAM,OAAO,GAAG7C,aAAsB,GAAE;EAC5C,IAAI6C,WAAa,CAAC,sCAAsC,EAAE,MAAM;EAChE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQsB,cAAuB,CAAC,OAAO,EAAE,GAAG,EAAC;EAC7C,OAAO;EACP,KAAK,EAAC;EACN,IAAI,MAAM,OAAO,GAAG/D,aAAsB,CAACF,YAAqB,CAAC,OAAO,CAAC,EAAC;EAC1E,IAAI2C,WAAa,CAAC,qCAAqC,EAAE,MAAM;EAC/D,MAAM,MAAM,GAAG,GAAG,GAAE;EACpB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,GAAG,CAAC,IAAI,CAACwB,aAAsB,CAAC,OAAO,CAAC,EAAC;EACjD,OAAO;EACP,KAAK,EAAC;EACN,GAAG,EAAC;AACJ;EACA,EAAE,MAAM,4BAA4B,GAAGxB,WAAa,CAAC,+DAA+D,EAAE,MAAM;EAC5H,IAAI,IAAI,SAAS,GAAG,IAAI,UAAU,GAAE;EACpC,IAAI,MAAM,cAAc,GAAG7C,aAAsB,GAAE;EACnD,IAAI6C,WAAa,CAAC,uEAAuE,EAAE,MAAM;EACjG,MAAM,IAAI,CAAC,GAAG,GAAE;EAChB,MAAM,MAAM,IAAI,GAAG,GAAE;EACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,CAAC,IAAI,IAAG;EAChB,QAAQiB,YAAqB,CAAC,cAAc,EAAE,CAAC,EAAC;EAChD,QAAQ,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;EAC1B,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;EACtB,UAAU,CAAC,GAAG,GAAE;EAChB,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;EAClB,MAAM,SAAS,GAAGb,UAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;EAClD,KAAK,EAAC;EACN,IAAI,MAAM,cAAc,GAAG7C,aAAsB,CAACF,YAAqB,CAAC,cAAc,CAAC,EAAC;EACxF,IAAI2C,WAAa,CAAC,sEAAsE,EAAE,MAAM;EAChG,MAAM,MAAM,GAAG,GAAG,GAAE;EACpB,MAAM,MAAM,OAAO,GAAGyB,UAAiB,CAAC,SAAS,EAAC;EAClD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,MAAM,GAAG,GAAGC,WAAoB,CAAC,cAAc,EAAC;EACxD,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAC;EACvC,OAAO;EACP,KAAK,EAAC;EACN,GAAG,EAAC;EACJ,EAAE,MAAM,sBAAsB,GAAG1B,WAAa,CAAC,kCAAkC,EAAE,MAAM;EACzF,IAAI,IAAI,SAAS,GAAG,IAAI,UAAU,GAAE;EACpC,IAAI,MAAM,OAAO,GAAG7C,aAAsB,GAAE;EAC5C,IAAI,MAAM,cAAc,GAAGA,aAAsB,GAAE;EACnD,IAAI6C,WAAa,CAAC,0CAA0C,EAAE,MAAM;EACpE,MAAM,IAAI,CAAC,GAAG,GAAE;EAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,CAAC,IAAI,IAAG;EAChB,QAAQiB,YAAqB,CAAC,cAAc,EAAE,CAAC,EAAC;EAChD,QAAQ,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;EAC1B,UAAUK,cAAuB,CAAC,OAAO,EAAE,CAAC,EAAC;EAC7C,UAAU,CAAC,GAAG,GAAE;EAChB,SAAS;EACT,OAAO;EACP,MAAMA,cAAuB,CAAC,OAAO,EAAE,CAAC,EAAC;EACzC,MAAM,SAAS,GAAGjE,YAAqB,CAAC,OAAO,EAAC;EAChD,KAAK,EAAC;EACN,IAAI,MAAM,OAAO,GAAGE,aAAsB,CAAC,SAAS,EAAC;EACrD,IAAI,MAAM,cAAc,GAAGA,aAAsB,CAACF,YAAqB,CAAC,cAAc,CAAC,EAAC;EACxF,IAAI2C,WAAa,CAAC,yCAAyC,EAAE,MAAM;EACnE,MAAM,MAAM,GAAG,GAAG,GAAE;EACpB,MAAM,MAAM,OAAO,GAAGwB,aAAsB,CAAC,OAAO,EAAC;EACrD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,MAAM,GAAG,GAAGE,WAAoB,CAAC,cAAc,EAAC;EACxD,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAC;EACvC,OAAO;EACP,KAAK,EAAC;EACN,GAAG,EAAC;EACJ,EAAEnB,MAAQ,CAAC,sBAAsB,GAAG,sBAAsB,EAAE,oJAAoJ,EAAC;EACjN,EAAEA,MAAQ,CAAC,sBAAsB,GAAG,4BAA4B,GAAG,GAAG,EAAE,oJAAoJ,EAAC;EAC7N,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,OAAO,GAAGpD,aAAsB,GAAE;EAC1C;EACA,EAAEC,QAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC;EACzC,EAAEA,QAAiB,CAAC,OAAO,EAAE,SAAS,EAAC;EACvC,EAAEA,QAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC;EACtC,EAAE,MAAM,OAAO,GAAGG,aAAsB,CAACF,YAAqB,CAAC,OAAO,CAAC,EAAC;EACxE,EAAEkD,MAAQ,CAACjD,OAAgB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAC;EACnD,EAAEiD,MAAQ,CAACjD,OAAgB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAC;EACnD,EAAEiD,MAAQ,CAACjD,OAAgB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAC;EACnD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,IAAI,CAAC,qBAAqB,EAAEF,QAAiB,EAAEE,OAAgB,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAC;EACxF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,sBAAsB,GAAG,EAAE,IAAI;EAC5C,EAAE,IAAI,CAAC,gBAAgB,EAAE2D,YAAqB,EAAES,WAAoB,EAAEpF,MAAa,EAAC;EACpF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,mBAAmB,GAAG,EAAE,IAAI;EACzC,EAAE,IAAI,CAAC,gBAAgB,EAAE2E,YAAqB,EAAES,WAAoB,EAAE,EAAE,EAAC;EACzE,EAAE,IAAI,CAAC,iBAAiB,EAAET,YAAqB,EAAES,WAAoB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;EAClF,EAAE,IAAI,CAAC,iBAAiB,EAAET,YAAqB,EAAES,WAAoB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;EAC5F,EAAE,IAAI,CAAC,iBAAiB,EAAET,YAAqB,EAAES,WAAoB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;EACtG,EAAE,IAAI,CAAC,uBAAuB,EAAET,YAAqB,EAAES,WAAoB,EAAE,UAAU,EAAC;EACxF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAE,IAAI,CAAC,eAAe,EAAEC,WAAoB,EAAEC,UAAmB,EAAE,CAAC,EAAE,EAAC;EACvE,EAAE,IAAI,CAAC,gBAAgB,EAAED,WAAoB,EAAEC,UAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC;EAClF,EAAE,IAAI,CAAC,gBAAgB,EAAED,WAAoB,EAAEC,UAAmB,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC;EAC5F,EAAE,IAAI,CAAC,gBAAgB,EAAED,WAAoB,EAAEC,UAAmB,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC;EACtG,EAAE,IAAI,CAAC,sBAAsB,EAAED,WAAoB,EAAEC,UAAmB,EAAE,EAAE,SAAS,CAAC,EAAC;EACvF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,yBAAyB,GAAG,EAAE,IAAI;EAC/C,EAAE,MAAM,CAAC,GAAGC,KAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACjD,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAEZ,YAAqB,EAAES,WAAoB,EAAE,CAAC,EAAE,KAAK,EAAC;EAChF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,wBAAwB,GAAG,EAAE,IAAI;EAC9C,EAAE,MAAM,CAAC,GAAGZ,MAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAExE,MAAa,EAAC;EAClD,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAEqF,WAAoB,EAAEC,UAAmB,EAAE,CAAC,EAAE,KAAK,EAAC;EAC7E,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAC;EAC3B,EAAE,IAAI,CAAC,cAAc,EAAExE,QAAiB,EAAEE,OAAgB,EAAE,CAAC,EAAE,KAAK,EAAC;EACrE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,6BAA6B,GAAG,EAAE,IAAI;EACnD,EAAE,MAAM,CAAC,GAAGuE,KAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACjD,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAEZ,YAAqB,EAAEa,WAAoB,EAAE,CAAC,EAAE,KAAK,EAAC;EAChF,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,4BAA4B,GAAG,EAAE,IAAI;EAClD,EAAE,MAAM,CAAC,GAAGhB,MAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAExE,MAAa,EAAC;EAClD,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAEqF,WAAoB,EAAEI,UAAmB,EAAE,CAAC,EAAE,KAAK,EAAC;EAC7E,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAC;EAC5E,EAAE/B,WAAa,CAAC,mBAAmB,EAAE,MAAM;EAC3C,IAAI,MAAM,OAAO,GAAG7C,aAAsB,GAAE;EAC5C,IAAIC,QAAiB,CAAC,OAAO,EAAE,CAAC,EAAC;EACjC,IAAI,MAAM,MAAM,GAAGC,YAAqB,CAAC,OAAO,EAAC;EACjD,IAAI2E,IAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAC;EAC/C,IAAI1E,OAAgB,CAACC,aAAsB,CAAC,MAAM,CAAC,EAAC;EACpD,GAAG,EAAC;EACJ,EAAEyC,WAAa,CAAC,yBAAyB,EAAE,MAAM;EACjD,IAAI,MAAM,OAAO,GAAG7C,aAAsB,GAAE;EAC5C,IAAImE,cAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC;EACvD,IAAI,MAAM,MAAM,GAAGjE,YAAqB,CAAC,OAAO,EAAC;EACjD,IAAI2E,IAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAC;EAC/C,IAAI,IAAI,CAAC,KAAK,CAACR,aAAsB,CAACjE,aAAsB,CAAC,MAAM,CAAC,CAAC,EAAC;EACtE,GAAG,EAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAE,aAAa,CAAC,OAAO,EAAC;EACxB,EAAE,aAAa,CAAC,OAAO,EAAC;EACxB,EAAE,aAAa,CAAC,KAAK,EAAC;EACtB,EAAE,aAAa,CAAC,EAAE,EAAC;EACnB,EAAE,aAAa,CAAC,MAAM,EAAC;EACvB,EAAE,aAAa,CAAC,GAAG,EAAC;EACpB,EAAE,aAAa,CAAC,GAAG,EAAC;EACpB,EAAE,aAAa,CAAC,IAAI,EAAC;EACrB,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,wBAAwB,GAAG,EAAE;EAC1C,EAAE,aAAa,CAACwC,WAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAC;AAC1C;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,EAAE,IAAI;EACpC,EAAE,MAAM,OAAO,GAAG5C,aAAsB,GAAE;EAC1C,EAAE8E,UAAmB,CAAC,OAAO,EAAE,CAAC,EAAC;EACjC,EAAEC,WAAoB,CAAC,OAAO,EAAE,EAAE,EAAC;EACnC,EAAEC,WAAoB,CAAC,OAAO,EAAE,KAAK,EAAC;EACtC,EAAEC,QAAiB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAC;EAClC,EAAEC,SAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAC;EACpC,EAAEC,SAAkB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAC;EACpC,EAAE,MAAM,GAAG,GAAGjF,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAE,MAAM,OAAO,GAAGE,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAEgD,MAAQ,CAACgC,SAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC;EAC7C,EAAEC,SAAkB,CAAC,OAAO,EAAC;EAC7B,EAAEjC,MAAQ,CAACkC,UAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC;EAC/C,EAAEC,UAAmB,CAAC,OAAO,EAAC;EAC9B,EAAEnC,MAAQ,CAACoC,UAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC;EAC/C,EAAEC,UAAmB,CAAC,OAAO,EAAC;EAC9B,EAAC;AACD;EACA,MAAM,MAAM,GAAG,KAAI;EACnB,MAAM,KAAK,GAAG,MAAK;AACnB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAC;AAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA,MAAM,aAAa,GAAG;EACtB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,IAAIC,cAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAEC,eAAwB,EAAE,GAAG,EAAE,GAAG,IAAI/B,UAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,EAAEZ,OAAS,EAAE;EAClL,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE4C,iBAA0B,EAAE,KAAK,EAAEC,kBAA2B,EAAE,GAAG,EAAE,GAAG,IAAIjC,UAAe,CAAC,GAAG,EAAED,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAEX,OAAS,EAAE;EACpL,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAEqC,SAAkB,EAAE,KAAK,EAAEP,UAAmB,EAAE,GAAG,EAAE,GAAG,IAAInB,MAAW,CAAC,GAAG,EAAE,CAAC,EAAEpE,KAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EACnJ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAEgG,UAAmB,EAAE,KAAK,EAAER,WAAoB,EAAE,GAAG,EAAE,GAAG,IAAIpB,MAAW,CAAC,GAAG,EAAE,CAAC,EAAEmC,MAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EACvJ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAEL,UAAmB,EAAE,KAAK,EAAET,WAAoB,EAAE,GAAG,EAAE,GAAG,IAAIrB,MAAW,CAAC,GAAG,EAAE,CAAC,EAAExE,MAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EACvJ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE4G,mBAA4B,EAAE,KAAK,EAAEC,oBAA6B,EAAE,GAAG,EAAE,GAAG,IAAIrC,MAAW,CAAC,GAAG,EAAE,CAAC,EAAExE,MAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EAClL,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEkF,aAAsB,EAAE,KAAK,EAAEF,cAAuB,EAAE,GAAG,EAAE,GAAG,IAAIvB,WAAgB,CAAC,GAAG,EAAEe,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EAChL,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAEY,WAAoB,EAAE,KAAK,EAAET,YAAqB,EAAE,GAAG,EAAE,GAAG,IAAImC,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE9G,MAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EAC1J,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAEsF,UAAmB,EAAE,KAAK,EAAED,WAAoB,EAAE,GAAG,EAAE,GAAG,IAAInB,KAAU,CAAC,GAAG,EAAEG,YAAmB,EAAEC,aAAoB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;EAC/K,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAEtD,OAAgB,EAAE,KAAK,EAAEF,QAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE+C,OAAS,EAAE;EACpG,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,sBAAsB,GAAG,EAAE,IAAI;EAC5C,EAAEkB,QAAU,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAC;EAClE,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAI;EACrB,EAAE,MAAM,GAAG,GAAG,GAAE;EAChB,EAAE,MAAM,OAAO,GAAGlE,aAAsB,GAAE;EAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EAClC,IAAI,MAAM,IAAI,GAAG6D,KAAU,CAAC,GAAG,EAAE,aAAa,EAAC;EAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC;EAC5B,IAAI,GAAG,CAAC,IAAI,CAAC;EACb,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;EAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;EACrB,MAAM,GAAG;EACT,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;EACrB,KAAK,EAAC;EACN,GAAG;EACH,EAAE,MAAM,QAAQ,GAAGD,UAAe,CAAC,GAAG,EAAEc,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAC;EACnE,EAAEiB,eAAwB,CAAC,OAAO,EAAE,QAAQ,EAAC;EAC7C,EAAE,MAAM,GAAG,GAAGzF,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAE,MAAM,OAAO,GAAGE,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAEgD,MAAQ,CAACa,MAAe,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,UAAU,EAAC;EACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAC;EACpB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAC;EAC/B,IAAIb,MAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAC;EAC3C,GAAG;EACH,EAAEJ,OAAS,CAAC,QAAQ,EAAEkD,oBAA6B,CAAC,OAAO,CAAC,EAAC;EAC7D,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,2BAA2B,GAAG,EAAE,IAAI;EACjD,EAAE,MAAM,OAAO,GAAGlG,aAAsB,GAAE;EAC1C,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAU;EAC5C,EAAE,MAAM,GAAG,GAAGM,uBAA8B,CAAC,UAAU,GAAG,CAAC,EAAC;EAC5D,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAC;EACd,GAAG;EACH,EAAEqF,eAAwB,CAAC,OAAO,EAAE,GAAG,EAAC;EACxC,EAAEQ,KAAc,CAAC,OAAO,EAAE,EAAE,EAAC;EAC7B,EAAE,MAAM,GAAG,GAAGjG,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAEkD,MAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,EAAC;EAC7C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC3C,IAAIA,MAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAC;EAClC,GAAG;EACH,EAAEA,MAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,EAAC;EACtC,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,MAAM,OAAO,GAAGpD,aAAsB,GAAE;EAC1C,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAU;EAC5C,EAAE,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,EAAC;EAC/B,EAAEgF,WAAoB,CAAC,OAAO,EAAE7F,MAAa,EAAC;EAC9C,EAAE,MAAM,GAAG,GAAGe,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAEkD,MAAQ,CAACa,MAAe,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,EAAC;EACvD,EAAE,MAAM,OAAO,GAAG7D,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAE,MAAM,KAAK,GAAGgG,+BAAsC,CAACV,cAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,EAAC;EACxG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC3C,IAAItC,MAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC;EAC5B,GAAG;EACH,EAAEA,MAAQ,CAACiD,UAAmB,CAAC,OAAO,CAAC,EAAC;EACxC,EAAEjD,MAAQ,CAACjE,MAAa,KAAKsG,UAAmB,CAAC,OAAO,CAAC,EAAC;EAC1D,EAAErC,MAAQ,CAAC,CAACiD,UAAmB,CAAC,OAAO,CAAC,EAAC;EACzC,EAAEpB,QAAiB,CAAC,OAAO,EAAE,CAAC,EAAE1F,KAAY,EAAC;EAC7C,EAAE0F,QAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,EAAC;EAC/C,EAAE,MAAM,IAAI,GAAG/E,YAAqB,CAAC,OAAO,EAAC;EAC7C,EAAEkD,MAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK7D,KAAY,EAAC;EACpC,EAAE6D,MAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,4BAA4B,EAAC;EACtD,EAAEA,MAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EAAC;EACtC,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,EAAE,IAAI;EACtC,EAAE,MAAM,OAAO,GAAGpD,aAAsB,GAAE;EAC1C,EAAE8E,UAAmB,CAAC,OAAO,EAAE,KAAK,EAAC;EACrC,EAAEhB,YAAqB,CAAC,OAAO,EAAE,YAAY,EAAC;EAC9C,EAAEK,cAAuB,CAAC,OAAO,EAAE,+CAA+C,EAAC;EACnF,EAAE,MAAM,GAAG,GAAGjE,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAE,MAAM,OAAO,GAAGE,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAEkG,KAAc,CAAC,OAAO,EAAC;EACzB,EAAE,MAAM,QAAQ,GAAGC,KAAc,CAAC,OAAO,EAAC;EAC1C,EAAE,MAAM,QAAQ,GAAGL,oBAA6B,CAAC,OAAO,EAAC;EACzD,EAAE,MAAM,QAAQ,GAAGA,oBAA6B,CAAC,QAAQ,EAAC;EAC1D,EAAElD,OAAS,CAAC,QAAQ,EAAE,QAAQ,EAAC;EAC/B,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,sBAAsB,GAAG,EAAE,IAAI;EAC5C,EAAE,MAAM,OAAO,GAAGhD,aAAsB,GAAE;EAC1C,EAAE+E,WAAoB,CAAC,OAAO,EAAE,CAAC,EAAC;EAClC,EAAE,MAAM,QAAQ,GAAG/E,aAAsB,GAAE;EAC3C,EAAE8D,YAAqB,CAAC,QAAQ,EAAE,MAAM,EAAC;EACzC,EAAE0C,kBAA2B,CAAC,QAAQ,EAAE,OAAO,EAAC;EAChD,EAAE,MAAM,GAAG,GAAGtG,YAAqB,CAAC,QAAQ,EAAC;EAC7C,EAAE,MAAM,OAAO,GAAGE,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAEgD,MAAQ,CAACmB,WAAoB,CAAC,OAAO,CAAC,KAAK,MAAM,EAAC;EACpD,EAAEnB,MAAQ,CAACmC,UAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC;EAC9C,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,0BAA0B,GAAG,EAAE,IAAI;EAChD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAI;EACrB,EAAE,MAAM,OAAO,GAAGvF,aAAsB,GAAE;EAC1C,EAAE,IAAI,OAAO,GAAG,GAAE;EAClB,EAAE,OAAO,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE;EACjC,IAAI,OAAO,IAAI4C,WAAgB,CAAC,GAAG,EAAE,MAAM,EAAC;EAC5C,GAAG;EACH,EAAEuB,cAAuB,CAAC,OAAO,EAAE,OAAO,EAAC;EAC3C,EAAE,MAAM,GAAG,GAAGjE,YAAqB,CAAC,OAAO,EAAC;EAC5C,EAAE,MAAM,OAAO,GAAGE,aAAsB,CAAC,GAAG,EAAC;EAC7C,EAAEgD,MAAQ,CAAC,OAAO,KAAKiB,aAAsB,CAAC,OAAO,CAAC,EAAC;EACvD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,EAAE,IAAI;EACpC,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,MAAM,OAAO,GAAG,IAAIoC,UAAmB,CAAC3C,YAAqB,EAAC;EAChE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACtB,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAI4C,UAAmB,CAACxG,YAAqB,CAAC,OAAO,CAAC,EAAEqE,WAAoB,EAAC;EAC/F,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAInB,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAMA,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,MAAM,OAAO,GAAG,IAAIuD,iBAA0B,CAAC,CAAC,EAAC;EACnD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACtB,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,iBAA0B,CAAC1G,YAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAC;EACnF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAIkD,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAMA,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,MAAM,OAAO,GAAG,IAAIyD,iBAA0B,GAAE;EAClD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACtB,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,iBAA0B,CAAC,OAAO,CAAC,YAAY,EAAE,EAAC;EACxE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI1D,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAMA,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,qBAAqB,GAAG,EAAE,IAAI;EAC3C,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,MAAM,OAAO,GAAG,IAAI2D,oBAA6B,GAAE;EACrD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACtB,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,oBAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,EAAC;EAC3E,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI5D,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAMA,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,EAAE,IAAI;EACrC,EAAE,MAAM,MAAM,GAAG,MAAK;EACtB,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAI;EACrB;EACA;EACA;EACA,EAAE,MAAM,IAAI,GAAG,GAAE;EACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,CAAC,IAAI,CAACsB,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC;EACvC,GAAG;EACH;EACA;EACA;EACA,EAAE,MAAM,WAAW,GAAG;EACtB,IAAI,EAAE,OAAO,EAAE,IAAIqC,oBAA6B,EAAE,EAAE,IAAI,EAAE,OAAO,IAAI,IAAIC,oBAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE;EAChI,IAAI,EAAE,OAAO,EAAE,IAAIC,cAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,IAAI,IAAIC,cAAuB,CAAChH,YAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;EAChI,IAAI,EAAE,OAAO,EAAE,IAAI+G,cAAuB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,IAAI,IAAIC,cAAuB,CAAChH,YAAqB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE;EAClI,IAAI,EAAE,OAAO,EAAE,IAAIyG,iBAA0B,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,IAAI,IAAIC,iBAA0B,CAAC1G,YAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;EACtI,IAAG;EACH,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;EAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EACvC;EACA;EACA;EACA,IAAI,MAAM,QAAQ,GAAG,GAAE;EACvB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAC;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC;EAC/B,KAAK;EACL,IAAI8C,OAAS,CAAC,IAAI,EAAE,QAAQ,EAAC;EAC7B,GAAG,EAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,MAAM,OAAO,GAAG,IAAIiE,cAAuB,CAAC,CAAC,EAAC;EAChD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC;EACpB,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,cAAuB,CAAChH,YAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAC;EAChF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAIkD,MAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAC;EAClC,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAI;EACrB,EAAE,MAAM,CAAC,GAAG,KAAI;EAChB,EAAE,MAAM,KAAK,GAAG,GAAE;EAClB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,KAAK,CAAC,IAAI,CAACR,WAAgB,CAAC,GAAG,CAAC,EAAC;EACrC,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE;EACvB,MAAM,MAAMuE,MAAI,GAAGC,IAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAC;EAC7C,MAAM,KAAK,CAAC,IAAI,CAACD,MAAI,EAAC;EACtB,MAAM,KAAK,CAAC,IAAI,CAACA,MAAI,EAAC;EACtB,KAAK;EACL,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE;EACvB,MAAM,KAAK,CAAC,IAAI,CAACE,IAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAC;EAC5C,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,aAAsB,GAAE;EAC9C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EAC3B,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,IAAIC,aAAsB,CAAC,OAAO,CAAC,YAAY,EAAE,EAAC;EACpE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,IAAInE,MAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAC;EACzC,GAAG;EACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC1pBA;EACA;EACA;EACA;EACA;EACA,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE;EACtC,EAAE,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAC;EACvC,EAAEJ,OAAS,CAAC,MAAM,EAAE,QAAQ,EAAC;EAC7B,EAAE,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC;EAC7D,EAAEA,OAAS,CAAC,SAAS,EAAEwE,MAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;EACtF,CAAC;AACD;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,EAAE,IAAI;EACjC,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACjE,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC/D,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC/D,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC7D,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAC;EAChE,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAC;EACnE,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAChE,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAChE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,MAAM,CAAC,GAAGH,IAAS,CAAC,EAAE,CAAC,IAAI,EAAC;EAC9B,EAAE,MAAM,CAAC,GAAGA,IAAS,CAAC,EAAE,CAAC,IAAI,EAAC;EAC9B,EAAE,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAC;EACvC,EAAE,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC;EAC1G,EAAE5E,cAAgB,CAAC,UAAU,EAAE,CAAC,EAAC;EACjC,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,EAAE,IAAI;EACtC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAC;EAChC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAC;EAChC,EAAEO,OAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAEyE,YAAc,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAC;EACvF,EAAEzE,OAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE0E,cAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAC;EACxF,EAAE1E,OAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEyE,YAAc,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAC;EACrG;;;;;;;;;EC9CA;EACA;EACA;EACO,MAAM,aAAa,GAAG,EAAE,IAAI;EACnC,EAAEzE,OAAS,CAAC,EAAE,EAAE,EAAE,EAAC;EACnB,EAAEA,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,yBAAyB,EAAC;EAC1D,EAAEA,OAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,EAAC;EACrD,EAAEA,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,uBAAuB,EAAC;EAClE,EAAEA,OAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,cAAc,EAAC;EACvE,EAAE,MAAM,IAAI,GAAGnG,QAAU,GAAE;EAC3B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAC;EACnB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAC;EACrB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,GAAE;EACxB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAC;EACnB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAC;EACrB,EAAEmG,OAAS,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAC;AACvC;EACA,EAAEkB,QAAU,CAAC,oCAAoC,EAAC;EAClD,EAAEyD,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAC;EACzD,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAC;EACzD,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAC;EACrD,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB;EACA,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,6BAA6B,EAAC;EAC3D,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,uCAAuC,EAAC;EAChF,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EAC1B,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC1C,uBAA8B,CAAC,CAAC,CAAC,EAAEA,uBAA8B,CAAC,CAAC,CAAC,EAAE,mCAAmC,EAAC;EACxH,GAAG,EAAC;EACJ,EAAEqH,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC1C,uBAA8B,CAAC,CAAC,CAAC,CAAC,MAAM,EAAEA,uBAA8B,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,mCAAmC,EAAC;EACtI,GAAG,EAAC;EACJ,EAAEqH,KAAO,CAAC,MAAM;EAChB,IAAIlF,cAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,6BAA6B,EAAC;EACnE,GAAG,EAAC;EACJ,EAAEH,aAAe,CAAC,EAAE,EAAE,EAAE,EAAE,wBAAwB,EAAC;EACnD,EAAEqF,KAAO,CAAC,MAAM;EAChB,IAAIrF,aAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,sCAAsC,EAAC;EACxE,GAAG,EAAC;EACJ,EAAEqF,KAAO,CAAC,MAAM;EAChB,IAAIrF,aAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;EAC7B,GAAG,EAAC;EACJ,EAAEsF,cAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,EAAC;EAC3D,EAAED,KAAO,CAAC,MAAM;EAChB,IAAIC,cAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,yBAAyB,EAAC;EAC7D,GAAG,EAAC;EACJ,EAAED,KAAO,CAAC,MAAM;EAChB,IAAIC,cAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC;EACxC,GAAG,EAAC;EACJ,EAAED,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,qCAAqC,EAAC;EAChF,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAIC,cAAgB,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,qCAAqC,EAAC;EACvF,GAAG,EAAC;EACJ,EAAE1D,QAAU,CAAC,WAAW,EAAC;EACzB,EAAEyD,KAAO,CAAC,MAAM;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,IAAI3E,OAAS,CAAC,EAAE,EAAE,EAAE,EAAC;EACrB,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,IAAI3E,OAAS,CAAC,EAAE,EAAE,EAAE,EAAC;EACrB,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAChB,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,GAAE;EACxB,IAAI3E,OAAS,CAAC,EAAE,EAAE,EAAE,EAAC;EACrB,GAAG,EAAC;EACJ,EAAEkB,QAAU,CAAC,WAAW,EAAC;EACzB,EAAEyD,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;EAC5C,GAAG,EAAC;EACJ,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAI3E,OAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;EACzC,GAAG,EAAC;EACJ,EAAC;AACD;EACO,MAAM,WAAW,GAAG,MAAM;EACjC,EAAE2E,KAAO,CAAC,MAAM;EAChB,IAAIE,IAAM,CAAC,uBAAuB,EAAC;EACnC,GAAG,EAAC;EACJ,EAAC;AACD;EACO,MAAM,YAAY,GAAG,MAAM;EAClC,EAAEnF,IAAM,CAAC,KAAK,EAAC;EACf,EAAEU,MAAQ,CAAC,IAAI,EAAC;EAChB,EAAEV,IAAM,GAAE;EACV;EACA,EAAEmF,IAAM,CAAC,qBAAqB,EAAC;EAC/B,EAAC;AACD;EACO,MAAM,SAAS,GAAG,YAAY;EACrC,EAAE,MAAMC,gBAAkB,CAAC,MAAM,EAAE,MAAMC,QAAc,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC;EAC5E,EAAE,MAAMC,UAAY,CAAC,kBAAkB,EAAE,MAAMC,IAAY,CAAC,CAAC,CAAC,EAAC;EAC/D,EAAC;AACD;EACO,MAAM,oBAAoB,GAAG,MAAM;EAC1C,EAAE,MAAM,GAAG,GAAG,GAAE;EAChB,EAAE,MAAM,CAAC,GAAG,IAAG;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC;EACf,GAAG;EACH,EAAE7E,MAAQ,CAAC,GAAG,CAAC,MAAM,CAAC5C,KAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;EACvD;;;;;;;;;;;EClIA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM7D,QAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;;ECXtC;AAUA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,IAAI,GAAG,OAAO,IAAIoL,QAAc,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EACnE;EACA;EACA,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;EAClE;EACA;EACA,EAAE,OAAO,CAAC,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,GAAE;EAC7C;EACA,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAC;EAC3D,CAAC,EAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAKA,QAAc,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EAC5E,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAC;EACtC;EACA;EACA;EACA,EAAE,OAAO,CAAC,eAAe,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAC;EAChE;EACA;EACA;EACA;EACA,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,MAAM,CAACG,QAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;EACrE;EACA,EAAE,OAAO,CAAC,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,GAAE;EAC7C;EACA;EACA;EACA,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,IAAI;EAC/B;EACA;EACA;EACA,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,OAAM;EAClC;EACA,IAAI,EAAE,CAAC,eAAe,GAAG,MAAM,EAAE,EAAE,CAAC,KAAK,GAAE,GAAE;EAC7C;EACA,IAAI,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;EACjD,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAC;EAClD,KAAK;EACL,IAAI,OAAO,CAAC,EAAE,EAAC;EACf,IAAG;EACH,CAAC,EAAC;AACF;EACA;EACA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC;AACpE;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;EACtE;EACA,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;EACnC,EAAC;AAqBD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG;EAC9B,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC;AACtB;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG;EAC9B,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;AACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG;EACpC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC;AAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG;EACpC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC;AAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,IAAI;EACtC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;AACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK;EACnC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;AAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK;EACvC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAC;AAgC/B;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK;EAC7C;EACA,EAAEC,GAAW,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;AACvH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,KAAKJ,QAAc,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EAC7E;EACA,EAAE,OAAO,CAAC,OAAO,GAAG,OAAM;EAC1B;EACA;EACA;EACA,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,IAAI;EAC/B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAM;EACtC,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;EAChD,MAAM,OAAO,OAAO,EAAE;EACtB,KAAK;EACL,IAAI,MAAM,CAAC,QAAQ,GAAE;EACrB,IAAG;EACH,CAAC,EAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM;EAC9D,EAAE,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC;AAChG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM;EAClE,EAAE,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;AACrF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAMK,UAAQ,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,EAAC;AAC1D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;;EC7QlI;EACA;EACA;EACA;EACA,MAAM,UAAU,GAAG,EAAE,IAAIC,YAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAC;EAClF,MAAM,UAAU,GAAG,WAAU;AAC7B;EACA;EACA;EACA;EACA;EACA,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAC;AACrE;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,QAAQ,GAAG,CAAC,IAAIC,UAAY,CAAC,CAAC,EAAE,MAAM,EAAC;AAC7C;EACA;EACO,MAAM,oBAAoB,GAAG,YAAY;EAChD,EAAE5F,IAAM,CAAC,CAAC,SAAS,EAAC;EACpB,EAAEwB,QAAU,CAAC,gCAAgC,EAAC;EAC9C,EAAE,MAAMqE,QAAY,CAAC,UAAU,EAAC;EAChC,EAAE,MAAM,EAAE,GAAG,MAAMC,MAAU,CAAC,UAAU,EAAE,UAAU,EAAC;EACrD,EAAE,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,EAAC;EAC3C,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAC;EACrC,EAAE,MAAMC,GAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EACnC,EAAE,MAAMA,GAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EACnC,EAAE,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EAC3C,EAAE,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EAC7B,EAAE,MAAM,gBAAgB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAC;EACzE,EAAEvE,QAAU,CAAC,YAAY,EAAC;EAC1B,EAAE,MAAM,UAAU,GAAG,MAAMwE,MAAU,CAAC,KAAK,EAAC;EAC5C,EAAE1F,OAAS,CAAC,UAAU,EAAE,YAAY,EAAC;EACrC,EAAEkB,QAAU,CAAC,gBAAgB,EAAC;EAC9B,EAAE,MAAM,cAAc,GAAG,MAAMyE,UAAc,CAAC,KAAK,EAAC;EACpD,EAAE3F,OAAS,CAAC,cAAc,EAAE,YAAY,EAAC;EACzC,EAAEkB,QAAU,CAAC,oBAAoB,EAAC;EAClC,EAAE,MAAM,kBAAkB,GAAG,MAAM0E,gBAAoB,CAAC,KAAK,EAAC;EAC9D,EAAE5F,OAAS,CAAC,kBAAkB,EAAE,gBAAgB,EAAC;AACjD;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,YAAY,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK;EACjD,IAAIkB,QAAU,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAC;EACvC;EACA;EACA;EACA,IAAI,MAAM,WAAW,GAAG,GAAE;EAC1B,IAAI,MAAM2E,OAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;EACjD,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC;EAChC,KAAK,EAAC;EACN,IAAI7F,OAAS,CAAC,WAAW,EAAE,gBAAgB,EAAC;EAC5C,IAAIkB,QAAU,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAC;EAC3C;EACA;EACA;EACA,IAAI,MAAM,WAAW,GAAG,GAAE;EAC1B,IAAI,MAAM4E,WAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;EAClD,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,EAAC;EAC3B,KAAK,EAAC;EACN,IAAI9F,OAAS,CAAC,WAAW,EAAE,YAAY,EAAC;EACxC,IAAG;EACH,EAAE,MAAM,YAAY,CAAC,YAAY,EAAE,IAAI,EAAC;EACxC,EAAE,MAAM,KAAK,GAAG+F,sBAA0B,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC;EAC5E;EACA,EAAE,MAAMN,GAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EACnC,EAAE,MAAMA,GAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EACnC,EAAE,MAAM,YAAY,CAAC,aAAa,EAAE,KAAK,EAAC;AAC1C;EACA,EAAEvE,QAAU,CAAC,SAAS,EAAC;EACvB,EAAE,MAAM,IAAI,GAAG,MAAM8E,GAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EAC7C,EAAE5F,MAAQ,CAAC,IAAI,KAAK,CAAC,EAAC;EACtB,EAAEc,QAAU,CAAC,SAAS,EAAC;EACvB,EAAE,MAAM+E,GAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EAChC,EAAE,MAAM,OAAO,GAAG,MAAMD,GAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC;EAChD,EAAE5F,MAAQ,CAAC,OAAO,KAAK,SAAS,EAAC;EACjC,EAAEc,QAAU,CAAC,SAAS,EAAC;EACvB,EAAE,MAAMgF,GAAO,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAC;EAC9B,EAAE,MAAM,OAAO,GAAG,MAAMF,GAAO,CAAC,KAAK,EAAE,EAAE,EAAC;EAC1C,EAAE5F,MAAQ,CAAC,OAAO,KAAK,EAAE,EAAC;EAC1B,EAAEc,QAAU,CAAC,gBAAgB,EAAC;EAC9B,EAAE,MAAM,GAAG,GAAG,MAAMiF,UAAc,CAAC,KAAK,EAAE,IAAI,EAAC;EAC/C,EAAE,MAAM,SAAS,GAAG,MAAMH,GAAO,CAAC,KAAK,EAAE,GAAG,EAAC;EAC7C,EAAE5F,MAAQ,CAAC,SAAS,KAAK,IAAI,EAAC;EAC9B;;;;;;;EC1FA;EACA;EACA;EACA,MAAM,CAAC,GAAG,IAAG;EACb,MAAM,CAAC,GAAG,IAAG;AACb;EACA;EACA;EACA;EACA;EACA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,EAAC;AACpG;EACA;EACA;EACA;EACA,MAAM,SAAS,GAAG,KAAK,IAAI;EAC3B,EAAE,IAAI,CAAC,GAAG,EAAC;EACX,EAAE,IAAI,EAAC;EACP,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC;EAC3D,GAAG;EACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC;EAC/D,GAAG;EACH,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC;EACzD,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,CAAC;EACrB;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;EACpB,IAAI,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,EAAC;EACpC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAI;EACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAACgG,IAAS,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,IAAIjK,OAAa;EACpG,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,MAAK;EACvB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAC;EACf,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAC;EAC1B,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE;EACvB;EACA,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAC;EAC5B,MAAM,IAAI,CAAC,EAAE,GAAG,EAAC;EACjB,KAAK;EACL,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC;EAClC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC;EACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,WAAU;EAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,WAAU;EAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC;EACnB,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,KAAKA,MAAa,GAAG,CAAC,CAAC;EAC1C,GAAG;EACH;;ECjEA,MAAM,WAAW,GAAG,KAAI;AACxB;EACA;EACA;EACA;EACA;EACA,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK;EAChC,EAAEkK,KAAO,CAAC,6BAA6B,EAAE,MAAM;EAC/C,IAAI,IAAI,GAAG,GAAG,EAAC;EACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,GAAE;EAC7B,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE;EACrB,QAAQxB,IAAM,CAAC,wBAAwB,EAAC;EACxC,OAAO;EACP,MAAM,GAAG,IAAI,KAAI;EACjB,KAAK;EACL,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,YAAW;EACjC,IAAIzE,MAAQ,CAAC,GAAG,IAAI,IAAI,EAAC;EACzB,IAAIA,MAAQ,CAAC,GAAG,IAAI,IAAI,EAAC;EACzB,GAAG,EAAC;AACJ;EACA,EAAEiG,KAAO,CAAC,kCAAkC,EAAE,MAAM;EACpD,IAAI,IAAI,IAAI,GAAG,EAAC;EAChB,IAAI,IAAI,IAAI,GAAG,EAAC;EAChB,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,EAAC;AACT;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,CAAC,GAAGC,IAAS,CAAC,GAAG,EAAC;EACxB,MAAM,IAAI,CAAC,EAAE;EACb,QAAQ,IAAI,GAAE;EACd,OAAO,MAAM;EACb,QAAQ,IAAI,GAAE;EACd,OAAO;EACP,KAAK;EACL,IAAIzE,IAAM,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC;EACxD,IAAIzB,MAAQ,CAAC,IAAI,IAAIvF,KAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,yBAAyB,EAAC;EAC/E,IAAIuF,MAAQ,CAAC,IAAI,IAAIvF,KAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,yBAAyB,EAAC;EAC/E,GAAG,EAAC;EACJ,EAAEwL,KAAO,CAAC,oCAAoC,EAAE,MAAM;EACtD,IAAI,IAAI,KAAK,GAAG,EAAC;EACjB,IAAI,IAAI,EAAC;AACT;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,KAAK,IAAI1F,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAC;EACvC,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,KAAK,GAAG,YAAW;EACvC,IAAI,MAAM,eAAe,GAAG,GAAG,GAAG,EAAC;EACnC,IAAIkB,IAAM,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAC;EAC7E,IAAIzB,MAAQ,CAAC/C,GAAQ,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,oCAAoC,EAAC;EAC5F,GAAG,EAAC;AACJ;EACA,EAAEgJ,KAAO,CAAC,wCAAwC,EAAE,MAAM;EAC1D,IAAI,IAAI,OAAO,GAAG,EAAC;EACnB,IAAI,IAAI,QAAQ,GAAG,EAAC;EACpB,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAG3E,KAAU,CAAC,GAAG,EAAE,CAACtF,MAAa,EAAEA,MAAa,EAAC;EAC7D,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAC5B,QAAQ,OAAO,GAAG,OAAM;EACxB,OAAO;EACP,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE;EAC7B,QAAQ,QAAQ,GAAG,OAAM;EACzB,OAAO;EACP,KAAK;EACL,IAAIgE,MAAQ,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,6BAA6B,EAAC;EAC7D,IAAIA,MAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,4BAA4B,EAAC;EAC1D,IAAIyB,IAAM,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EAChF,IAAIA,IAAM,CAAC,CAAC,6BAA6B,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EACnF,IAAIzB,MAAQ,CAAC,CAAC,QAAQ,GAAGmG,KAAY,MAAM,CAAC,EAAE,gCAAgC,EAAC;EAC/E,GAAG,EAAC;AACJ;EACA,EAAEF,KAAO,CAAC,kDAAkD,EAAE,MAAM;EACpE,IAAI,IAAI,GAAG,GAAG,EAAC;EACf,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAG1F,MAAW,CAAC,GAAG,EAAE,CAAC,EAAExE,MAAa,EAAC;EACjD,MAAM,IAAI,MAAM,GAAG,GAAG,EAAE;EACxB,QAAQ,GAAG,GAAG,OAAM;EACpB,OAAO;EACP,KAAK;EACL,IAAI0F,IAAM,CAAC,CAAC,4BAA4B,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EACxE,IAAIzB,MAAQ,CAAC,CAAC,GAAG,GAAGmG,KAAY,MAAM,CAAC,EAAE,iCAAiC,EAAC;EAC3E,GAAG,EAAC;AACJ;EACA,EAAEF,KAAO,CAAC,6CAA6C,EAAE,MAAM;EAC/D,IAAI,IAAI,OAAO,GAAG,EAAC;EACnB,IAAI,IAAI,QAAQ,GAAG,EAAC;EACpB,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAGhG,KAAU,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAC;EAChF,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAC5B,QAAQ,OAAO,GAAG,OAAM;EACxB,OAAO;EACP,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE;EAC7B,QAAQ,QAAQ,GAAG,OAAM;EACzB,OAAO;EACP,KAAK;EACL,IAAID,MAAQ,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,6BAA6B,EAAC;EAC7D,IAAIA,MAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,4BAA4B,EAAC;EAC1D,IAAIyB,IAAM,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC,EAAC;EACpD,IAAIA,IAAM,CAAC,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC,EAAC;EACtD,IAAIzB,MAAQ,CAAC,OAAO,IAAIjE,MAAa,KAAK,CAAC,CAAC,EAAE,+BAA+B,EAAC;EAC9E,IAAIiE,MAAQ,CAAC,QAAQ,GAAGjE,MAAa,EAAE,mDAAmD,EAAC;EAC3F,GAAG,EAAC;AACJ;EACA,EAAEkK,KAAO,CAAC,8CAA8C,EAAE,MAAM;EAChE,IAAI,IAAI,OAAO,GAAG,EAAC;EACnB,IAAI,IAAI,QAAQ,GAAG,MAAK;EACxB,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAGpD,MAAW,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAC;EAC3D,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAC5B,QAAQ,OAAO,GAAG,OAAM;EACxB,OAAO;EACP;EACA,MAAM,IAAI,MAAM,GAAG,QAAQ,EAAE;EAC7B,QAAQ,QAAQ,GAAG,OAAM;EACzB,OAAO;EACP,KAAK;EACL,IAAI7C,MAAQ,CAAC,QAAQ,IAAI,CAAC,EAAE,iCAAiC,EAAC;EAC9D,IAAIA,MAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,4BAA4B,EAAC;EAC1D,IAAIyB,IAAM,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC,EAAC;EACpD,IAAIA,IAAM,CAAC,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC,EAAC;EACtD,IAAIzB,MAAQ,CAAC,OAAO,IAAIjE,MAAa,KAAK,CAAC,CAAC,EAAE,+BAA+B,EAAC;EAC9E,GAAG,EAAC;AACJ;EACA,EAAEkK,KAAO,CAAC,wCAAwC,EAAE,MAAM;EAC1D,IAAI,IAAI,GAAG,GAAG,EAAC;EACf,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAG1F,MAAW,CAAC,GAAG,EAAE,CAAC,EAAEvE,MAAa,EAAC;EACjD,MAAM,IAAI,MAAM,GAAG,GAAG,EAAE;EACxB,QAAQ,GAAG,GAAG,OAAM;EACpB,OAAO;EACP,KAAK;EACL,IAAIyF,IAAM,CAAC,CAAC,4BAA4B,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EACxE,IAAIzB,MAAQ,CAAC,CAAC,GAAG,GAAGoG,KAAY,MAAM,CAAC,EAAE,iCAAiC,EAAC;EAC3E,GAAG,EAAC;AACJ;EACA,EAAEH,KAAO,CAAC,8BAA8B,EAAE,MAAM;EAChD,IAAI,IAAI,GAAG,GAAG,EAAC;EACf,IAAI,IAAI,EAAC;EACT,IAAI,IAAI,OAAM;EACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,MAAM,GAAG3F,MAAW,CAAC,GAAG,CAAC,GAAG,iBAAgB;EAClD,MAAM,IAAI,MAAM,GAAG,GAAG,EAAE;EACxB,QAAQ,GAAG,GAAG,OAAM;EACpB,OAAO;EACP,KAAK;EACL,IAAImB,IAAM,CAAC,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,CAAC,EAAC;EACjD,IAAIzB,MAAQ,CAAC,CAAC,gBAAgB,GAAG,GAAG,IAAI,gBAAgB,GAAG,IAAI,EAAE,+DAA+D,EAAC;EACjI,GAAG,EAAC;AACJ;EACA,EAAEiG,KAAO,CAAC,uCAAuC,EAAE,MAAM;EACzD,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,GAAE;EAC7B,IAAI,MAAM,KAAK,GAAG,oGAAmG;EACrH,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAChD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EAC3B,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,MAAMlC,MAAI,GAAGC,IAAS,CAAC,GAAG,EAAC;EACjC,MAAM,OAAO,CAAC,MAAM,CAACD,MAAI,EAAC;EAC1B,KAAK;EACL,IAAItC,IAAM,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC;EAC/E,IAAIzB,MAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,sCAAsC,EAAC;EACxE,GAAG,EAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,6BAA6B,GAAG,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE,IAAI,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAC;AAChG;EACA;EACA;EACA;EACO,MAAM,uBAAuB,GAAG,EAAE,IAAI;EAC7C,EAAEV,IAAM,CAAC,CAAC,UAAU,EAAC;EACrB,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAC;EACzC,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,oBAAoB,GAAG,EAAE,IAAI;EAC1C,EAAEA,IAAM,CAAC,CAAC,UAAU,EAAC;EACrB,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAC;EACtC,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;EACvC,EAAE,MAAM,QAAQ,GAAG,WAAW,GAAG,GAAE;EACnC,EAAE,MAAM+G,QAAM,GAAGC,MAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAC;EACnD,EAAE,MAAM,GAAG,GAAGD,QAAM,CAAC,UAAU,CAAC,IAAI,EAAC;EACrC,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;EACnB,IAAI,OAAO/G,IAAM,EAAE;EACnB,GAAG;EACH,EAAE,GAAG,CAAC,SAAS,GAAG,OAAM;EACxB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACxC,IAAI,MAAM,CAAC,GAAGgC,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAC;EAC9C,IAAI,MAAM,CAAC,GAAGA,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAC;EAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;EAC5B,GAAG;EACH,EAAEiF,WAAa,CAACF,QAAM,EAAE,QAAQ,EAAC;EACjC,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,uBAAuB,GAAG,EAAE,IAAI;EAC7C,EAAE/G,IAAM,CAAC,CAAC,SAAS,EAAC;EACpB,EAAE2G,KAAO,CAAC,kBAAkB,EAAE,MAAM,iBAAiB,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAC;EACzF,EAAEA,KAAO,CAAC,YAAY,EAAE,MAAM,iBAAiB,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAC;EAC7E,EAAEA,KAAO,CAAC,SAAS,EAAE,MAAM,iBAAiB,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAC;EACvE;;;;;;;;;;ECzOA;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAEjG,MAAQ,CAACwG,OAAU,CAACnI,MAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAC;EACjE,EAAE2B,MAAQ,CAAC3B,MAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAC;EAC3D,EAAE2B,MAAQ,CAAC3B,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAC;EACrE,EAAE2B,MAAQ,CAAC3B,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,6BAA6B,EAAC;EAC1F,EAAE2B,MAAQ,CAAC3B,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,yBAAyB,EAAC;EAC/E,EAAE2B,MAAQ,CAAC3B,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,iCAAiC,EAAC;EACpG;;;;;;;ECVA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,EAAE,IAAI;EAC9B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;EAChC;EACA,IAAI2B,MAAQ,CAACyG,QAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC;EAC7E,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,EAAE,IAAI;EAC/B,EAAEzG,MAAQ,CAAC0G,KAAY,KAAK,CAAC,EAAC;EAC9B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAC;EACzC;EACA,IAAI,MAAM,IAAI,GAAGD,QAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAC;EACnC,IAAIzG,MAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAC;EAC/D,GAAG;EACH,EAAEA,MAAQ,CAACjE,MAAa,KAAK,UAAU,EAAC;EACxC;;;;;;;;ECpBA;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAE,MAAM,UAAU,GAAG,MAAK;EAC1B,EAAE,IAAI,OAAO,GAAG,EAAC;EACjB,EAAE,IAAI,QAAQ,GAAGsE,cAAoB;EACrC,EAAE,IAAI,MAAM,GAAG,EAAC;EAChB,EAAE,IAAI,MAAM,GAAG,EAAC;EAChB,EAAE,IAAI,IAAI,GAAG,EAAC;EACd,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,MAAM,GAAG5C,QAAa,GAAE;EAC5B,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAM;EACtC,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAM;EACtE,IAAI,IAAI,MAAM,GAAG,OAAO,EAAE;EAC1B,MAAM,OAAO,GAAG,OAAM;EACtB,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,QAAQ,EAAE;EAC3B,MAAM,QAAQ,GAAG,OAAM;EACvB,KAAK;EACL,GAAG;EACH,EAAEgE,IAAM,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EAC9E,EAAEA,IAAM,CAAC,CAAC,6BAA6B,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;EACjF,EAAEA,IAAM,CAAC,CAAC,oCAAoC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,EAAC;EACtE,EAAEA,IAAM,CAAC,CAAC,kCAAkC,EAAE,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,EAAC;EAClF,EAAEzB,MAAQ,CAAC,CAAC,CAAC,OAAO,GAAGjE,MAAa,MAAM,CAAC,MAAM,OAAO,EAAE,iCAAiC,EAAC;EAC5F,EAAEiE,MAAQ,CAAC,CAAC,CAAC,QAAQ,GAAGjE,MAAa,MAAM,CAAC,MAAM,QAAQ,EAAE,kCAAkC,EAAC;EAC/F,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAE0F,IAAM,CAAC,CAAC,oBAAoB,EAAEkF,MAAa,EAAE,CAAC,CAAC,EAAC;EAClD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAErH,IAAM,CAAC,CAACsH,UAAY,EAAC;EACvB,EAAE,MAAM,UAAU,GAAGC,SAAW,GAAG,OAAO,GAAG,MAAK;EAClD,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,GAAE;EACzB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,MAAM,IAAI,GAAGF,MAAa,GAAE;EAChC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;EACzB,MAAMlC,IAAM,CAAC,qBAAqB,EAAC;EACnC,KAAK,MAAM;EACX,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAC;EACrB,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE;EAC9C,MAAMhD,IAAM,CAAC,CAAC,EAAEnH,KAAU,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,UAAU,CAAC,EAAC;EACtE,KAAK;EACL,GAAG;EACH,EAAE0F,MAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,EAAC;EACrC;;;;;;;;;ECxDA;EACA;EACA;EACA;EACA;EACA,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK;EAClC,EAAE,MAAM,KAAK,GAAG3C,WAAgB,GAAE;EAClC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM;EACtB,IAAI,MAAM,QAAQ,GAAGA,WAAgB,EAAE,GAAG,MAAK;EAC/C,IAAI2C,MAAQ,CAAC,QAAQ,IAAI,GAAG,EAAE,oCAAoC,EAAC;EACnE,IAAIA,MAAQ,CAAC,QAAQ,IAAI,GAAG,EAAE,oCAAoC,EAAC;EACnE,GAAG,CAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,MAAM,GAAG,CAAC,IAAI2E,QAAc,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAACG,QAAY,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAC;AAC3H;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,MAAM,EAAE,IAAI;EAC7C,EAAE9E,MAAQ,CAAC8G,WAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE,8BAA8B,EAAC;EACjG,EAAE9G,MAAQ,CAAC+G,OAAe,EAAE,CAAC,WAAW,KAAK,OAAO,EAAE,8BAA8B,EAAC;EACrF,EAAE,MAAM,SAAS,GAAGC,MAAc,GAAE;EACpC,EAAEhH,MAAQ,CAAC,SAAS,CAAC,WAAW,KAAK,OAAO,EAAE,8BAA8B,EAAC;EAC7E,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;EAC3B,EAAE,MAAM8G,WAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC;EACrC,EAAE,MAAM,MAAM,CAACE,MAAc,EAAE,EAAC;EAChC,EAAE,MAAMD,OAAe,GAAE;EACzB,EAAE,MAAM,QAAQ,CAAClC,IAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAC;EAC3C,EAAE,MAAM,QAAQ,CAAC,MAAM,CAACoC,KAAa,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAC;EAClE,EAAE,MAAM,SAAS,GAAG5J,WAAgB,GAAE;EACtC,EAAE,MAAM,QAAQ,CAAC4J,KAAa,CAAC,CAAC,EAAE,MAAM,CAAC5J,WAAgB,EAAE,GAAG,SAAS,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAC;EAC3F,EAAE,MAAM0H,GAAW,CAAC,CAACF,IAAY,CAAC,CAAC,CAAC,EAAEA,IAAY,CAAC,EAAE,CAAC,CAAC,EAAC;EACxD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,EAAE,IAAI;EACnC,EAAE7E,MAAQ,CAAChC,SAAiB,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAC;EACpD,EAAEgC,MAAQ,CAAChC,SAAiB,CAAC2G,QAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EAAC;EACvD,EAAE,MAAM,GAAG,GAAGqC,MAAc,GAAE;EAC9B,EAAEhH,MAAQ,CAAChC,SAAiB,CAAC,GAAG,CAAC,EAAC;EAClC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;EACrB,EAAEgC,MAAQ,CAAChC,SAAiB,CAAC+I,OAAe,EAAE,CAAC,EAAC;EAChD,EAAE/G,MAAQ,CAAChC,SAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAC;EACrF,EAAEuG,KAAO,CAAC,MAAM;EAChB,IAAIvE,MAAQ,CAAChC,SAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAC;EACpE,GAAG,EAAC;EACJ;;;;;;;;EC1DO,MAAM,SAAS,CAAC;EACvB,EAAE,WAAW,CAAC,GAAG;EACjB;EACA;EACA;EACA,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;EACpB,GAAG;EACH,CAAC;AACD;EACO,MAAM,KAAK,CAAC;EACnB,EAAE,WAAW,CAAC,GAAG;EACjB;EACA;EACA;EACA,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;EACrB;EACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAI;EACnB,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,GAAE;AACvC;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAI;AACpD;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK;EACrC,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;EAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAC;EACtB,IAAI,KAAK,CAAC,GAAG,GAAG,EAAC;EACjB,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,GAAG,GAAG,EAAC;EACjB,IAAI,KAAK,CAAC,KAAK,GAAG,EAAC;EACnB,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,OAAO,GAAG,KAAK,IAAI;EAChC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAK;EACvB,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;EAClB;EACA,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAI;EACxB,IAAI,OAAO,CAAC;EACZ,GAAG;EACH,EAAE,OAAO,IAAI;EACb;;EC3DA,MAAM,SAAS,SAASkJ,SAAe,CAAC;EACxC;EACA;EACA;EACA,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE;EAClB,IAAI,KAAK,GAAE;EACX,IAAI,IAAI,CAAC,CAAC,GAAG,EAAC;EACd,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAE,MAAM,CAAC,GAAG,GAAE;EACd;EACA;EACA;EACA,EAAE,MAAM,CAAC,GAAGC,MAAY,GAAE;EAC1B,EAAEnH,MAAQ,CAACoH,OAAa,CAAC,CAAC,CAAC,EAAC;EAC5B,EAAEpH,MAAQ,CAACqH,OAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAC;EACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAIC,OAAa,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAC;EACtC,IAAItH,MAAQ,CAAC,CAACoH,OAAa,CAAC,CAAC,CAAC,EAAC;EAC/B,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,MAAM,IAAI,6BAA6BC,OAAa,CAAC,CAAC,CAAC,EAAC;EAC5D,IAAIrH,MAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAC;EAC3C,GAAG;EACH,EAAEA,MAAQ,CAACqH,OAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAC;EACrC;;;;;;;EC7BA;EACA;EACA;EACO,MAAM,OAAO,GAAG,EAAE,IAAI;EAC7B,EAAE,MAAM,CAAC,GAAG5N,QAAU,GAAE;EACxB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EACb,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAC;EACb,EAAEuG,MAAQ,CAAChG,KAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAACoD,KAAQ,CAAC,KAAK,EAAE,EAAC;EAC/E,EAAE,IAAI,cAAc,GAAG,EAAC;EACxB,EAAE,MAAM,OAAO,GAAG,MAAM;EACxB,IAAI,cAAc,GAAE;EACpB,IAAI,OAAO,EAAE;EACb,IAAG;EACH,EAAEmK,cAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC;EACnC,EAAEA,cAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC;EACnC,EAAEA,cAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAC;EACnC,EAAE3H,OAAS,CAAC4H,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC;EAC3B,EAAExH,MAAQ,CAAC,cAAc,KAAK,CAAC,EAAC;EAChC;;;;;;;EClBA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,EAAE,IAAI;EACxC,EAAE,IAAI,KAAK,GAAG,EAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,MAAM,EAAE,GAAG,EAAC;EAChB,IAAIrE,SAAiB,CAAC,MAAM;EAC5B,MAAMqE,MAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAC;EAC9B,KAAK,EAAC;EACN,GAAG;EACH,EAAErE,SAAiB,CAAC,MAAM;EAC1B,IAAIqE,MAAQ,CAAC,KAAK,KAAK,EAAE,EAAC;EAC1B,GAAG,EAAC;EACJ,EAAEA,MAAQ,CAAC,KAAK,KAAK,CAAC,EAAC;EACvB,EAAE,OAAO+E,GAAW,CAAC;EACrB,IAAI+B,WAAmB,CAAC,OAAO,IAAInL,SAAiB,CAAC,OAAO,CAAC,CAAC;EAC9D,IAAIsL,KAAa,CAAC,CAAC,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;EACxC,GAAG,CAAC;EACJ,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,WAAW,GAAG,MAAM,EAAE,IAAI;EACvC,EAAE,IAAI,GAAG,GAAG,MAAK;EACjB,EAAE,MAAMQ,SAAO,GAAGC,OAAiB,CAAC,CAAC,EAAE,MAAM;EAC7C,IAAI,GAAG,GAAG,KAAI;EACd,GAAG,EAAC;EACJ,EAAED,SAAO,CAAC,OAAO,GAAE;EACnB,EAAE,MAAM9C,QAAc,CAAC,OAAO,IAAI;EAClC,IAAI+C,OAAiB,CAAC,EAAE,EAAE,OAAO,EAAC;EAClC,GAAG,EAAC;EACJ,EAAE1H,MAAQ,CAAC,GAAG,KAAK,KAAK,EAAC;EACzB,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,MAAM,EAAE,IAAI;EACxC,EAAE,IAAI,GAAG,GAAG,MAAK;EACjB,EAAE,MAAM,OAAO,GAAG2H,QAAkB,CAAC,CAAC,EAAE,MAAM;EAC9C,IAAI,GAAG,GAAG,KAAI;EACd,GAAG,EAAC;EACJ,EAAE,OAAO,CAAC,OAAO,GAAE;EACnB,EAAE,IAAI,CAAC,GAAG,EAAC;EACX,EAAEA,QAAkB,CAAC,CAAC,EAAE,MAAM;EAC9B,IAAI,CAAC,GAAE;EACP,GAAG,EAAC;EACJ,EAAE,MAAMV,KAAa,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC;EACrC,EAAEjH,MAAQ,CAAC,GAAG,KAAK,KAAK,EAAC;EACzB,EAAEA,MAAQ,CAAC,CAAC,GAAG,CAAC,EAAC;EACjB,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,kBAAkB,GAAG,MAAM,EAAE,IAAI;EAC9C,EAAE,IAAI,CAAC,GAAG,MAAK;EACf,EAAE4H,cAAwB,CAAC,MAAM,EAAE,CAAC,GAAG,KAAI,EAAE,EAAC;EAC9C,EAAE,MAAMX,KAAa,CAAC,CAAC,EAAE,MAAM,CAAC,EAAC;EACjC,EAAEjH,MAAQ,CAAC,CAAC,EAAC;EACb,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,MAAM,EAAE,IAAI;EAC5C,EAAE,MAAM2E,QAAc,CAAC,OAAO,IAAI;EAClC,IAAIkD,YAAsB,CAAC,OAAO,EAAC;EACnC,GAAG,EAAC;EACJ;;;;;;;;;;;ECvEA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,EAAE,IAAI;EAC9B,EAAE,MAAM,CAAC,GAAGC,OAAY,EAAE,CAAC,OAAO,GAAE;EACpC,EAAE,MAAM,CAAC,GAAGzK,WAAgB,GAAE;EAC9B,EAAE2C,MAAQ,CAAC/C,GAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,sCAAsC,EAAC;EACxE,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE+C,MAAQ,CAAC7B,gBAAqB,CAAC,EAAE,CAAC,KAAK,MAAM,EAAC;EAChD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,GAAG,CAAC,KAAK,OAAO,EAAC;EAClD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAC;EACtD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,KAAK,CAAC,KAAK,MAAM,EAAC;EACnD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAC;EACnD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAC;EACxD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAC;EACxD,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,EAAC;EAClE,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,SAAS,EAAC;EACvE,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS,EAAC;EAC3E,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,OAAO,EAAC;EAC3D,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,OAAO,EAAC;EAC7D,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,OAAO,EAAC;EAC7D,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,MAAM,EAAC;EAChE;EACA,EAAE6B,MAAQ,CAAC7B,gBAAqB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAC;EAChD;;;;;;;;EC7BA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,EAAE,IAAI;EAC9B,EAAE,MAAM,EAAE,GAAG,CAACjD,QAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEA,QAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE6M,cAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EAC9E,EAAEjH,QAAU,CAAC,gCAAgC,EAAC;EAC9C,EAAE,IAAI,SAAS,GAAG,EAAC;EACnB,EAAE,IAAI,UAAU,GAAG,EAAC;EACpB,EAAEhH,SAAY,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;EACpC,IAAI,SAAS,IAAI,KAAI;EACrB,IAAI,UAAU,IAAI,MAAK;EACvB,GAAG,EAAC;EACJ,EAAEkG,MAAQ,CAAC,SAAS,KAAK,CAAC,EAAC;EAC3B,EAAEA,MAAQ,CAAC,UAAU,KAAK,EAAE,EAAC;EAC7B,EAAEA,MAAQ,CAAC,SAAS,KAAKgI,KAAQ,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC5K,KAAQ,CAAC,EAAC;EACrE,EAAE4C,MAAQ,CAAC,UAAU,KAAKgI,KAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC5K,KAAQ,CAAC,EAAC;EAChF;;;;;;;EChBA;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAE4C,MAAQ,CAACiI,QAAa,EAAE,CAAC,WAAW,KAAK,SAAS,EAAE,2DAA2D,EAAC;EAClH,EAAEnH,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAEd,MAAQ,CAAClF,SAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,yBAAyB,EAAC;EAC/D,EAAEkF,MAAQ,CAAClF,SAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,yBAAyB,EAAC;EAC3E,EAAEkF,MAAQ,CAAClF,SAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,yBAAyB,EAAC;EACrF,EAAEkF,MAAQ,CAAC,CAAClF,SAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,8BAA8B,EAAC;EACnF,EAAEkF,MAAQ,CAAClF,SAAgB,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,6BAA6B,EAAC;EAC/F,EAAEkF,MAAQ,CAAC,CAAClF,SAAgB,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,6BAA6B,EAAC;EACzF,EAAEgG,QAAU,CAAC,cAAc,EAAC;EAC5B,EAAEd,MAAQ,CAACkI,KAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EAC9E,EAAElI,MAAQ,CAAC,CAACkI,KAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EACrF,EAAEpH,QAAU,CAAC,aAAa,EAAC;EAC3B,EAAEd,MAAQ,CAACmI,IAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAC;EACvE,EAAEnI,MAAQ,CAAC,CAACmI,IAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAC;EAC3D,EAAEnI,MAAQ,CAACmI,IAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,EAAC;EACnD,EAAEnI,MAAQ,CAAC,CAACmI,IAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,EAAC;EACzD,EAAErH,QAAU,CAAC,gBAAgB,EAAC;EAC9B,EAAE,IAAI,UAAU,GAAG,EAAC;EACpB,EAAEhC,OAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,IAAI,EAAC,EAAE,EAAC;EAC/D,EAAEkB,MAAQ,CAAC,UAAU,KAAK,CAAC,EAAC;EAC5B,EAAEc,QAAU,CAAC,YAAY,EAAC;EAC1B,EAAEd,MAAQ,CAACjB,KAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC3B,KAAQ,CAAC,KAAK,CAAC,EAAC;EAC1E,EAAE0D,QAAU,CAAC,eAAe,EAAC;EAC7B,EAAEd,MAAQ,CAACjF,QAAa,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC;EACnC,EAAEiF,MAAQ,CAACjF,QAAa,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC;EACzC;;;;;;;EC9BA;EACA;EACA;EACO,MAAM,QAAQ,GAAG,EAAE,IAAI;EAC9B,EAAE+F,QAAU,CAAC,UAAU,EAAC;EACxB,EAAEd,MAAQ,CAAC/C,GAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC;EAC9B,EAAE+C,MAAQ,CAAC/C,GAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,gBAAgB,EAAC;EACzE,EAAE+C,MAAQ,CAAC/C,GAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,gBAAgB,EAAC;EACzE,EAAE6D,QAAU,CAAC,UAAU,EAAC;EACxB,EAAEd,MAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC5C,KAAQ,CAAC,KAAK,EAAE,EAAC;EACnD,EAAE0D,QAAU,CAAC,WAAW,EAAC;EACzB,EAAEd,MAAQ,CAAC7C,IAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC;EAChC,EAAE6C,MAAQ,CAAC7C,IAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAC;EAClC,EAAE2D,QAAU,CAAC,YAAY,EAAC;EAC1B,EAAEd,MAAQ,CAACvF,KAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC;EACjC,EAAEuF,MAAQ,CAACvF,KAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAC;EACnC,EAAEqG,QAAU,CAAC,YAAY,EAAC;EAC1B,EAAEd,MAAQ,CAACwG,OAAU,CAAC,GAAG,CAAC,EAAC;EAC3B;EACA,EAAExG,MAAQ,CAAC,CAACwG,OAAU,CAAC,IAAI,CAAC,EAAC;EAC7B,EAAE1F,QAAU,CAAC,UAAU,EAAC;EACxB,EAAEd,MAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC9D,GAAQ,CAAC,KAAK,IAAI,EAAC;EACxE,EAAE4E,QAAU,CAAC,UAAU,EAAC;EACxB,EAAEd,MAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAACvD,GAAQ,CAAC,KAAK,CAAC,EAAC;EACrE,EAAEqE,QAAU,CAAC,YAAY,EAAC;EAC1B,EAAEd,MAAQ,CAAC1F,KAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC;EACjC,EAAE0F,MAAQ,CAAC1F,KAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC;EAClC;;;;;;;EC3BA;EACA;EACA;EACO,MAAM,UAAU,GAAG,EAAE,IAAI;EAChC,EAAEwG,QAAU,CAAC,OAAO,EAAC;EACrB,EAAEd,MAAQ,CAACoI,KAAY,CAAC,GAAG,CAAC,EAAC;EAC7B,EAAEpI,MAAQ,CAAC,CAACoI,KAAY,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC;EAChC;EACA,EAAEpI,MAAQ,CAACoI,KAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAC;EACjC,EAAEpI,MAAQ,CAAC,CAACoI,KAAY,CAAC,CAAC,CAAC,EAAC;EAC5B,EAAEtH,QAAU,CAAC,WAAW,EAAC;EACzB,EAAEd,MAAQ,CAAC,CAACtD,SAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC;EACpC,EAAEsD,MAAQ,CAAC,CAACtD,SAAgB,CAAC,GAAG,CAAC,EAAC;EAClC,EAAEsD,MAAQ,CAACtD,SAAgB,CAAC,CAAC,CAAC,EAAC;EAC/B,EAAEsD,MAAQ,CAACtD,SAAgB,CAAC,CAAC,CAAC,CAAC,EAAC;EAChC;;;;;;;ECdA;EACA;EACA;EACO,MAAM,wBAAwB,GAAG,EAAE,IAAI;EAC9C,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAI;EACrB,EAAE,MAAM,IAAI,GAAG8D,UAAe,CAAC,GAAG,EAAE,MAAM,EAAC;EAC3C,EAAE,MAAM,MAAM,GAAG6H,cAAqB,CAAC,IAAI,EAAC;EAC5C,EAAE,MAAM,OAAO,GAAGC,QAAe,CAAC,IAAI,EAAC;EACvC,EAAEtI,MAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,EAAC;EAC1C,EAAE,MAAM,OAAO,GAAGuI,UAAiB,CAAC,OAAO,EAAC;EAC5C,EAAEvI,MAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU,EAAC;EAC9C,EAAEA,MAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAC;EAClD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxC,IAAIA,MAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAC;EACpC,GAAG;EACH,EAAEJ,OAAS,CAAC,MAAM,EAAE,OAAO,EAAC;EAC5B,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,eAAe,GAAG,EAAE,IAAI;EACrC,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,GAAE;EACzD,EAAE,MAAM,GAAG,GAAG4I,SAAgB,CAACC,SAAgB,CAAC,GAAG,CAAC,EAAC;EACrD,EAAE7I,OAAS,CAAC,GAAG,EAAE,GAAG,EAAC;EACrB;;;;;;;;EC7BA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK;EACxD,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnE,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAC;EACxB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAC;EACzB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAG;EACtB,KAAK;EACL,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;EAC/C,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAC;EACjD,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK;EAC7C,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;EACpB,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAC;EACxC,GAAG,MAAM;EACT,IAAI,MAAM,KAAK,GAAG,GAAG,CAACnF,KAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAC;EAChD,IAAI,IAAI,CAAC,GAAG,GAAE;EACd,IAAI,IAAI,CAAC,GAAG,GAAE;EACd,IAAI,OAAO,IAAI,EAAE;EACjB,MAAM,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EACzC,QAAQ,CAAC,GAAE;EACX,OAAO;EACP,MAAM,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;EACzC,QAAQ,CAAC,GAAE;EACX,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE;EAClB,QAAQ,KAAK;EACb,OAAO;EACP;EACA;EACA,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAC;EACzB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAC;EACvB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAI;EACrB,KAAK;EACL,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAC;EACnC,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAC;EACvC,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;EAC3C,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAC;EAC7C;;ECnFA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK;EAClD,EAAE,MAAM,OAAO,GAAG,IAAG;EACrB,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,GAAE;EAClC,EAAE,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,GAAE;EACtC,EAAEgF,WAAa,CAAC,wBAAwB,EAAE,MAAM;EAChD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAC;EACzB,GAAG,EAAC;EACJ,EAAE,IAAI,gBAAgB,CAAC,MAAM,IAAI,KAAK,EAAE;EACxC,IAAIA,WAAa,CAAC,eAAe,EAAE,MAAM;EACzC,MAAMiJ,aAAkB,CAAC,gBAAgB,EAAE,OAAO,EAAC;EACnD,KAAK,EAAC;EACN,IAAIxJ,aAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,4CAA4C,EAAC;EAC5F,GAAG;EACH,EAAEO,WAAa,CAAC,WAAW,EAAE,MAAM;EACnC,IAAIkJ,SAAc,CAAC,YAAY,EAAE,OAAO,EAAC;EACzC,GAAG,EAAC;EACJ;EACA,EAAEzJ,aAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,wCAAwC,EAAC;EAC1G,EAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,KAAK;EAC7D,EAAE4B,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACnD,EAAEA,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACnD,EAAEA,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACnD,EAAEA,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACnD,EAAEA,QAAU,CAAC,mBAAmB,EAAC;EACjC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACpD,EAAEA,QAAU,CAAC,mBAAmB,EAAC;EACjC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACpD,EAAEA,QAAU,CAAC,kBAAkB,EAAC;EAChC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACrD,EAAEA,QAAU,CAAC,mBAAmB,EAAC;EACjC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACtD,EAAEA,QAAU,CAAC,oBAAoB,EAAC;EAClC,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EACvD,EAAE,IAAI+F,SAAW,EAAE;EACnB,IAAI/F,QAAU,CAAC,kBAAkB,EAAC;EAClC,IAAI,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EAC1D,IAAIA,QAAU,CAAC,mBAAmB,EAAC;EACnC,IAAI,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;EAC3D,GAAG;EACH,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,EAAE,IAAI;EACpC,EAAExB,IAAM,CAAC,CAACsH,UAAY,EAAC;EACvB;EACA;EACA;EACA;EACA,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAC;EACvB;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAC;EACjC;EACA;EACA;EACA;EACA,EAAE,MAAM,WAAW,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAACpG,UAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAC;EAC3F,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAC;EAClD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,cAAc,GAAG,EAAE,IAAI;EACpC,EAAElB,IAAM,CAAC,CAACsH,UAAY,EAAC;EACvB;EACA;EACA;EACA;EACA,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAC;EACvB;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAC;EACjC;EACA;EACA;EACA;EACA,EAAE,MAAM,WAAW,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAACgC,WAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC;EACvE,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAC;EAClD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,oBAAoB,GAAG,EAAE,IAAI;EAC1C;EACA;EACA;EACA;EACA,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAK;EACjC;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAK;EAC7C;EACA;EACA;EACA;EACA,EAAE,MAAM,WAAW,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAACA,WAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,KAAK,EAAE,CAAC,EAAC;EACjG,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAC;EAClD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,0BAA0B,GAAG,EAAE,IAAI;EAChD;EACA;EACA;EACA;EACA,EAAE,MAAM,GAAG,GAAG,OAAM;EACpB,EAAEnJ,WAAa,CAAC,gBAAgB,EAAE,MAAM;EACxC;EACA;EACA;EACA,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAC;EAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAClC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAE;EAC3B,KAAK;EACL,GAAG,EAAC;EACJ,EAAEA,WAAa,CAAC,eAAe,EAAE,MAAM;EACvC;EACA;EACA;EACA,IAAI,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,GAAE;EACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EACjD,MAAM,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,GAAE;EAClD,MAAM,CAAC,CAAC,IAAI,GAAG,KAAI;EACnB,MAAM,CAAC,GAAG,KAAI;EACd,KAAK;EACL,GAAG,EAAC;EACJ;;;;;;;;;;ECrKA;EACA;EACA;EACA;EACA;AAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,GAAG,IAAI;EACxC;EACA;EACA;EACA,EAAE,MAAM,KAAK,GAAG,GAAE;EAClB,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;EACtC,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAC;EAClE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAC;EACzB,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACzB,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAC;EAClC,MAAM,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAC;EAC5E,KAAK;EACL,GAAG;EACH,EAAE,OAAO,KAAK;EACd,EAAC;AACD;EACA;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,MAAM;EACvC,EAAEV,KAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;;ECjCpG;EACA;EACA;EACA,MAAM,SAAS,GAAG,MAAM,IAAI;EAC5B,EAAE,MAAM,GAAG,GAAG8J,iBAAqB,CAACC,iBAAqB,CAAC,MAAM,CAAC,EAAC;EAClE,EAAEtE,cAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAC;EACjD,EAAC;AACD;EACA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,SAAS,CAAC,EAAE,EAAC;EACf,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAC;EACvB,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAC;AACpC;EACA,EAAEA,cAAgB,CAAC,GAAG,EAAEqE,iBAAqB,CAAC,6BAA6B,CAAC,EAAC;EAC7E,EAAErE,cAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAEqE,iBAAqB,CAAC,iCAAiC,CAAC,EAAC;EACzF,EAAErE,cAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEqE,iBAAqB,CAAC,+BAA+B,CAAC,EAAC;EACrF,EAAErE,cAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEqE,iBAAqB,CAAC,8BAA8B,CAAC,EAAC;EACpF,EAAErE,cAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAEqE,iBAAqB,CAAC,kCAAkC,CAAC,EAAC;EAC1F,EAAErE,cAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAEqE,iBAAqB,CAAC,uCAAuC,CAAC,EAAC;EACzG;;;;;;;ECtBA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,EAAE,IAAI;EACtC,EAAEjJ,OAAS,CAACpF,MAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAC;EACnD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAC;EACvD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAC;EAC3D,EAAEoF,OAAS,CAACpF,MAAa,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC9D,EAAEoF,OAAS,CAACpF,MAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD;EACA,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACzD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACvD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACzD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC3E,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACvD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACzD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACvD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC3D;EACA,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACzD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACvD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACzD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EACxD,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC1D,EAAEoF,OAAS,CAACpF,MAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAC;EAC/D;;;;;;;EC/BA;EACA;EACA;EACO,MAAM,gBAAgB,GAAG,EAAE,IAAI;EACtC,EAAEwF,MAAQ,CAAC+I,YAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EAChC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EACjC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAAC;EACnC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAC;AACpC;EACA,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,GAAE;EACtB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,GAAE;EACxB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,GAAE;EACxB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,GAAE;EACxB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,GAAE;EACxB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAC;EACpB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC;EACzB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAC;EACpB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAC;EACpB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAC;AACpB;EACA,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;EAC9C,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC;EAClE,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC;EACpD,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAC;EAC1D,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAC;AACtE;EACA,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC;EAClC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;AACzC;EACA,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;EACxD,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;EACzD,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;EAC5D,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC;EAClC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAC;AACpC;EACA,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACtC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;AACvC;EACA,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC;EAC3B,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;EAC9B,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAC;EACjC,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;AAC9B;EACA,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACtC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;AACtC;EACA,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EACtC,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;EACtC,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC;EACzC,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;AACtC;EACA,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;EACvC,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;AACtC;EACA,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;EACrD,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;EACrD,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;EACrD,EAAE/I,MAAQ,CAAC+I,YAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;AACpD;EACA,EAAE/I,MAAQ,CAAC,CAAC+I,YAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC;EAC9C;;;;;;;ECnEA;EACA;EACA;EACO,MAAM,iBAAiB,GAAG,EAAE,IAAI;EACvC,EAAE,MAAM,CAAC,GAAGnP,WAAkB;EAC9B;EACA;EACA;EACA,EAAE,IAAI,SAAS,GAAG,KAAI;EACtB,EAAEoP,QAAgB,CAAC,KAAK,IAAI;EAC5B,IAAI,SAAS,GAAG,MAAK;EACrB,GAAG,EAAC;EACJ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAC;EAC3B,EAAEhJ,MAAQ,CAAC,SAAS,KAAK,IAAI,EAAC;EAC9B;;;;;;;ECcA;EACA,IAAI,SAAS,EAAE;EACf,EAAEiJ,cAAkB,CAAC,QAAQ,CAAC,IAAI,EAAC;EACnC,CAAC;AACD;EACA,QAAQ,CAAC;EACT,EAAE,KAAK;EACP,EAAE,OAAO;EACT,EAAE,MAAM;EACR,EAAE,QAAQ;EACV,EAAE,IAAI;EACN,EAAE,OAAO;EACT,EAAE,SAAS;EACX,EAAE,IAAI;EACN,EAAE,UAAU;EACZ,EAAE,MAAM;EACR,EAAE,MAAM;EACR,EAAE,OAAO;EACT,EAAE,KAAK;EACP,EAAE,GAAG;EACL,EAAE,SAAS;EACX,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,MAAM;EACR,EAAE,IAAI;EACN,EAAE,MAAM;EACR,EAAE,MAAM;EACR,EAAE,IAAI;EACN,EAAE,GAAG;EACL,EAAE,MAAM;EACR,EAAE,IAAI;EACN,EAAE,OAAO;EACT,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI;EACnB;EACA,EAAE,IAAI,MAAM,EAAE;EACd,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,EAAC;EACjC,GAAG;EACH,CAAC;;;;;;"}