{"mappings":"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ACAA,GAEAuO,GAEAC,GAEAC,GAEAC,GACAyC,GACAA,GACAA,GAEAxC,GAEA1O,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA2O,GAEAC,GAEAC,GAEAC,GAEAoC,GACAA,GACAA,GACAnC,GAEA3O,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA4O,GAEAC,GAEAC,GAEAC,GAEA+B,GACAA,GACAA,GACA9B,GAEAnP,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoP,GAEAC,GAEAC,GAEAC,GACA0B,GACAA,GACAA,GAEAzB,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAY,GACAA,GACAA,GACAA,GAEAX,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAG,GAEAC,GACAC,GACAA,GACAA,GAEAC,IAKF,MAAO,CACL/M,MAAOA,O,kCC5yCX,IAAAgN,EAsBAC,EAWAC,EAUAC,EAIAC,EAWAC,EAuEAC,EAgBAC,EAIAC,E,iaA7JMrlB,O,aACA4S,U,aAGN,MAAM0S,EAAUlS,EAAA6B,QACVsQ,EAAUnS,EAAAoS,QAGhBX,EAAo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","sources":["node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/react/cjs/react-jsx-runtime.production.min.js","node_modules/object-assign/index.js","node_modules/react/index.js","node_modules/react/cjs/react.production.min.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/scheduler/index.js","node_modules/scheduler/cjs/scheduler.production.min.js","node_modules/borc/src/diagnose.js","node_modules/borc/node_modules/buffer/index.js","node_modules/base64-js/index.js","node_modules/ieee754/index.js","node_modules/borc/src/decoder.js","node_modules/bignumber.js/bignumber.js","node_modules/borc/src/decoder.asm.js","node_modules/borc/src/utils.js","node_modules/borc/src/constants.js","node_modules/borc/src/simple.js","node_modules/borc/src/tagged.js","node_modules/iso-url/index.js","node_modules/iso-url/src/url-browser.js","node_modules/iso-url/src/relative.js","node_modules/borc/src/encoder.js","node_modules/simple-cbor/src/serializer.ts","node_modules/simple-cbor/src/value.ts","node_modules/@dfinity/agent/src/canisterStatus/index.ts","node_modules/@dfinity/principal/src/index.ts","node_modules/@dfinity/principal/src/utils/base32.ts","node_modules/@dfinity/principal/src/utils/getCrc.ts","node_modules/@dfinity/principal/src/utils/sha224.ts","node_modules/@noble/hashes/src/sha256.ts","node_modules/@noble/hashes/src/_sha2.ts","node_modules/@noble/hashes/src/_assert.ts","node_modules/@noble/hashes/src/utils.ts","node_modules/@noble/hashes/src/crypto.ts","node_modules/@dfinity/agent/src/errors.ts","node_modules/@dfinity/agent/src/certificate.ts","node_modules/@dfinity/agent/src/cbor.ts","node_modules/borc/src/index.js","node_modules/simple-cbor/src/index.ts","node_modules/@dfinity/agent/src/utils/buffer.ts","node_modules/@dfinity/agent/src/request_id.ts","node_modules/@dfinity/candid/src/index.ts","node_modules/@dfinity/candid/src/idl.ts","node_modules/@dfinity/candid/src/utils/buffer.ts","node_modules/@dfinity/candid/src/utils/hash.ts","node_modules/@dfinity/candid/src/utils/leb128.ts","node_modules/@dfinity/candid/src/utils/bigint-math.ts","node_modules/@dfinity/candid/src/candid-ui.ts","node_modules/@dfinity/candid/src/candid-core.ts","node_modules/@dfinity/agent/src/utils/bls.ts","node_modules/@dfinity/agent/src/vendor/bls/bls.ts","node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","node_modules/@dfinity/agent/src/vendor/bls/wasm.ts","node_modules/@dfinity/agent/src/utils/leb.ts","node_modules/@parcel/runtime-js/lib/runtime-529ddd0957eb0496.js","node_modules/react/jsx-runtime.js","node_modules/react-dom/index.js","node_modules/@parcel/runtime-js/lib/runtime-1c540bbe8644a0d7.js","node_modules/@parcel/runtime-js/lib/runtime-6c3ce1d4c789fc51.js","node_modules/@parcel/runtime-js/lib/runtime-875da0b777708137.js","node_modules/@dfinity/agent/src/agent/api.ts","node_modules/@dfinity/agent/src/auth.ts","node_modules/@dfinity/agent/src/agent/http/transforms.ts","node_modules/@dfinity/agent/src/utils/random.ts","node_modules/@dfinity/agent/src/agent/http/types.ts","node_modules/@dfinity/agent/src/agent/http/errors.ts","node_modules/@noble/hashes/src/_u64.ts","node_modules/@noble/hashes/src/sha512.ts","node_modules/@noble/curves/src/abstract/utils.ts","node_modules/@noble/curves/src/abstract/modular.ts","node_modules/@noble/curves/src/abstract/curve.ts","node_modules/@noble/curves/src/abstract/edwards.ts","node_modules/@noble/curves/src/abstract/montgomery.ts","node_modules/@noble/curves/src/abstract/hash-to-curve.ts","node_modules/@noble/curves/src/ed25519.ts","node_modules/@dfinity/agent/src/utils/expirableMap.ts","node_modules/@dfinity/agent/src/der.ts","node_modules/@dfinity/agent/src/public_key.ts","node_modules/@dfinity/agent/src/observable.ts","node_modules/@dfinity/agent/src/agent/http/index.ts","node_modules/@dfinity/agent/src/agent/proxy.ts","node_modules/@dfinity/agent/src/agent/index.ts","node_modules/@dfinity/agent/src/polling/strategy.ts","node_modules/@dfinity/agent/src/polling/index.ts","node_modules/buffer/index.js","node_modules/@dfinity/agent/src/canisters/management_idl.ts","node_modules/@dfinity/agent/src/actor.ts","node_modules/@dfinity/agent/src/fetch_candid.ts","src/declarations/lobby/lobby.did.js","src/declarations/lobby/index.js",".dfx/local/canister_ids.json","node_modules/@parcel/runtime-js/lib/runtime-d3156609b2e724f5.js","node_modules/@parcel/runtime-js/lib/runtime-4194cfe61ff15880.js","node_modules/@parcel/runtime-js/lib/runtime-ca96faf63ff2d2f9.js","node_modules/@parcel/runtime-js/lib/runtime-3d4705d83b788bf6.js","src/frontend/src/Lobby.jsx","src/declarations/bulldogblast/bulldogblast.did.js","src/declarations/bulldogblast/index.js","node_modules/@parcel/runtime-js/lib/runtime-d0d9989515b77d33.js","node_modules/@parcel/runtime-js/lib/runtime-07e05f3cb8707301.js","node_modules/@parcel/runtime-js/lib/runtime-ae5d390a9e9284c4.js","node_modules/@parcel/runtime-js/lib/runtime-c3597cf0933e3091.js","node_modules/@parcel/runtime-js/lib/runtime-94a70d0e643a99a8.js","node_modules/@parcel/runtime-js/lib/runtime-e5a7525c3bb37937.js","node_modules/@parcel/runtime-js/lib/runtime-129bc3b216be44dd.js","node_modules/@parcel/runtime-js/lib/runtime-4f5e315db957ff8a.js","src/frontend/src/BulldogBlast.jsx","src/frontend/src/App.jsx","src/frontend/src/index.jsx"],"sourcesContent":["\"use strict\";\n\nvar mapping = {};\n\nfunction register(pairs) {\n var keys = Object.keys(pairs);\n\n for (var i = 0; i < keys.length; i++) {\n mapping[keys[i]] = pairs[keys[i]];\n }\n}\n\nfunction resolve(id) {\n var resolved = mapping[id];\n\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n\n return resolved;\n}\n\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n",null,null,"/** @module CanisterStatus */\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../errors';\nimport { HttpAgent } from '../agent/http';\nimport {\n Cert,\n Certificate,\n CreateCertificateOptions,\n HashTree,\n flatten_forks,\n check_canister_ranges,\n lookupResultToBuffer,\n lookup_path,\n} from '../certificate';\nimport { toHex } from '../utils/buffer';\nimport * as Cbor from '../cbor';\nimport { decodeLeb128, decodeTime } from '../utils/leb';\nimport { DerEncodedPublicKey } from '..';\n\n/**\n * Represents the useful information about a subnet\n * @param {string} subnetId the principal id of the canister's subnet\n * @param {string[]} nodeKeys the keys of the individual nodes in the subnet\n */\nexport type SubnetStatus = {\n // Principal as a string\n subnetId: string;\n nodeKeys: Map;\n metrics?: {\n num_canisters: bigint;\n canister_state_bytes: bigint;\n consumed_cycles_total: {\n current: bigint;\n deleted: bigint;\n };\n update_transactions_total: bigint;\n };\n};\n\n/**\n * Types of an entry on the canisterStatus map.\n * An entry of null indicates that the request failed, due to lack of permissions or the result being missing.\n */\nexport type Status =\n | string\n | ArrayBuffer\n | Date\n | ArrayBuffer[]\n | Principal[]\n | SubnetStatus\n | bigint\n | null;\n\n/**\n * Interface to define a custom path. Nested paths will be represented as individual buffers, and can be created from text using TextEncoder.\n * @param {string} key the key to use to access the returned value in the canisterStatus map\n * @param {ArrayBuffer[]} path the path to the desired value, represented as an array of buffers\n * @param {string} decodeStrategy the strategy to use to decode the returned value\n */\nexport class CustomPath implements CustomPath {\n public key: string;\n public path: ArrayBuffer[] | string;\n public decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n constructor(\n key: string,\n path: ArrayBuffer[] | string,\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw',\n ) {\n this.key = key;\n this.path = path;\n this.decodeStrategy = decodeStrategy;\n }\n}\n\n/**\n * @deprecated Use {@link CustomPath} instead\n * @param {string} key the key to use to access the returned value in the canisterStatus map\n * @param {string} path the path to the desired value, represented as a string\n * @param {string} decodeStrategy the strategy to use to decode the returned value\n */\nexport interface MetaData {\n kind: 'metadata';\n key: string;\n path: string | ArrayBuffer;\n decodeStrategy: 'cbor' | 'hex' | 'leb128' | 'utf-8' | 'raw';\n}\n\n/**\n * Pre-configured fields for canister status paths\n */\nexport type Path =\n | 'time'\n | 'controllers'\n | 'subnet'\n | 'module_hash'\n | 'candid'\n | MetaData\n | CustomPath;\n\nexport type StatusMap = Map;\n\nexport type CanisterStatusOptions = {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n blsVerify?: CreateCertificateOptions['blsVerify'];\n};\n\n/**\n * Request information in the request_status state tree for a given canister.\n * Can be used to request information about the canister's controllers, time, module hash, candid interface, and more.\n * @param {CanisterStatusOptions} options {@link CanisterStatusOptions}\n * @param {CanisterStatusOptions['canisterId']} options.canisterId {@link Principal}\n * @param {CanisterStatusOptions['agent']} options.agent {@link HttpAgent} optional authenticated agent to use to make the canister request. Useful for accessing private metadata under icp:private\n * @param {CanisterStatusOptions['paths']} options.paths {@link Path[]}\n * @returns {Status} object populated with data from the requested paths\n * @example\n * const status = await canisterStatus({\n * paths: ['controllers', 'candid'],\n * ...options\n * });\n *\n * const controllers = status.get('controllers');\n */\nexport const request = async (options: {\n canisterId: Principal;\n agent: HttpAgent;\n paths?: Path[] | Set;\n}): Promise => {\n const { agent, paths } = options;\n const canisterId = Principal.from(options.canisterId);\n\n const uniquePaths = [...new Set(paths)];\n\n // Map path options to their correct formats\n const encodedPaths = uniquePaths.map(path => {\n return encodePath(path, canisterId);\n });\n const status = new Map();\n\n const promises = uniquePaths.map((path, index) => {\n return (async () => {\n try {\n const response = await agent.readState(canisterId, {\n paths: [encodedPaths[index]],\n });\n const cert = await Certificate.create({\n certificate: response.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n });\n\n const lookup = (cert: Certificate, path: Path) => {\n if (path === 'subnet') {\n const data = fetchNodeKeys(response.certificate, canisterId, agent.rootKey);\n return {\n path: path,\n data,\n };\n } else {\n return {\n path: path,\n data: lookupResultToBuffer(cert.lookup(encodePath(path, canisterId))),\n };\n }\n };\n\n // must pass in the rootKey if we have no delegation\n const { path, data } = lookup(cert, uniquePaths[index]);\n if (!data) {\n // Typically, the cert lookup will throw\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n if (typeof path === 'string') {\n status.set(path, null);\n } else {\n status.set(path.key, null);\n }\n } else {\n switch (path) {\n case 'time': {\n status.set(path, decodeTime(data));\n break;\n }\n case 'controllers': {\n status.set(path, decodeControllers(data));\n break;\n }\n case 'module_hash': {\n status.set(path, decodeHex(data));\n break;\n }\n case 'subnet': {\n status.set(path, data);\n break;\n }\n case 'candid': {\n status.set(path, new TextDecoder().decode(data));\n break;\n }\n default: {\n // Check for CustomPath signature\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n switch (path.decodeStrategy) {\n case 'raw':\n status.set(path.key, data);\n break;\n case 'leb128': {\n status.set(path.key, decodeLeb128(data));\n break;\n }\n case 'cbor': {\n status.set(path.key, decodeCbor(data));\n break;\n }\n case 'hex': {\n status.set(path.key, decodeHex(data));\n break;\n }\n case 'utf-8': {\n status.set(path.key, decodeUtf8(data));\n }\n }\n }\n }\n }\n }\n } catch (error) {\n // Break on signature verification errors\n if ((error as AgentError)?.message?.includes('Invalid certificate')) {\n throw new AgentError((error as AgentError).message);\n }\n if (typeof path !== 'string' && 'key' in path && 'path' in path) {\n status.set(path.key, null);\n } else {\n status.set(path, null);\n }\n console.group();\n console.warn(`Expected to find result for path ${path}, but instead found nothing.`);\n console.warn(error);\n console.groupEnd();\n }\n })();\n });\n\n // Fetch all values separately, as each option can fail\n await Promise.all(promises);\n\n return status;\n};\n\nexport const fetchNodeKeys = (\n certificate: ArrayBuffer,\n canisterId: Principal,\n root_key?: ArrayBuffer | Uint8Array,\n): SubnetStatus => {\n if (!canisterId._isPrincipal) {\n throw new Error('Invalid canisterId');\n }\n const cert = Cbor.decode(new Uint8Array(certificate)) as Cert;\n const tree = cert.tree;\n let delegation = cert.delegation;\n let subnetId: Principal;\n if (delegation && delegation.subnet_id) {\n subnetId = Principal.fromUint8Array(new Uint8Array(delegation.subnet_id));\n }\n\n // On local replica, with System type subnet, there is no delegation\n else if (!delegation && typeof root_key !== 'undefined') {\n subnetId = Principal.selfAuthenticating(new Uint8Array(root_key));\n delegation = {\n subnet_id: subnetId.toUint8Array(),\n certificate: new ArrayBuffer(0),\n };\n }\n // otherwise use default NNS subnet id\n else {\n subnetId = Principal.selfAuthenticating(\n Principal.fromText(\n 'tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe',\n ).toUint8Array(),\n );\n delegation = {\n subnet_id: subnetId.toUint8Array(),\n certificate: new ArrayBuffer(0),\n };\n }\n\n const canisterInRange = check_canister_ranges({ canisterId, subnetId, tree });\n if (!canisterInRange) {\n throw new Error('Canister not in range');\n }\n\n const nodeTree = lookup_path(['subnet', delegation?.subnet_id as ArrayBuffer, 'node'], tree);\n const nodeForks = flatten_forks(nodeTree as HashTree) as HashTree[];\n nodeForks.length;\n const nodeKeys = new Map();\n nodeForks.forEach(fork => {\n Object.getPrototypeOf(new Uint8Array(fork[1] as ArrayBuffer));\n const node_id = Principal.from(new Uint8Array(fork[1] as ArrayBuffer)).toText();\n const derEncodedPublicKey = lookup_path(['public_key'], fork[2] as HashTree) as ArrayBuffer;\n if (derEncodedPublicKey.byteLength !== 44) {\n throw new Error('Invalid public key length');\n } else {\n nodeKeys.set(node_id, derEncodedPublicKey as DerEncodedPublicKey);\n }\n });\n\n return {\n subnetId: Principal.fromUint8Array(new Uint8Array(delegation.subnet_id)).toText(),\n nodeKeys,\n };\n};\n\nexport const encodePath = (path: Path, canisterId: Principal): ArrayBuffer[] => {\n const encoder = new TextEncoder();\n\n const encode = (arg: string): ArrayBuffer => {\n return new DataView(encoder.encode(arg).buffer).buffer;\n };\n const canisterBuffer = new DataView(canisterId.toUint8Array().buffer).buffer;\n switch (path) {\n case 'time':\n return [encode('time')];\n case 'controllers':\n return [encode('canister'), canisterBuffer, encode('controllers')];\n case 'module_hash':\n return [encode('canister'), canisterBuffer, encode('module_hash')];\n case 'subnet':\n return [encode('subnet')];\n case 'candid':\n return [encode('canister'), canisterBuffer, encode('metadata'), encode('candid:service')];\n default: {\n // Check for CustomPath signature\n if ('key' in path && 'path' in path) {\n // For simplified metadata queries\n if (typeof path['path'] === 'string' || path['path'] instanceof ArrayBuffer) {\n const metaPath = path.path;\n const encoded = typeof metaPath === 'string' ? encode(metaPath) : metaPath;\n\n return [encode('canister'), canisterBuffer, encode('metadata'), encoded];\n\n // For non-metadata, return the provided custompath\n } else {\n return path['path'];\n }\n }\n }\n }\n throw new Error(\n `An unexpeected error was encountered while encoding your path for canister status. Please ensure that your path, ${path} was formatted correctly.`,\n );\n};\n\nconst decodeHex = (buf: ArrayBuffer): string => {\n return toHex(buf);\n};\n\nconst decodeCbor = (buf: ArrayBuffer): ArrayBuffer[] => {\n return Cbor.decode(buf);\n};\n\nconst decodeUtf8 = (buf: ArrayBuffer): string => {\n return new TextDecoder().decode(buf);\n};\n\n// Controllers are CBOR-encoded buffers\nconst decodeControllers = (buf: ArrayBuffer): Principal[] => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const controllersRaw = decodeCbor(buf);\n return controllersRaw.map((buf: ArrayBuffer) => {\n return Principal.fromUint8Array(new Uint8Array(buf));\n });\n};\n","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\n\nexport const JSON_KEY_PRINCIPAL = '__principal__';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\n\nconst MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR = 'aaaaa-aa';\n\nconst fromHexString = (hexString: string) =>\n new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n\nconst toHexString = (bytes: Uint8Array) =>\n bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n\nexport type JsonnablePrincipal = {\n [JSON_KEY_PRINCIPAL]: string;\n};\n\nexport class Principal {\n public static anonymous(): Principal {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n\n /**\n * Utility method, returning the principal representing the management canister, decoded from the hex string `'aaaaa-aa'`\n * @returns {Principal} principal of the management canister\n */\n public static managementCanister(): Principal {\n return this.fromHex(MANAGEMENT_CANISTER_PRINCIPAL_HEX_STR);\n }\n\n public static selfAuthenticating(publicKey: Uint8Array): Principal {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n\n public static from(other: unknown): Principal {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n } else if (Object.getPrototypeOf(other) === Uint8Array.prototype) {\n return new Principal(other as Uint8Array);\n } else if (\n typeof other === 'object' &&\n other !== null &&\n (other as Principal)._isPrincipal === true\n ) {\n return new Principal((other as Principal)._arr);\n }\n\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n\n public static fromHex(hex: string): Principal {\n return new this(fromHexString(hex));\n }\n\n public static fromText(text: string): Principal {\n let maybePrincipal = text;\n // If formatted as JSON string, parse it first\n if (text.includes(JSON_KEY_PRINCIPAL)) {\n const obj = JSON.parse(text);\n if (JSON_KEY_PRINCIPAL in obj) {\n maybePrincipal = obj[JSON_KEY_PRINCIPAL];\n }\n }\n\n const canisterIdNoDash = maybePrincipal.toLowerCase().replace(/-/g, '');\n\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n\n const principal = new this(arr);\n if (principal.toText() !== maybePrincipal) {\n throw new Error(\n `Principal \"${principal.toText()}\" does not have a valid checksum (original value \"${maybePrincipal}\" may not be a valid Principal ID).`,\n );\n }\n\n return principal;\n }\n\n public static fromUint8Array(arr: Uint8Array): Principal {\n return new this(arr);\n }\n\n public readonly _isPrincipal = true;\n\n protected constructor(private _arr: Uint8Array) {}\n\n public isAnonymous(): boolean {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n\n public toUint8Array(): Uint8Array {\n return this._arr;\n }\n\n public toHex(): string {\n return toHexString(this._arr).toUpperCase();\n }\n\n public toText(): string {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n\n public toString(): string {\n return this.toText();\n }\n\n /**\n * Serializes to JSON\n * @returns {JsonnablePrincipal} a JSON object with a single key, {@link JSON_KEY_PRINCIPAL}, whose value is the principal as a string\n */\n public toJSON(): JsonnablePrincipal {\n return { [JSON_KEY_PRINCIPAL]: this.toText() };\n }\n\n /**\n * Utility method taking a Principal to compare against. Used for determining canister ranges in certificate verification\n * @param {Principal} other - a {@link Principal} to compare\n * @returns {'lt' | 'eq' | 'gt'} `'lt' | 'eq' | 'gt'` a string, representing less than, equal to, or greater than\n */\n public compareTo(other: Principal): 'lt' | 'eq' | 'gt' {\n for (let i = 0; i < Math.min(this._arr.length, other._arr.length); i++) {\n if (this._arr[i] < other._arr[i]) return 'lt';\n else if (this._arr[i] > other._arr[i]) return 'gt';\n }\n // Here, at least one principal is a prefix of the other principal (they could be the same)\n if (this._arr.length < other._arr.length) return 'lt';\n if (this._arr.length > other._arr.length) return 'gt';\n return 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is less than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public ltEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'lt' || cmp == 'eq';\n }\n\n /**\n * Utility method checking whether a provided Principal is greater than or equal to the current one using the {@link Principal.compareTo} method\n * @param other a {@link Principal} to compare\n * @returns {boolean} boolean\n */\n public gtEq(other: Principal): boolean {\n const cmp = this.compareTo(other);\n return cmp == 'gt' || cmp == 'eq';\n }\n}\n","const alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n","// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n","import { sha224 as jsSha224 } from '@noble/hashes/sha256';\n\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data: ArrayBuffer): Uint8Array {\n return jsSha224.create().update(new Uint8Array(data)).digest();\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\n// copied from utils\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n// Other libraries would silently corrupt the data instead of throwing an error,\n// when they don't support it.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!isBytes(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a)) throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, AgentError.prototype);\n }\n}\n","import * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { concat, fromHex, toHex } from './utils/buffer';\nimport { Principal } from '@dfinity/principal';\nimport * as bls from './utils/bls';\nimport { decodeTime } from './utils/leb';\n\n/**\n * A certificate may fail verification with respect to the provided public key\n */\nexport class CertificateVerificationError extends AgentError {\n constructor(reason: string) {\n super(`Invalid certificate: ${reason}`);\n }\n}\n\nexport interface Cert {\n tree: HashTree;\n signature: ArrayBuffer;\n delegation?: Delegation;\n}\n\nconst NodeId = {\n Empty: 0,\n Fork: 1,\n Labeled: 2,\n Leaf: 3,\n Pruned: 4,\n};\n\nexport type NodeIdType = typeof NodeId[keyof typeof NodeId];\n\nexport { NodeId };\n\nexport type HashTree =\n | [typeof NodeId.Empty]\n | [typeof NodeId.Fork, HashTree, HashTree]\n | [typeof NodeId.Labeled, ArrayBuffer, HashTree]\n | [typeof NodeId.Leaf, ArrayBuffer]\n | [typeof NodeId.Pruned, ArrayBuffer];\n\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree: HashTree): string {\n const indent = (s: string) =>\n s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label: ArrayBuffer): string {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n } catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n\n switch (tree[0]) {\n case NodeId.Empty:\n return '()';\n case NodeId.Fork: {\n if (tree[1] instanceof Array && tree[2] instanceof ArrayBuffer) {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n } else {\n throw new Error('Invalid tree structure for fork');\n }\n }\n case NodeId.Labeled: {\n if (tree[1] instanceof ArrayBuffer && tree[2] instanceof ArrayBuffer) {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n } else {\n throw new Error('Invalid tree structure for labeled');\n }\n }\n case NodeId.Leaf: {\n if (!tree[1]) {\n throw new Error('Invalid tree structure for leaf');\n } else if (Array.isArray(tree[1])) {\n return JSON.stringify(tree[1]);\n }\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case NodeId.Pruned: {\n if (!tree[1]) {\n throw new Error('Invalid tree structure for pruned');\n } else if (Array.isArray(tree[1])) {\n return JSON.stringify(tree[1]);\n }\n\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\n\ninterface Delegation extends Record {\n subnet_id: ArrayBuffer;\n certificate: ArrayBuffer;\n}\n\nfunction isBufferEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] !== b8[i]) {\n return false;\n }\n }\n return true;\n}\n\ntype VerifyFunc = (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => Promise;\n\nexport interface CreateCertificateOptions {\n /**\n * The bytes encoding the certificate to be verified\n */\n certificate: ArrayBuffer;\n /**\n * The root key against which to verify the certificate\n * (normally, the root key of the IC main network)\n */\n rootKey: ArrayBuffer;\n /**\n * The effective canister ID of the request when verifying a response, or\n * the signing canister ID when verifying a certified variable.\n */\n canisterId: Principal;\n /**\n * BLS Verification strategy. Default strategy uses wasm for performance, but that may not be available in all contexts.\n */\n blsVerify?: VerifyFunc;\n\n /**\n * The maximum age of the certificate in minutes. Default is 5 minutes.\n * @default 5\n * This is used to verify the time the certificate was signed, particularly for validating Delegation certificates, which can live for longer than the default window of +/- 5 minutes. If the certificate is\n * older than the specified age, it will fail verification.\n */\n maxAgeInMinutes?: number;\n}\n\nexport class Certificate {\n private readonly cert: Cert;\n\n /**\n * Create a new instance of a certificate, automatically verifying it. Throws a\n * CertificateVerificationError if the certificate cannot be verified.\n * @constructs Certificate\n * @param {CreateCertificateOptions} options {@link CreateCertificateOptions}\n * @param {ArrayBuffer} options.certificate The bytes of the certificate\n * @param {ArrayBuffer} options.rootKey The root key to verify against\n * @param {Principal} options.canisterId The effective or signing canister ID\n * @param {number} options.maxAgeInMinutes The maximum age of the certificate in minutes. Default is 5 minutes.\n * @throws {CertificateVerificationError}\n */\n public static async create(options: CreateCertificateOptions): Promise {\n const cert = Certificate.createUnverified(options);\n\n await cert.verify();\n return cert;\n }\n\n private static createUnverified(options: CreateCertificateOptions): Certificate {\n let blsVerify = options.blsVerify;\n if (!blsVerify) {\n blsVerify = bls.blsVerify;\n }\n return new Certificate(\n options.certificate,\n options.rootKey,\n options.canisterId,\n blsVerify,\n options.maxAgeInMinutes,\n );\n }\n\n private constructor(\n certificate: ArrayBuffer,\n private _rootKey: ArrayBuffer,\n private _canisterId: Principal,\n private _blsVerify: VerifyFunc,\n // Default to 5 minutes\n private _maxAgeInMinutes: number = 5,\n ) {\n this.cert = cbor.decode(new Uint8Array(certificate));\n }\n\n public lookup(path: Array): ArrayBuffer | undefined {\n // constrain the type of the result, so that empty HashTree is undefined\n return lookupResultToBuffer(lookup_path(path, this.cert.tree));\n }\n\n public lookup_label(label: ArrayBuffer): ArrayBuffer | HashTree | undefined {\n return this.lookup([label]);\n }\n\n private async verify(): Promise {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegationAndGetKey(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n let sigVer = false;\n\n const lookupTime = this.lookup(['time']);\n if (!lookupTime) {\n // Should never happen - time is always present in IC certificates\n throw new CertificateVerificationError('Certificate does not contain a time');\n }\n\n const FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n const MAX_AGE_IN_MSEC = this._maxAgeInMinutes * 60 * 1000;\n const now = Date.now();\n const earliestCertificateTime = now - MAX_AGE_IN_MSEC;\n const fiveMinutesFromNow = now + FIVE_MINUTES_IN_MSEC;\n\n const certTime = decodeTime(lookupTime);\n\n if (certTime.getTime() < earliestCertificateTime) {\n throw new CertificateVerificationError(\n `Certificate is signed more than ${this._maxAgeInMinutes} minutes in the past. Certificate time: ` +\n certTime.toISOString() +\n ' Current time: ' +\n new Date(now).toISOString(),\n );\n } else if (certTime.getTime() > fiveMinutesFromNow) {\n throw new CertificateVerificationError(\n 'Certificate is signed more than 5 minutes in the future. Certificate time: ' +\n certTime.toISOString() +\n ' Current time: ' +\n new Date(now).toISOString(),\n );\n }\n\n try {\n sigVer = await this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n } catch (err) {\n sigVer = false;\n }\n if (!sigVer) {\n throw new CertificateVerificationError('Signature verification failed');\n }\n }\n\n private async _checkDelegationAndGetKey(d?: Delegation): Promise {\n if (!d) {\n return this._rootKey;\n }\n\n const cert: Certificate = await Certificate.createUnverified({\n certificate: d.certificate,\n rootKey: this._rootKey,\n canisterId: this._canisterId,\n blsVerify: this._blsVerify,\n // Do not check max age for delegation certificates\n maxAgeInMinutes: Infinity,\n });\n\n if (cert.cert.delegation) {\n throw new CertificateVerificationError('Delegation certificates cannot be nested');\n }\n\n await cert.verify();\n\n const canisterInRange = check_canister_ranges({\n canisterId: this._canisterId,\n subnetId: Principal.fromUint8Array(new Uint8Array(d.subnet_id)),\n tree: cert.cert.tree,\n });\n if (!canisterInRange) {\n throw new CertificateVerificationError(\n `Canister ${this._canisterId} not in range of delegations for subnet 0x${toHex(\n d.subnet_id,\n )}`,\n );\n }\n const publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);\n if (!publicKeyLookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return publicKeyLookup;\n }\n}\n\nconst DER_PREFIX = fromHex(\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100',\n);\nconst KEY_LENGTH = 96;\n\nfunction extractDER(buf: ArrayBuffer): ArrayBuffer {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(\n `BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`,\n );\n }\n\n return buf.slice(DER_PREFIX.byteLength);\n}\n\n/**\n * utility function to constrain the type of a path\n * @param {ArrayBuffer | HashTree | undefined} result - the result of a lookup\n * @returns ArrayBuffer or Undefined\n */\nexport function lookupResultToBuffer(\n result: ArrayBuffer | HashTree | undefined,\n): ArrayBuffer | undefined {\n if (result instanceof ArrayBuffer) {\n return result;\n } else if (result instanceof Uint8Array) {\n return result.buffer;\n }\n return undefined;\n}\n\n/**\n * @param t\n */\nexport async function reconstruct(t: HashTree): Promise {\n switch (t[0]) {\n case NodeId.Empty:\n return hash(domain_sep('ic-hashtree-empty'));\n case NodeId.Pruned:\n return t[1] as ArrayBuffer;\n case NodeId.Leaf:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1] as ArrayBuffer));\n case NodeId.Labeled:\n return hash(\n concat(\n domain_sep('ic-hashtree-labeled'),\n t[1] as ArrayBuffer,\n await reconstruct(t[2] as HashTree),\n ),\n );\n case NodeId.Fork:\n return hash(\n concat(\n domain_sep('ic-hashtree-fork'),\n await reconstruct(t[1] as HashTree),\n await reconstruct(t[2] as HashTree),\n ),\n );\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction domain_sep(s: string): ArrayBuffer {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\n\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(\n path: Array,\n tree: HashTree,\n): ArrayBuffer | HashTree | undefined {\n if (path.length === 0) {\n switch (tree[0]) {\n case NodeId.Leaf: {\n // should not be undefined\n if (!tree[1]) throw new Error('Invalid tree structure for leaf');\n if (tree[1] instanceof ArrayBuffer) {\n return tree[1];\n } else if (tree[1] instanceof Uint8Array) {\n return tree[1].buffer;\n } else return tree[1];\n }\n case NodeId.Fork: {\n return tree;\n }\n default: {\n return tree;\n }\n }\n }\n\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const t = find_label(label, flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\n\n/**\n * If the tree is a fork, flatten it into an array of trees\n * @param t - the tree to flatten\n * @returns HashTree[] - the flattened tree\n */\nexport function flatten_forks(t: HashTree): HashTree[] {\n switch (t[0]) {\n case NodeId.Empty:\n return [];\n case NodeId.Fork:\n return flatten_forks(t[1] as HashTree).concat(flatten_forks(t[2] as HashTree));\n default:\n return [t];\n }\n}\n\nfunction find_label(l: ArrayBuffer, trees: HashTree[]): HashTree | undefined {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === NodeId.Labeled) {\n const p = t[1] as ArrayBuffer;\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n\n/**\n * Check if a canister falls within a range of canisters\n * @param canisterId Principal\n * @param ranges [Principal, Principal][]\n * @returns\n */\nexport function check_canister_ranges(params: {\n canisterId: Principal;\n subnetId: Principal;\n tree: HashTree;\n}): boolean {\n const { canisterId, subnetId, tree } = params;\n const rangeLookup = lookup_path(['subnet', subnetId.toUint8Array(), 'canister_ranges'], tree);\n\n if (!rangeLookup || !(rangeLookup instanceof ArrayBuffer)) {\n throw new Error(`Could not find canister ranges for subnet ${subnetId}`);\n }\n\n const ranges_arr: Array<[Uint8Array, Uint8Array]> = cbor.decode(rangeLookup);\n const ranges: Array<[Principal, Principal]> = ranges_arr.map(v => [\n Principal.fromUint8Array(v[0]),\n Principal.fromUint8Array(v[1]),\n ]);\n\n const canisterInRange = ranges.some(r => r[0].ltEq(canisterId) && r[1].gtEq(canisterId));\n\n return canisterInRange;\n}\n","// This file is based on:\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { CborEncoder, SelfDescribeCborSerializer } from 'simple-cbor';\nimport { Principal } from '@dfinity/principal';\nimport { concat, fromHex } from './utils/buffer';\n\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\n\nclass PrincipalEncoder implements CborEncoder {\n public get name() {\n return 'Principal';\n }\n\n public get priority() {\n return 0;\n }\n\n public match(value: any): boolean {\n return value && value._isPrincipal === true;\n }\n\n public encode(v: Principal): cbor.CborValue {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\n\nclass BufferEncoder implements CborEncoder {\n public get name() {\n return 'Buffer';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n\n public encode(v: ArrayBuffer): cbor.CborValue {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\n\nclass BigIntEncoder implements CborEncoder {\n public get name() {\n return 'BigInt';\n }\n\n public get priority() {\n return 1;\n }\n\n public match(value: any): boolean {\n return typeof value === `bigint`;\n }\n\n public encode(v: bigint): cbor.CborValue {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n } else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\n\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\n\nexport enum CborTag {\n Uint64LittleEndian = 71,\n Semantic = 55799,\n}\n\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value: any): ArrayBuffer {\n return serializer.serialize(value);\n}\n\nfunction decodePositiveBigInt(buf: Uint8Array): bigint {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n\n return res;\n}\n\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n public createByteString(raw: ArrayBuffer[]): ArrayBuffer {\n return concat(...raw);\n }\n\n public createByteStringFromHeap(start: number, end: number): ArrayBuffer {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n\n return new Uint8Array((this as any)._heap.slice(start, end));\n }\n}\n\nexport function decode(input: ArrayBuffer): T {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value: T): T => value,\n },\n });\n\n return decoder.decodeFirst(buffer);\n}\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n",null,"/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer: ArrayBuffer): string {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nconst hexRe = new RegExp(/^[0-9a-fA-F]+$/);\n\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex: string): ArrayBuffer {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [] as string[])\n .map(x => Number.parseInt(x, 16));\n\n return new Uint8Array(buffer).buffer;\n}\n\n/**\n *\n * @param b1 array buffer 1\n * @param b2 array buffer 2\n * @returns number - negative if b1 < b2, positive if b1 > b2, 0 if b1 === b2\n */\nexport function compare(b1: ArrayBuffer, b2: ArrayBuffer): number {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n\n/**\n * Checks two array buffers for equality.\n * @param b1 array buffer 1\n * @param b2 array buffer 2\n * @returns boolean\n */\nexport function bufEquals(b1: ArrayBuffer, b2: ArrayBuffer): boolean {\n return compare(b1, b2) === 0;\n}\n\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr: Uint8Array): ArrayBuffer {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n\n/**\n * Returns a true ArrayBuffer from an ArrayBufferLike object.\n * @param bufLike a buffer-like object\n * @returns ArrayBuffer\n */\nexport function bufFromBufLike(\n bufLike: ArrayBuffer | Uint8Array | DataView | ArrayBufferView | ArrayBufferLike,\n): ArrayBuffer {\n if (bufLike instanceof Uint8Array) {\n return uint8ToBuf(bufLike);\n }\n if (bufLike instanceof ArrayBuffer) {\n return bufLike;\n }\n if ('buffer' in bufLike) {\n return bufLike.buffer;\n }\n return new Uint8Array(bufLike);\n}\n","import { lebEncode } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport borc from 'borc';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { compare, concat, uint8ToBuf } from './utils/buffer';\n\nexport type RequestId = ArrayBuffer & { __requestId__: void };\n\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data: ArrayBuffer): ArrayBuffer {\n return uint8ToBuf(sha256.create().update(new Uint8Array(data)).digest());\n}\n\ninterface ToHashable {\n toHash(): unknown;\n}\n\n/**\n *\n * @param value unknown value\n * @returns ArrayBuffer\n */\nexport function hashValue(value: unknown): ArrayBuffer {\n if (value instanceof borc.Tagged) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hashValue((value as any).value);\n } else if (typeof value === 'string') {\n return hashString(value);\n } else if (typeof value === 'number') {\n return hash(lebEncode(value));\n } else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value as ArrayBuffer);\n } else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n } else if (value && typeof value === 'object' && (value as Principal)._isPrincipal) {\n return hash((value as Principal).toUint8Array());\n } else if (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ToHashable).toHash === 'function'\n ) {\n return hashValue((value as ToHashable).toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n } else if (typeof value === 'object') {\n return hashOfMap(value as Record);\n } else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\n\nconst hashString = (value: string): ArrayBuffer => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request: Record): RequestId {\n return hashOfMap(request) as RequestId;\n}\n\n/**\n * Hash a map into an ArrayBuffer using the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param map - Any non-nested object\n * @returns ArrayBuffer\n */\nexport function hashOfMap(map: Record): ArrayBuffer {\n const hashed: Array<[ArrayBuffer, ArrayBuffer]> = Object.entries(map)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]: [string, unknown]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n\n return [hashedKey, hashedValue] as [ArrayBuffer, ArrayBuffer];\n });\n\n const traversed: Array<[ArrayBuffer, ArrayBuffer]> = hashed;\n\n const sorted: Array<[ArrayBuffer, ArrayBuffer]> = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n\n const concatenated: ArrayBuffer = concat(...sorted.map(x => concat(...x)));\n const result = hash(concatenated);\n return result;\n}\n","export * from './candid-ui';\nexport * from './candid-core';\nexport * as IDL from './idl';\nexport * from './utils/hash';\nexport * from './utils/leb128';\nexport * from './utils/buffer';\nexport * from './types';\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { JsonValue } from './types';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport {\n lebDecode,\n lebEncode,\n readIntLE,\n readUIntLE,\n safeRead,\n safeReadUint8,\n slebDecode,\n slebEncode,\n writeIntLE,\n writeUIntLE,\n} from './utils/leb128';\nimport { iexp2 } from './utils/bigint-math';\n\n/**\n * This module provides a combinator library to create serializers/deserializers\n * between JavaScript values and IDL used by canisters on the Internet Computer,\n * as documented at https://github.com/dfinity/candid/blob/119703ba342d2fef6ab4972d2541b9fe36ae8e36/spec/Candid.md\n */\n\nconst enum IDLTypeIds {\n Null = -1,\n Bool = -2,\n Nat = -3,\n Int = -4,\n Float32 = -13,\n Float64 = -14,\n Text = -15,\n Reserved = -16,\n Empty = -17,\n Opt = -18,\n Vector = -19,\n Record = -20,\n Variant = -21,\n Func = -22,\n Service = -23,\n Principal = -24,\n}\n\nconst magicNumber = 'DIDL';\nconst toReadableString_max = 400; // will not display arguments after 400chars. Makes sure 2mb blobs don't get inside the error\n\nfunction zipWith(xs: TX[], ys: TY[], f: (a: TX, b: TY) => TR): TR[] {\n return xs.map((x, i) => f(x, ys[i]));\n}\n\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n // List of types. Needs to be an array as the index needs to be stable.\n private _typs: ArrayBuffer[] = [];\n private _idx = new Map();\n\n public has(obj: ConstructType) {\n return this._idx.has(obj.name);\n }\n\n public add(type: ConstructType, buf: ArrayBuffer) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n\n public merge(obj: ConstructType, knot: string) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n\n public encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n\n public indexOf(typeName: string) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\n\nexport abstract class Visitor {\n public visitType(t: Type, data: D): R {\n throw new Error('Not implemented');\n }\n public visitPrimitive(t: PrimitiveType, data: D): R {\n return this.visitType(t, data);\n }\n public visitEmpty(t: EmptyClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitBool(t: BoolClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNull(t: NullClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitReserved(t: ReservedClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitText(t: TextClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitNumber(t: PrimitiveType, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitInt(t: IntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitNat(t: NatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFloat(t: FloatClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n public visitFixedInt(t: FixedIntClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitFixedNat(t: FixedNatClass, data: D): R {\n return this.visitNumber(t, data);\n }\n public visitPrincipal(t: PrincipalClass, data: D): R {\n return this.visitPrimitive(t, data);\n }\n\n public visitConstruct(t: ConstructType, data: D): R {\n return this.visitType(t, data);\n }\n public visitVec(t: VecClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitOpt(t: OptClass, ty: Type, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRecord(t: RecordClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitTuple(t: TupleClass, components: Type[], data: D): R {\n const fields: Array<[string, Type]> = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n public visitVariant(t: VariantClass, fields: Array<[string, Type]>, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitRec(t: RecClass, ty: ConstructType, data: D): R {\n return this.visitConstruct(ty, data);\n }\n public visitFunc(t: FuncClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n public visitService(t: ServiceClass, data: D): R {\n return this.visitConstruct(t, data);\n }\n}\n\n/**\n * Represents an IDL type.\n */\nexport abstract class Type {\n public abstract readonly name: string;\n public abstract accept(v: Visitor, d: D): R;\n\n /* Display type name */\n public display(): string {\n return this.name;\n }\n\n public valueToString(x: T): string {\n return toReadableString(x);\n }\n\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n public buildTypeTable(typeTable: TypeTable): void {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n\n /**\n * Assert that JavaScript's `x` is the proper type represented by this\n * Type.\n */\n public abstract covariant(x: any): x is T;\n\n /**\n * Encode the value. This needs to be public because it is used by\n * encodeValue() from different types.\n * @internal\n */\n public abstract encodeValue(x: T): ArrayBuffer;\n\n /**\n * Implement `I` in the IDL spec.\n * Encode this type for the type table.\n */\n public abstract encodeType(typeTable: TypeTable): ArrayBuffer;\n\n public abstract checkType(t: Type): Type;\n public abstract decodeValue(x: Pipe, t: Type): T;\n\n protected abstract _buildTypeTableImpl(typeTable: TypeTable): void;\n}\n\nexport abstract class PrimitiveType extends Type {\n public checkType(t: Type): Type {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public _buildTypeTableImpl(typeTable: TypeTable): void {\n // No type table encoding for Primitive types.\n return;\n }\n}\n\nexport abstract class ConstructType extends Type {\n public checkType(t: Type): ConstructType {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n public encodeType(typeTable: TypeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitEmpty(this, d);\n }\n\n public covariant(x: any): x is never {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Empty cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Empty cannot appear as a value');\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Empty);\n }\n\n public decodeValue(): never {\n throw new Error('Empty cannot appear as an output');\n }\n\n get name() {\n return 'empty';\n }\n}\n\n/**\n * Represents an IDL Unknown, a placeholder type for deserialization only.\n * When decoding a value as Unknown, all fields will be retained but the names are only available in\n * hashed form.\n * A deserialized unknown will offer it's actual type by calling the `type()` function.\n * Unknown cannot be serialized and attempting to do so will throw an error.\n */\nexport class UnknownClass extends Type {\n public checkType(t: Type): Type {\n throw new Error('Method not implemented for unknown.');\n }\n\n public accept(v: Visitor, d: D): R {\n throw v.visitType(this, d);\n }\n\n public covariant(x: any): x is any {\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(): never {\n throw new Error('Unknown cannot appear as a function argument');\n }\n\n public valueToString(): never {\n throw new Error('Unknown cannot appear as a value');\n }\n\n public encodeType(): never {\n throw new Error('Unknown cannot be serialized');\n }\n\n public decodeValue(b: Pipe, t: Type): any {\n let decodedValue = t.decodeValue(b, t);\n\n if (Object(decodedValue) !== decodedValue) {\n // decodedValue is primitive. Box it, otherwise we cannot add the type() function.\n // The type() function is important for primitives because otherwise we cannot tell apart the\n // different number types.\n decodedValue = Object(decodedValue);\n }\n\n let typeFunc;\n if (t instanceof RecClass) {\n typeFunc = () => t.getType();\n } else {\n typeFunc = () => t;\n }\n // Do not use 'decodedValue.type = typeFunc' because this would lead to an enumerable property\n // 'type' which means it would be serialized if the value would be candid encoded again.\n // This in turn leads to problems if the decoded value is a variant because these values are\n // only allowed to have a single property.\n Object.defineProperty(decodedValue, 'type', {\n value: typeFunc,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n return decodedValue;\n }\n\n protected _buildTypeTableImpl(): void {\n throw new Error('Unknown cannot be serialized');\n }\n\n get name() {\n return 'Unknown';\n }\n}\n\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitBool(this, d);\n }\n\n public covariant(x: any): x is boolean {\n if (typeof x === 'boolean') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: boolean): ArrayBuffer {\n return new Uint8Array([x ? 1 : 0]);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Bool);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n\n get name() {\n return 'bool';\n }\n}\n\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNull(this, d);\n }\n\n public covariant(x: any): x is null {\n if (x === null) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Null);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return null;\n }\n\n get name() {\n return 'null';\n }\n}\n\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitReserved(this, d);\n }\n\n public covariant(x: any): x is any {\n return true;\n }\n\n public encodeValue() {\n return new ArrayBuffer(0);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Reserved);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n\n get name() {\n return 'reserved';\n }\n}\n\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitText(this, d);\n }\n\n public covariant(x: any): x is string {\n if (typeof x === 'string') return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: string) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Text);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n\n get name() {\n return 'text';\n }\n\n public valueToString(x: string) {\n return '\"' + x + '\"';\n }\n}\n\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if (typeof x === 'bigint' || Number.isInteger(x)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return slebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Int);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return slebDecode(b);\n }\n\n get name() {\n return 'int';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n if ((typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0)) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return lebEncode(x);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Nat);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n return lebDecode(b);\n }\n\n get name() {\n return 'nat';\n }\n\n public valueToString(x: bigint) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(private _bits: number) {\n super();\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n public accept(v: Visitor, d: D): R {\n return v.visitFloat(this, d);\n }\n\n public covariant(x: any): x is number {\n if (typeof x === 'number' || x instanceof Number) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: number) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n } else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n\n public encodeType() {\n const opcode = this._bits === 32 ? IDLTypeIds.Float32 : IDLTypeIds.Float64;\n return slebEncode(opcode);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n } else {\n return view.getFloat64(0, true);\n }\n }\n\n get name() {\n return 'float' + this._bits;\n }\n\n public valueToString(x: number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedInt(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const min = iexp2(this._bits - 1) * BigInt(-1);\n const max = iexp2(this._bits - 1) - BigInt(1);\n let ok = false;\n if (typeof x === 'bigint') {\n ok = x >= min && x <= max;\n } else if (Number.isInteger(x)) {\n const v = BigInt(x);\n ok = v >= min && v <= max;\n } else {\n ok = false;\n }\n\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `int${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(public readonly _bits: number) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFixedNat(this, d);\n }\n\n public covariant(x: any): x is bigint {\n const max = iexp2(this._bits);\n let ok = false;\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n ok = x < max;\n } else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n ok = v < max;\n } else {\n ok = false;\n }\n if (ok) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: bigint | number) {\n return writeUIntLE(x, this._bits / 8);\n }\n\n public encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-5 - offset);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n this.checkType(t);\n const num = readUIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n } else {\n return num;\n }\n }\n\n get name() {\n return `nat${this._bits}`;\n }\n\n public valueToString(x: bigint | number) {\n return x.toString();\n }\n}\n\n/**\n * Represents an IDL Array\n *\n * Arrays of fixed-sized nat/int type (e.g. nat8), are encoded from and decoded to TypedArrays (e.g. Uint8Array).\n * Arrays of float or other non-primitive types are encoded/decoded as untyped array in Javascript.\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n // If true, this vector is really a blob and we can just use memcpy.\n //\n // NOTE:\n // With support of encoding/dencoding of TypedArrays, this optimization is\n // only used when plain array of bytes are passed as encoding input in order\n // to be backward compatible.\n private _blobOptimization = false;\n\n constructor(protected _type: Type) {\n super();\n if (_type instanceof FixedNatClass && _type._bits === 8) {\n this._blobOptimization = true;\n }\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVec(this, this._type, d);\n }\n\n public covariant(x: any): x is T[] {\n // Special case for ArrayBuffer\n const bits =\n this._type instanceof FixedNatClass\n ? this._type._bits\n : this._type instanceof FixedIntClass\n ? this._type._bits\n : 0;\n\n if (\n (ArrayBuffer.isView(x) && bits == (x as any).BYTES_PER_ELEMENT * 8) ||\n (Array.isArray(x) &&\n x.every((v, idx) => {\n try {\n return this._type.covariant(v);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${idx} -> ${e.message}`);\n }\n }))\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T[]) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x as unknown as number[]));\n }\n if (ArrayBuffer.isView(x)) {\n return concat(len, new Uint8Array(x.buffer));\n }\n const buf = new Pipe(new ArrayBuffer(len.byteLength + x.length), 0);\n buf.write(len);\n for (const d of x) {\n const encoded = this._type.encodeValue(d);\n buf.write(new Uint8Array(encoded));\n }\n return buf.buffer;\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Vector);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): T[] {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n\n if (this._type instanceof FixedNatClass) {\n if (this._type._bits == 8) {\n return new Uint8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Uint16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Uint32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigUint64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n if (this._type instanceof FixedIntClass) {\n if (this._type._bits == 8) {\n return new Int8Array(b.read(len)) as unknown as T[];\n }\n if (this._type._bits == 16) {\n return new Int16Array(b.read(len * 2)) as unknown as T[];\n }\n if (this._type._bits == 32) {\n return new Int32Array(b.read(len * 4)) as unknown as T[];\n }\n if (this._type._bits == 64) {\n return new BigInt64Array(b.read(len * 8)) as unknown as T[];\n }\n }\n\n const rets: T[] = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n\n get name() {\n return `vec ${this._type.name}`;\n }\n\n public display() {\n return `vec ${this._type.display()}`;\n }\n\n public valueToString(x: T[]) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType<[T] | []> {\n constructor(protected _type: Type) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitOpt(this, this._type, d);\n }\n\n public covariant(x: any): x is [T] | [] {\n try {\n if (Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0]))))\n return true;\n } catch (e: any) {\n throw new Error(\n `Invalid ${this.display()} argument: ${toReadableString(x)} \\n\\n-> ${e.message}`,\n );\n }\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: [T] | []) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n } else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._type.buildTypeTable(typeTable);\n\n const opCode = slebEncode(IDLTypeIds.Opt);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n\n public decodeValue(b: Pipe, t: Type): [T] | [] {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n\n get name() {\n return `opt ${this._type.name}`;\n }\n\n public display() {\n return `opt ${this._type.display()}`;\n }\n\n public valueToString(x: [T] | []) {\n if (x.length === 0) {\n return 'null';\n } else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n\n/**\n * Represents an IDL Record\n * @param {object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType> {\n protected readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitRecord(this, this._fields, d);\n }\n\n public tryAsTuple(): Type[] | null {\n const res: Type[] = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n try {\n return t.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nfield ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Record);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(T)),\n );\n\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x: Record = {};\n\n let expectedRecordIdx = 0;\n let actualRecordIdx = 0;\n while (actualRecordIdx < record._fields.length) {\n const [hash, type] = record._fields[actualRecordIdx];\n\n if (expectedRecordIdx >= this._fields.length) {\n // skip unexpected left over fields present on the wire\n type.decodeValue(b, type);\n actualRecordIdx++;\n continue;\n }\n\n const [expectKey, expectType] = this._fields[expectedRecordIdx];\n const expectedId = idlLabelToId(this._fields[expectedRecordIdx][0]);\n const actualId = idlLabelToId(hash);\n if (expectedId === actualId) {\n // the current field on the wire matches the expected field\n x[expectKey] = expectType.decodeValue(b, type);\n expectedRecordIdx++;\n actualRecordIdx++;\n } else if (actualId > expectedId) {\n // The expected field does not exist on the wire\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n x[expectKey] = [];\n expectedRecordIdx++;\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n } else {\n // The field on the wire does not exist in the output type, so we can skip it\n type.decodeValue(b, type);\n actualRecordIdx++;\n }\n }\n\n // initialize left over expected optional fields\n for (const [expectKey, expectType] of this._fields.slice(expectedRecordIdx)) {\n if (expectType instanceof OptClass || expectType instanceof ReservedClass) {\n // TODO this assumes null value in opt is represented as []\n x[expectKey] = [];\n } else {\n throw new Error('Cannot find required field ' + expectKey);\n }\n }\n return x;\n }\n\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n protected readonly _components: Type[];\n\n constructor(_components: Type[]) {\n const x: Record = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitTuple(this, this._components, d);\n }\n\n public covariant(x: any): x is T {\n // `>=` because tuples can be covariant when encoded.\n\n if (\n Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => {\n try {\n return t.covariant(x[i]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nindex ${i} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: any[]) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n\n public decodeValue(b: Pipe, t: Type): T {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n } else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res as T;\n }\n\n public display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n\n public valueToString(values: any[]) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n\n/**\n * Represents an IDL Variant\n * @param {object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType> {\n private readonly _fields: Array<[string, Type]>;\n\n constructor(fields: Record = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitVariant(this, this._fields, d);\n }\n\n public covariant(x: any): x is Record {\n if (\n typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n try {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n } catch (e: any) {\n throw new Error(`Invalid ${this.display()} argument: \\n\\nvariant ${k} -> ${e.message}`);\n }\n })\n )\n return true;\n\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: Record) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(IDLTypeIds.Variant);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) =>\n concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)),\n );\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n\n public decodeValue(b: Pipe, t: Type) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n\n public display() {\n const fields = this._fields.map(\n ([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`),\n );\n return `variant {${fields.join('; ')}}`;\n }\n\n public valueToString(x: Record) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n } else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n private static _counter = 0;\n private _id = RecClass._counter++;\n private _type: ConstructType | undefined = undefined;\n\n public accept(v: Visitor, d: D): R {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n\n public fill(t: ConstructType) {\n this._type = t;\n }\n\n public getType() {\n return this._type;\n }\n\n public covariant(x: any): x is T {\n if (this._type ? this._type.covariant(x) : false) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n\n public _buildTypeTableImpl(typeTable: TypeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n\n public decodeValue(b: Pipe, t: Type) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n\n get name() {\n return `rec_${this._id}`;\n }\n\n public display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n\n public valueToString(x: T) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\n\nfunction decodePrincipalId(b: Pipe): PrincipalId {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n public accept(v: Visitor, d: D): R {\n return v.visitPrincipal(this, d);\n }\n\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId): ArrayBuffer {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public encodeType() {\n return slebEncode(IDLTypeIds.Principal);\n }\n\n public decodeValue(b: Pipe, t: Type): PrincipalId {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n\n get name() {\n return 'principal';\n }\n public valueToString(x: PrincipalId) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType<[PrincipalId, string]> {\n public static argsToString(types: Type[], v: any[]) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n\n constructor(public argTypes: Type[], public retTypes: Type[], public annotations: string[] = []) {\n super();\n }\n\n public accept(v: Visitor, d: D): R {\n return v.visitFunc(this, d);\n }\n public covariant(x: any): x is [PrincipalId, string] {\n if (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string')\n return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue([principal, methodName]: [PrincipalId, string]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n\n const opCode = slebEncode(IDLTypeIds.Func);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n\n public decodeValue(b: Pipe): [PrincipalId, string] {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n\n return [canister, method];\n }\n\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n\n public valueToString([principal, str]: [PrincipalId, string]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n\n public display(): string {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n\n private encodeAnnotation(ann: string): ArrayBuffer {\n if (ann === 'query') {\n return new Uint8Array([1]);\n } else if (ann === 'oneway') {\n return new Uint8Array([2]);\n } else if (ann === 'composite_query') {\n return new Uint8Array([3]);\n } else {\n throw new Error('Illegal function annotation');\n }\n }\n}\n\nexport class ServiceClass extends ConstructType {\n public readonly _fields: Array<[string, FuncClass]>;\n constructor(fields: Record) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n }\n public accept(v: Visitor, d: D): R {\n return v.visitService(this, d);\n }\n public covariant(x: any): x is PrincipalId {\n if (x && x._isPrincipal) return true;\n throw new Error(`Invalid ${this.display()} argument: ${toReadableString(x)}`);\n }\n\n public encodeValue(x: PrincipalId) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n\n public _buildTypeTableImpl(T: TypeTable) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(IDLTypeIds.Service);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n\n T.add(this, concat(opCode, len, ...meths));\n }\n\n public decodeValue(b: Pipe): PrincipalId {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n\n public valueToString(x: PrincipalId) {\n return `service \"${x.toText()}\"`;\n }\n}\n\n/**\n * Takes an unknown value and returns a string representation of it.\n * @param x - unknown value\n * @returns {string} string representation of the value\n */\nfunction toReadableString(x: unknown): string {\n const str = JSON.stringify(x, (_key, value) =>\n typeof value === 'bigint' ? `BigInt(${value})` : value,\n );\n\n return str && str.length > toReadableString_max\n ? str.substring(0, toReadableString_max - 3) + '...'\n : str;\n}\n\n/**\n * Encode a array of values\n * @param argTypes - array of Types\n * @param args - array of values\n * @returns {ArrayBuffer} serialised value\n */\nexport function encode(argTypes: Array>, args: any[]): ArrayBuffer {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(\n ...zipWith(argTypes, args, (t, x) => {\n try {\n t.covariant(x);\n } catch (e: any) {\n const err = new Error(e.message + '\\n\\n');\n throw err;\n }\n\n return t.encodeValue(x);\n }),\n );\n\n return concat(magic, table, len, typs, vals);\n}\n\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes: Type[], bytes: ArrayBuffer): JsonValue[] {\n const b = new Pipe(bytes);\n\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n\n function readTypeTable(pipe: Pipe): [Array<[IDLTypeIds, any]>, number[]] {\n const typeTable: Array<[IDLTypeIds, any]> = [];\n const len = Number(lebDecode(pipe));\n\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case IDLTypeIds.Opt:\n case IDLTypeIds.Vector: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case IDLTypeIds.Record:\n case IDLTypeIds.Variant: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case IDLTypeIds.Func: {\n const args = [];\n let argLength = Number(lebDecode(pipe));\n while (argLength--) {\n args.push(Number(slebDecode(pipe)));\n }\n const returnValues = [];\n let returnValuesLength = Number(lebDecode(pipe));\n while (returnValuesLength--) {\n returnValues.push(Number(slebDecode(pipe)));\n }\n const annotations = [];\n let annotationLength = Number(lebDecode(pipe));\n while (annotationLength--) {\n const annotation = Number(lebDecode(pipe));\n switch (annotation) {\n case 1: {\n annotations.push('query');\n break;\n }\n case 2: {\n annotations.push('oneway');\n break;\n }\n case 3: {\n annotations.push('composite_query');\n break;\n }\n default:\n throw new Error('unknown annotation');\n }\n }\n typeTable.push([ty, [args, returnValues, annotations]]);\n break;\n }\n case IDLTypeIds.Service: {\n let servLength = Number(lebDecode(pipe));\n const methods = [];\n while (servLength--) {\n const nameLength = Number(lebDecode(pipe));\n const funcName = new TextDecoder().decode(safeRead(pipe, nameLength));\n const funcType = slebDecode(pipe);\n methods.push([funcName, funcType]);\n }\n typeTable.push([ty, methods]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n\n const rawList: number[] = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n\n const table: RecClass[] = rawTable.map(_ => Rec());\n function getType(t: number): Type {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry: [IDLTypeIds, any]): Type {\n switch (entry[0]) {\n case IDLTypeIds.Vector: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case IDLTypeIds.Opt: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case IDLTypeIds.Record: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n } else {\n return record;\n }\n }\n case IDLTypeIds.Variant: {\n const fields: Record = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case IDLTypeIds.Func: {\n const [args, returnValues, annotations] = entry[1];\n return Func(\n args.map((t: number) => getType(t)),\n returnValues.map((t: number) => getType(t)),\n annotations,\n );\n }\n case IDLTypeIds.Service: {\n const rec: Record = {};\n const methods = entry[1] as [[string, number]];\n for (const [name, typeRef] of methods) {\n let type: Type | undefined = getType(typeRef);\n\n if (type instanceof RecClass) {\n // unpack reference type\n type = type.getType();\n }\n if (!(type instanceof FuncClass)) {\n throw new Error('Illegal service definition: services can only contain functions');\n }\n rec[name] = type;\n }\n return Service(rec);\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n\n rawTable.forEach((entry, i) => {\n // Process function type first, so that we can construct the correct service type\n if (entry[0] === IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n rawTable.forEach((entry, i) => {\n if (entry[0] !== IDLTypeIds.Func) {\n const t = buildType(entry);\n table[i].fill(t);\n }\n });\n\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n\n return output;\n}\n\n/**\n * An Interface Factory, normally provided by a Candid code generation.\n */\nexport type InterfaceFactory = (idl: {\n IDL: {\n Empty: EmptyClass;\n Reserved: ReservedClass;\n Unknown: UnknownClass;\n Bool: BoolClass;\n Null: NullClass;\n Text: TextClass;\n Int: IntClass;\n Nat: NatClass;\n\n Float32: FloatClass;\n Float64: FloatClass;\n\n Int8: FixedIntClass;\n Int16: FixedIntClass;\n Int32: FixedIntClass;\n Int64: FixedIntClass;\n\n Nat8: FixedNatClass;\n Nat16: FixedNatClass;\n Nat32: FixedNatClass;\n Nat64: FixedNatClass;\n\n Principal: PrincipalClass;\n\n Tuple: typeof Tuple;\n Vec: typeof Vec;\n Opt: typeof Opt;\n Record: typeof Record;\n Variant: typeof Variant;\n Rec: typeof Rec;\n Func: typeof Func;\n\n Service(t: Record): ServiceClass;\n };\n}) => ServiceClass;\n\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\n/**\n * Client-only type for deserializing unknown data. Not supported by Candid, and its use is discouraged.\n */\nexport const Unknown = new UnknownClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\n\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\n\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\n\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\n\nexport const Principal = new PrincipalClass();\n\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types: T): TupleClass {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t: Type): VecClass {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t: Type): OptClass {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t: Record): RecordClass {\n return new RecordClass(t);\n}\n\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields: Record): VariantClass {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec(): RecClass {\n return new RecClass();\n}\n\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args: Type[], ret: Type[], annotations: string[] = []): FuncClass {\n return new FuncClass(args, ret, annotations);\n}\n\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t: Record): ServiceClass {\n return new ServiceClass(t);\n}\n","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers: ArrayBuffer[]): ArrayBuffer {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)));\n}\n\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * The reading view. It's a sliding window as we read and write, pointing to the buffer.\n * @private\n */\n private _view: Uint8Array;\n\n /**\n * The actual buffer containing the bytes.\n * @private\n */\n private _buffer: ArrayBuffer;\n\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer?: ArrayBuffer, length = buffer?.byteLength || 0) {\n this._buffer = bufFromBufLike(buffer || new ArrayBuffer(0));\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n\n get buffer(): ArrayBuffer {\n // Return a copy of the buffer.\n return bufFromBufLike(this._view.slice());\n }\n\n get byteLength(): number {\n return this._view.byteLength;\n }\n\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n public read(num: number): ArrayBuffer {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n\n public readUint8(): number | undefined {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n public write(buf: ArrayBuffer): void {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n } else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(\n this._buffer,\n this._view.byteOffset,\n this._view.byteLength + b.byteLength,\n );\n }\n\n this._view.set(b, offset);\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n */\n public get end(): boolean {\n return this._view.byteLength === 0;\n }\n\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n public alloc(amount: number) {\n // Add a little bit of exponential growth.\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n\n/**\n * Returns a true ArrayBuffer from a Uint8Array, as Uint8Array.buffer is unsafe.\n * @param {Uint8Array} arr Uint8Array to convert\n * @returns ArrayBuffer\n */\nexport function uint8ToBuf(arr: Uint8Array): ArrayBuffer {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength).buffer;\n}\n\n/**\n * Returns a true ArrayBuffer from an ArrayBufferLike object.\n * @param bufLike a buffer-like object\n * @returns ArrayBuffer\n */\nexport function bufFromBufLike(\n bufLike: ArrayBuffer | Uint8Array | DataView | ArrayBufferView | ArrayBufferLike,\n): ArrayBuffer {\n if (bufLike instanceof Uint8Array) {\n return uint8ToBuf(bufLike);\n }\n if (bufLike instanceof ArrayBuffer) {\n return bufLike;\n }\n if ('buffer' in bufLike) {\n return bufLike.buffer;\n }\n return new Uint8Array(bufLike);\n}\n","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s - string to hash\n * @returns number representing hashed string\n */\nfunction idlHash(s: string): number {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label: string): number {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n","/* eslint-disable no-constant-condition */\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\n\nfunction eob(): never {\n throw new Error('unexpected end of buffer');\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe: Pipe, num: number): ArrayBuffer {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n\n/**\n * @param pipe - PipeArrayBuffer simulating buffer-pipe api\n */\nexport function safeReadUint8(pipe: Pipe): number {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe: Pipe): bigint {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n\n return value;\n}\n\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value: bigint | number): ArrayBuffer {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n\n // prettier-ignore\n if ( ( isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n } else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n\n function getLowerBytes(num: bigint): number {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n } else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe: Pipe): bigint {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n\n/**\n *\n * @param value - bigint or number\n * @param byteLength - number\n * @returns ArrayBuffer\n */\nexport function writeIntLE(value: bigint | number, byteLength: number): ArrayBuffer {\n value = BigInt(value);\n\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n\n return pipe.buffer;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe: Pipe, byteLength: number): bigint {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n","/**\n * Equivalent to `Math.log2(n)` with support for `BigInt` values\n * @param n bigint or integer\n * @returns integer\n */\nexport function ilog2(n: bigint | number): number {\n const nBig = BigInt(n);\n if (n <= 0) {\n throw new RangeError('Input must be positive');\n }\n return nBig.toString(2).length - 1;\n}\n\n/**\n * Equivalent to `2 ** n` with support for `BigInt` values\n * (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)\n * @param n bigint or integer\n * @returns bigint\n */\nexport function iexp2(n: bigint | number): bigint {\n const nBig = BigInt(n);\n if (n < 0) {\n throw new RangeError('Input must be non-negative');\n }\n return BigInt(1) << nBig;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as IDL from './idl';\nimport { Principal } from '@dfinity/principal';\nimport * as UI from './candid-core';\n\ntype InputBox = UI.InputBox;\n\nconst InputConfig: UI.UIConfig = { parse: parsePrimitive };\nconst FormConfig: UI.FormConfig = { render: renderInput };\n\nexport const inputBox = (t: IDL.Type, config: Partial) => {\n return new UI.InputBox(t, { ...InputConfig, ...config });\n};\nexport const recordForm = (fields: Array<[string, IDL.Type]>, config: Partial) => {\n return new UI.RecordForm(fields, { ...FormConfig, ...config });\n};\nexport const tupleForm = (components: IDL.Type[], config: Partial) => {\n return new UI.TupleForm(components, { ...FormConfig, ...config });\n};\nexport const variantForm = (fields: Array<[string, IDL.Type]>, config: Partial) => {\n return new UI.VariantForm(fields, { ...FormConfig, ...config });\n};\nexport const optForm = (ty: IDL.Type, config: Partial) => {\n return new UI.OptionForm(ty, { ...FormConfig, ...config });\n};\nexport const vecForm = (ty: IDL.Type, config: Partial) => {\n return new UI.VecForm(ty, { ...FormConfig, ...config });\n};\n\nexport class Render extends IDL.Visitor {\n public visitType(t: IDL.Type, d: null): InputBox {\n const input = document.createElement('input');\n input.classList.add('argument');\n input.placeholder = t.display();\n return inputBox(t, { input });\n }\n public visitNull(t: IDL.NullClass, d: null): InputBox {\n return inputBox(t, {});\n }\n public visitRecord(t: IDL.RecordClass, fields: Array<[string, IDL.Type]>, d: null): InputBox {\n let config = {};\n if (fields.length > 1) {\n const container = document.createElement('div');\n container.classList.add('popup-form');\n config = { container };\n }\n const form = recordForm(fields, config);\n return inputBox(t, { form });\n }\n public visitTuple(\n t: IDL.TupleClass,\n components: IDL.Type[],\n d: null,\n ): InputBox {\n let config = {};\n if (components.length > 1) {\n const container = document.createElement('div');\n container.classList.add('popup-form');\n config = { container };\n }\n const form = tupleForm(components, config);\n return inputBox(t, { form });\n }\n public visitVariant(t: IDL.VariantClass, fields: Array<[string, IDL.Type]>, d: null): InputBox {\n const select = document.createElement('select');\n for (const [key, type] of fields) {\n const option = new Option(key);\n select.add(option);\n }\n select.selectedIndex = -1;\n select.classList.add('open');\n const config: Partial = { open: select, event: 'change' };\n const form = variantForm(fields, config);\n return inputBox(t, { form });\n }\n public visitOpt(t: IDL.OptClass, ty: IDL.Type, d: null): InputBox {\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('open');\n const form = optForm(ty, { open: checkbox, event: 'change' });\n return inputBox(t, { form });\n }\n public visitVec(t: IDL.VecClass, ty: IDL.Type, d: null): InputBox {\n const len = document.createElement('input');\n len.type = 'number';\n len.min = '0';\n len.max = '100';\n len.style.width = '8rem';\n len.placeholder = 'len';\n len.classList.add('open');\n const container = document.createElement('div');\n container.classList.add('popup-form');\n const form = vecForm(ty, { open: len, event: 'change', container });\n return inputBox(t, { form });\n }\n public visitRec(t: IDL.RecClass, ty: IDL.ConstructType, d: null): InputBox {\n return renderInput(ty);\n }\n}\n\nclass Parse extends IDL.Visitor {\n public visitNull(t: IDL.NullClass, v: string): null {\n return null;\n }\n public visitBool(t: IDL.BoolClass, v: string): boolean {\n if (v === 'true') {\n return true;\n }\n if (v === 'false') {\n return false;\n }\n throw new Error(`Cannot parse ${v} as boolean`);\n }\n public visitText(t: IDL.TextClass, v: string): string {\n return v;\n }\n public visitFloat(t: IDL.FloatClass, v: string): number {\n return parseFloat(v);\n }\n public visitFixedInt(t: IDL.FixedIntClass, v: string): number | bigint {\n if (t._bits <= 32) {\n return parseInt(v, 10);\n } else {\n return BigInt(v);\n }\n }\n public visitFixedNat(t: IDL.FixedNatClass, v: string): number | bigint {\n if (t._bits <= 32) {\n return parseInt(v, 10);\n } else {\n return BigInt(v);\n }\n }\n public visitNumber(t: IDL.PrimitiveType, v: string): bigint {\n return BigInt(v);\n }\n public visitPrincipal(t: IDL.PrincipalClass, v: string): Principal {\n return Principal.fromText(v);\n }\n public visitService(t: IDL.ServiceClass, v: string): Principal {\n return Principal.fromText(v);\n }\n public visitFunc(t: IDL.FuncClass, v: string): [Principal, string] {\n const x = v.split('.', 2);\n return [Principal.fromText(x[0]), x[1]];\n }\n}\n\nclass Random extends IDL.Visitor {\n public visitNull(t: IDL.NullClass, v: string): null {\n return null;\n }\n public visitBool(t: IDL.BoolClass, v: string): boolean {\n return Math.random() < 0.5;\n }\n public visitText(t: IDL.TextClass, v: string): string {\n return Math.random().toString(36).substring(6);\n }\n public visitFloat(t: IDL.FloatClass, v: string): number {\n return Math.random();\n }\n public visitInt(t: IDL.IntClass, v: string): bigint {\n return BigInt(this.generateNumber(true));\n }\n public visitNat(t: IDL.NatClass, v: string): bigint {\n return BigInt(this.generateNumber(false));\n }\n public visitFixedInt(t: IDL.FixedIntClass, v: string): number | bigint {\n const x = this.generateNumber(true);\n if (t._bits <= 32) {\n return x;\n } else {\n return BigInt(v);\n }\n }\n public visitFixedNat(t: IDL.FixedNatClass, v: string): number | bigint {\n const x = this.generateNumber(false);\n if (t._bits <= 32) {\n return x;\n } else {\n return BigInt(v);\n }\n }\n private generateNumber(signed: boolean): number {\n const num = Math.floor(Math.random() * 100);\n if (signed && Math.random() < 0.5) {\n return -num;\n } else {\n return num;\n }\n }\n}\n\nfunction parsePrimitive(t: IDL.Type, config: UI.ParseConfig, d: string) {\n if (config.random && d === '') {\n return t.accept(new Random(), d);\n } else {\n return t.accept(new Parse(), d);\n }\n}\n\n/**\n *\n * @param t an IDL type\n * @returns an input for that type\n */\nexport function renderInput(t: IDL.Type): InputBox {\n return t.accept(new Render(), null);\n}\n\ninterface ValueConfig {\n input: InputBox;\n value: any;\n}\n\n/**\n *\n * @param t an IDL Type\n * @param input an InputBox\n * @param value any\n * @returns rendering that value to the provided input\n */\nexport function renderValue(t: IDL.Type, input: InputBox, value: any) {\n return t.accept(new RenderValue(), { input, value });\n}\n\nclass RenderValue extends IDL.Visitor {\n public visitType(t: IDL.Type, d: ValueConfig) {\n (d.input.ui.input as HTMLInputElement).value = t.valueToString(d.value);\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public visitNull(t: IDL.NullClass, d: ValueConfig) {}\n public visitText(t: IDL.TextClass, d: ValueConfig) {\n (d.input.ui.input as HTMLInputElement).value = d.value;\n }\n public visitRec(t: IDL.RecClass, ty: IDL.ConstructType, d: ValueConfig) {\n renderValue(ty, d.input, d.value);\n }\n public visitOpt(t: IDL.OptClass, ty: IDL.Type, d: ValueConfig) {\n if (d.value.length === 0) {\n return;\n } else {\n const form = d.input.ui.form!;\n const open = form.ui.open as HTMLInputElement;\n open.checked = true;\n open.dispatchEvent(new Event(form.ui.event!));\n renderValue(ty, form.form[0], d.value[0]);\n }\n }\n public visitRecord(t: IDL.RecordClass, fields: Array<[string, IDL.Type]>, d: ValueConfig) {\n const form = d.input.ui.form!;\n fields.forEach(([key, type], i) => {\n renderValue(type, form.form[i], d.value[key]);\n });\n }\n public visitTuple(t: IDL.TupleClass, components: IDL.Type[], d: ValueConfig) {\n const form = d.input.ui.form!;\n components.forEach((type, i) => {\n renderValue(type, form.form[i], d.value[i]);\n });\n }\n public visitVariant(t: IDL.VariantClass, fields: Array<[string, IDL.Type]>, d: ValueConfig) {\n const form = d.input.ui.form!;\n const selected = Object.entries(d.value)[0];\n fields.forEach(([key, type], i) => {\n if (key === selected[0]) {\n const open = form.ui.open as HTMLSelectElement;\n open.selectedIndex = i;\n open.dispatchEvent(new Event(form.ui.event!));\n renderValue(type, form.form[0], selected[1]);\n }\n });\n }\n public visitVec(t: IDL.VecClass, ty: IDL.Type, d: ValueConfig) {\n const form = d.input.ui.form!;\n const len = d.value.length;\n const open = form.ui.open as HTMLInputElement;\n open.value = len;\n open.dispatchEvent(new Event(form.ui.event!));\n d.value.forEach((v: T, i: number) => {\n renderValue(ty, form.form[i], v);\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as IDL from './idl';\n\nexport interface ParseConfig {\n random?: boolean;\n}\n\nexport interface UIConfig {\n input?: HTMLElement;\n form?: InputForm;\n parse(t: IDL.Type, config: ParseConfig, v: string): any;\n}\n\nexport interface FormConfig {\n open?: HTMLElement;\n event?: string;\n labelMap?: Record;\n container?: HTMLElement;\n render(t: IDL.Type): InputBox;\n}\n\nexport class InputBox {\n public status: HTMLElement;\n public label: string | null = null;\n public value: any = undefined;\n\n constructor(public idl: IDL.Type, public ui: UIConfig) {\n const status = document.createElement('span');\n status.className = 'status';\n this.status = status;\n\n if (ui.input) {\n ui.input.addEventListener('blur', () => {\n if ((ui.input as HTMLInputElement).value === '') {\n return;\n }\n this.parse();\n });\n ui.input.addEventListener('input', () => {\n status.style.display = 'none';\n ui.input!.classList.remove('reject');\n });\n }\n }\n public isRejected(): boolean {\n return this.value === undefined;\n }\n\n public parse(config: ParseConfig = {}): any {\n if (this.ui.form) {\n const value = this.ui.form.parse(config);\n this.value = value;\n return value;\n }\n\n if (this.ui.input) {\n const input = this.ui.input as HTMLInputElement;\n try {\n const value = this.ui.parse(this.idl, config, input.value);\n if (!this.idl.covariant(value)) {\n throw new Error(`${input.value} is not of type ${this.idl.display()}`);\n }\n this.status.style.display = 'none';\n this.value = value;\n return value;\n } catch (err) {\n input.classList.add('reject');\n this.status.style.display = 'block';\n this.status.innerHTML = 'InputError: ' + (err as Error).message;\n this.value = undefined;\n return undefined;\n }\n }\n return null;\n }\n public render(dom: HTMLElement): void {\n const container = document.createElement('span');\n if (this.label) {\n const label = document.createElement('label');\n label.innerText = this.label;\n container.appendChild(label);\n }\n if (this.ui.input) {\n container.appendChild(this.ui.input);\n container.appendChild(this.status);\n }\n\n if (this.ui.form) {\n this.ui.form.render(container);\n }\n dom.appendChild(container);\n }\n}\n\nexport abstract class InputForm {\n public form: InputBox[] = [];\n constructor(public ui: FormConfig) {}\n\n public abstract parse(config: ParseConfig): any;\n public abstract generateForm(): any;\n public renderForm(dom: HTMLElement): void {\n if (this.ui.container) {\n this.form.forEach(e => e.render(this.ui.container!));\n dom.appendChild(this.ui.container);\n } else {\n this.form.forEach(e => e.render(dom));\n }\n }\n public render(dom: HTMLElement): void {\n if (this.ui.open && this.ui.event) {\n dom.appendChild(this.ui.open);\n const form = this;\n // eslint-disable-next-line\n form.ui.open!.addEventListener(form.ui.event!, () => {\n // Remove old form\n if (form.ui.container) {\n form.ui.container.innerHTML = '';\n } else {\n const oldContainer = form.ui.open!.nextElementSibling;\n if (oldContainer) {\n oldContainer.parentNode!.removeChild(oldContainer);\n }\n }\n // Render form\n form.generateForm();\n form.renderForm(dom);\n });\n } else {\n this.generateForm();\n this.renderForm(dom);\n }\n }\n}\n\nexport class RecordForm extends InputForm {\n constructor(public fields: Array<[string, IDL.Type]>, public ui: FormConfig) {\n super(ui);\n }\n public generateForm(): void {\n this.form = this.fields.map(([key, type]) => {\n const input = this.ui.render(type);\n // eslint-disable-next-line\n if (this.ui.labelMap && this.ui.labelMap.hasOwnProperty(key)) {\n input.label = this.ui.labelMap[key] + ' ';\n } else {\n input.label = key + ' ';\n }\n return input;\n });\n }\n public parse(config: ParseConfig): Record | undefined {\n const v: Record = {};\n this.fields.forEach(([key, _], i) => {\n const value = this.form[i].parse(config);\n v[key] = value;\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return v;\n }\n}\n\nexport class TupleForm extends InputForm {\n constructor(public components: IDL.Type[], public ui: FormConfig) {\n super(ui);\n }\n public generateForm(): void {\n this.form = this.components.map(type => {\n const input = this.ui.render(type);\n return input;\n });\n }\n public parse(config: ParseConfig): any[] | undefined {\n const v: any[] = [];\n this.components.forEach((_, i) => {\n const value = this.form[i].parse(config);\n v.push(value);\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return v;\n }\n}\n\nexport class VariantForm extends InputForm {\n constructor(public fields: Array<[string, IDL.Type]>, public ui: FormConfig) {\n super(ui);\n }\n public generateForm(): void {\n const index = (this.ui.open as HTMLSelectElement).selectedIndex;\n const [_, type] = this.fields[index];\n const variant = this.ui.render(type);\n this.form = [variant];\n }\n public parse(config: ParseConfig): Record | undefined {\n const select = this.ui.open as HTMLSelectElement;\n const selected = select.options[select.selectedIndex].value;\n const value = this.form[0].parse(config);\n if (value === undefined) {\n return undefined;\n }\n const v: Record = {};\n v[selected] = value;\n return v;\n }\n}\n\nexport class OptionForm extends InputForm {\n constructor(public ty: IDL.Type, public ui: FormConfig) {\n super(ui);\n }\n public generateForm(): void {\n if ((this.ui.open as HTMLInputElement).checked) {\n const opt = this.ui.render(this.ty);\n this.form = [opt];\n } else {\n this.form = [];\n }\n }\n public parse(config: ParseConfig): [T] | [] | undefined {\n if (this.form.length === 0) {\n return [];\n } else {\n const value = this.form[0].parse(config);\n if (value === undefined) {\n return undefined;\n }\n return [value];\n }\n }\n}\n\nexport class VecForm extends InputForm {\n constructor(public ty: IDL.Type, public ui: FormConfig) {\n super(ui);\n }\n public generateForm(): void {\n const len = +(this.ui.open as HTMLInputElement).value;\n this.form = [];\n for (let i = 0; i < len; i++) {\n const t = this.ui.render(this.ty);\n this.form.push(t);\n }\n }\n public parse(config: ParseConfig): T[] | undefined {\n const value = this.form.map(input => {\n return input.parse(config);\n });\n if (this.form.some(input => input.isRejected())) {\n return undefined;\n }\n return value;\n }\n}\n","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\n\nexport let verify: (pk: Uint8Array, sig: Uint8Array, msg: Uint8Array) => boolean;\n\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(\n pk: Uint8Array,\n sig: Uint8Array,\n msg: Uint8Array,\n): Promise {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n","import * as base64Arraybuffer from 'base64-arraybuffer';\n\n// This WASM is generated from the miracl BLS Rust code (see\n// https://github.com/dfinity/miracl_core_bls12381/)\nimport { wasmBytesBase64 } from './wasm';\n\nlet wasm: InitOutput;\n\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\n\nlet cachegetUint8Memory0: any = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction passArray8ToWasm0(arg: any, malloc: any): [number, number] {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig: Uint8Array, m: Uint8Array, w: Uint8Array): number {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\n\nasync function load(module: any, imports: any) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nasync function init(): Promise {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n\n wasm = instance.exports as any as InitOutput;\n (init as any).__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;\n\nexport interface InitOutput {\n readonly memory: WebAssembly.Memory;\n readonly bls_init: () => number;\n readonly bls_verify: (a: number, b: number, c: number, d: number, e: number, f: number) => number;\n readonly __wbindgen_malloc: (a: number) => number;\n}\n\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","export const wasmBytesBase64 = `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akE4ENABGiACQbgDakEBNgIAIAJBwANqQTgQ0AEaIAJB+ANqQQE2AgAgAkGABGpBOBDQARogAkEBNgK4BCACQcAEakE4ENABGiACQfgEakEBNgIAIAJBgAVqQTgQ0AEaIAJBuAVqQQE2AgAgAkHABWpBOBDQARogAkH4BWpBATYCACACQYAGakE4ENABGiACQQE2ArgGIAJBwAZqQTgQ0AEaIAJB+AZqQQE2AgAgAkGAB2pBOBDQARogAkG4B2pBATYCACACQcAHakE4ENABGiACQfgHakEBNgIAIAIgARAYAkAgASgCgAZBBEYNACAAKAKABkEERg0AIAJBgARqIgMgAEGAAmoQlgEgAyABQYACahAYDAYLIAJBwAxqIgdBOBDQARogAkEBNgL4DCACQYANakE4ENABGiACQbgNakEBNgIAIAJBgAhqIgRBOBDQARogAkEBNgK4CCACQcAIakE4ENABGiACQfgIakEBNgIAIAJBgApqIgMgAEGAA2oiBRBeIAQgAxCZASADIAFBgANqIgYQXiAEIAMQESAHELYBIAEoAoAGQQRHDQMMBAsgACABEAMMBgsgAkHADGoiAyABQYAFahBeIAJBgAxqIgQgA0HAABDRARogAkGABmogBBCnAQsgAkGABmoQZCACQYAIaiIDIAIQlgEgAxArIAJBgAJqIgQgAxCXASAGIAQQlgEgAkGABGoiByADEJYBIAMgABCWASADIAUQlwEgAxCwASACQYAKaiIEIAEQlgEgBCABQYAEahCXASAEELABIAMgBBAYIAcgAxCXASADIAUQlgECQCABKAKABkECRwRAIAJBwAxqIgMgAUGABWoQXiACQYAIaiADEKYBDAELIAJBwAxqIgMgAUGABWoQXiACQYAMaiIBIANBwAAQ0QEaIAJBgAhqIAEQpwELIAJBgAhqIgEQZCACQYAKaiIDIAEQlgEgAxArIAUgAkGABGoQlgEgBSADEJcBIAJBgAZqIgQgAxCXASABEGQgBiABEJcBIAQQsAEgBBBkIAAgAhCWASAAIAQQlwEMAwsgAkGACmoiAyAFEF4gAkHADGoiBCADEJkBIAMgAUGAAmoQXiAEIAMQEQsgACgCgAZBBEcEQCACQYAKaiIDIABBgAJqEF4gAkHADGoiBCADEJkBIAMgBhBeIAQgAxARCyACQYAEaiIDIAJB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AEHcu8AAKAIAQX4gA0EDdndxNgIACyAAIAEQoAEgAEH0vsAAKAIARw0BQey+wAAgATYCAAsPCyABQYACTwRAIAAgARAWDwsgAUEDdiICQQN0QeS7wABqIQECf0Hcu8AAKAIAIgNBASACdCICcQRAIAEoAggMAQtB3LvAACACIANyNgIAIAELIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIC+UDAQN/IwBB0CJrIgMkACADQcAWaiIEQcitwAAQSSADQcgcaiIFQYCuwAAQSSADQQhqIAQgBRBLIANBiAFqQTgQ0AEaIANBwAFqQTgQ0AEaIANB+AFqED0CQCACEIYBBEAgABBVDAELIANB+ARqIgQQPSAEIAEQfSAEEEcgA0H4B2oiARBnIAEgAhB4IAEQRiADQcgcaiICIAEQkAEgA0G4CWogAhCQASACIANBuAhqEJABIANB+AlqIAIQkAEgA0G4CmoiARA9IANBuA1qEFUgASAEEH0gA0HAE2oiARA9IAEgBBB9IAEQogEgA0HAAWogA0GIAWoQUEECayECA0AgAkEBakEBTQRAIANBuA1qIgEQngEgACABQYgGENEBGgUgA0G4DWoQGiADQcAWaiADQbgKaiADQbgJaiADQfgJahALAkACQAJAIANBwAFqIAIQUyADQYgBaiACEFNrQQFqDgMBAgACCyADQcgcaiIBIANBuApqIANB+ARqIANBuAlqIANB+AlqEAogA0HAFmogARADDAELIANByBxqIgEgA0G4CmogA0HAE2ogA0G4CWogA0H4CWoQCiADQcAWaiABEAMLIAJBAWshAiADQbgNaiADQcAWahABDAELCwsgA0HQImokAAvBAwEVfwNAIANBwAFGBEACQCAAQShqIQsgAEEUaigCACIMIQggAEEQaigCACINIQIgAEEMaigCACIOIQEgACgCCCIPIQMgAEEYaigCACIQIQogAEEcaigCACIRIQQgAEEgaigCACISIQcgAEEkaigCACITIQYDQCAHIQkgBCEHIAohBCAFQYACRg0BIAEgAnEhFCABIAJzIRUgBSALaigCACAFQcCiwABqKAIAIAkgBEF/c3EgBCAHcXIgBmogBEEadyAEQRV3cyAEQQd3c2pqaiIGIAhqIQogBUEEaiEFIAIhCCABIQIgAyIBQR53IAFBE3dzIAFBCndzIBQgASAVcXNqIAZqIQMgCSEGDAALAAsFIAAgA2oiAkHoAGogAkEoaigCACACQcwAaigCACACQeAAaigCACIBQQ93IAFBDXdzIAFBCnZzamogAkEsaigCACIBQRl3IAFBDndzIAFBA3ZzajYCACADQQRqIQMMAQsLIAAgBiATajYCJCAAIAkgEmo2AiAgACAHIBFqNgIcIAAgBCAQajYCGCAAIAggDGo2AhQgACACIA1qNgIQIAAgASAOajYCDCAAIAMgD2o2AggL5AEBAn8jAEGAA2siAyQAIAMQPSAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbyAAIAFBgANqIAJBAXNBAWtBH3YQbyAAIAFBgAZqIAJBAnNBAWtBH3YQbyAAIAFBgAlqIAJBA3NBAWtBH3YQbyAAIAFBgAxqIAJBBHNBAWtBH3YQbyAAIAFBgA9qIAJBBXNBAWtBH3YQbyAAIAFBgBJqIAJBBnNBAWtBH3YQbyAAIAFBgBVqIAJBB3NBAWtBH3YQbyADIAAQfSADEKIBIAAgAyAEQQFxEG8gA0GAA2okAAvlAwEIfyMAQZAGayICJAAgAEFAayEIAkAgAUH4AGooAgAgASgCOGqsIABB+ABqKAIAIgcgACgCOCIEaqx+Qv///w9XDQAgBEEBSgR/IAAQHiAAKAJ4BSAHC0EBTA0AIAgQHgsgAkHYpMAAEEkgAkE4aiIHQfAAENABGiACIQNBACECA0AgAkE4RgRAAkAgB0E4aiEEQQAhAgNAIAJBOEYNASACIARqIAIgA2opAwA3AwAgAkEIaiECDAALAAsFIAIgB2pCADcDACACQQhqIQIMAQsLIANBqAFqIgYgABBdIANB4AFqIgUgARBdIANBmAJqIgIgACABEAUgA0GIA2oiBCAIIAFBQGsiARAFIAYgCBBgIAYQQiAFIAEQYCAFEEIgA0H4A2oiCSAGIAUQBUEAIQEgA0HoBGoiBkHwABDQASEFA0AgAUHwAEcEQCABIAVqIAEgAmopAwA3AwAgAUEIaiEBDAELCyAGIAQQYkEAIQEDQCABQfAARwRAIAEgBGoiBSABIAdqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAiAEEGIgAhBIIAkgBhBjIAkQSCADQdgFaiIBIAIQayAAIAEQaiAAQQM2AjggASAJEGsgCCABEGogAEECNgJ4IANBkAZqJAALowIBCH8jAEGABmsiAiQAIAIgAEGAAWoiBxBeIAJBgAFqIgQgBxBeIAQQLSACQYACaiIFIAIQXiAFIABBgAJqIgMQESACQYADaiIBIAMQXiABEC0gAyAEEJkBIAMgBBCaASADEKkBIAMQuAEgAxC4ASADEKkBIAFBDBCrASABEHwgARCpASACQYAEaiIIIAEQXiAIIAMQESACQYAFaiIGIAQQXiAGIAEQmgEgBhCpASADIAUQESAFIAEQmQEgBSABEJoBIAEgBRCaASABEKkBIAQgARB7IAQQqQEgBiAEEBEgBiAIEJoBIAUgABCZASAFIAIQESAAIAQQmQEgABCpASAAIAUQESAAELgBIAAQqQEgByAGEJkBIAcQqQEgAkGABmokAAu8AgEGfyMAQYAIayIBJAAgASAAEIwBIAFBgAJqIgMgAEGABGoiBRCMASABQYAEaiIEIABBgAJqIgYQjAEgAUGABmoiAkE4ENABGiABQQE2ArgGIAFBwAZqQTgQ0AEaIAFB+AZqQQE2AgAgAUGAB2pBOBDQARogAUG4B2pBATYCACABQcAHakE4ENABGiABQfgHakEBNgIAIAAQISACIAAQlgEgAiAAEJcBIAAgAhCXASAAELABIAEQyQEgARCzASAAIAEQlwEgAxAhIAMQZCACIAMQlgEgAiADEJcBIAMgAhCXASADELABIAQQISACIAQQlgEgAiAEEJcBIAQgAhCXASAEELABIAYQsgEgBhCzASAFEMkBIAUQswEgBiADEJcBIAUgBBCXASAAQQU2AoAGIAAQnAEgAUGACGokAAv/AQEHfyMAQcACayIBJAAgASAAQUBrIgYQkAEgARBMIAFBQGsiAyAGEJABIAMgAEGAAWoiAhBKIAFBgAFqIgQgAhCQASAEEEwgAiABEK4BIAIgARB3IAIQQiACEIIBIAIQggEgAhBCIARBDBA0IAFBwAFqIgcgBBCQASAHIAIQSiABQYACaiIFIAEQkAEgBSAEEHcgBRBCIAIgAxBKIAMgBBCuASADIAQQdyAEIAMQdyABIAQQfiABEEIgBSABEEogBSAHEHcgAyAAEK4BIAMgBhBKIAAgARCuASAAEEIgACADEEogABCCASAAEEIgBiAFEK4BIAYQQiABQcACaiQAC84CAgd/An4CQAJAAkBBDSABQTpuIgJrIgRBDU0EQEEMIAJrIgNBDk8NASAAIAAgA0EDdGopAwBBOiABIAJBOmxrIgNrrSIKhyAAIARBA3RqKQMAIAOtIgmGhDcDaCAEQQ1rIQUgAEHgAGohBCACQQFqIQZBACACQQN0ayEHQQshAwNAAkAgA0ECaiAGTQRAIAFBrAZPDQEgACACQQN0aiAAKQMAIAmGQv//////////A4M3AwADQCACRQ0HIABCADcDACACQQFrIQIgAEEIaiEADAALAAsgAyAFakEOTw0EIAQgBCAHaiIIQQhrKQMAIAqHIAgpAwAgCYZC//////////8Dg4Q3AwAgA0EBayEDIARBCGshBAwBCwsgAkEOQYCywAAQOwALIARBDkHQscAAEDsACyADQQ5B4LHAABA7AAtBf0EOQfCxwAAQOwALC6cCAQR/IABCADcCECAAAn9BACABQYACSQ0AGkEfIAFB////B0sNABogAUEGIAFBCHZnIgNrdkEBcSADQQF0a0E+agsiBDYCHCAEQQJ0Qey9wABqIQMgACECAkACQAJAAkBB4LvAACgCACIAQQEgBHQiBXEEQCADKAIAIQMgBBCfASEAIAMQywEgAUcNASADIQAMAgtB4LvAACAAIAVyNgIAIAMgAjYCAAwDCyABIAB0IQQDQCADIARBHXZBBHFqQRBqIgUoAgAiAEUNAiAEQQF0IQQgACIDEMsBIAFHDQALCyAAKAIIIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCCACQQA2AhgPCyAFIAI2AgALIAIgAzYCGCACIAI2AgggAiACNgIMC7YCAQV/IAAoAhghBAJAAkAgACAAKAIMRgRAIABBFEEQIABBFGoiASgCACIDG2ooAgAiAg0BQQAhAQwCCyAAKAIIIgIgACgCDCIBNgIMIAEgAjYCCAwBCyABIABBEGogAxshAwNAIAMhBSACIgFBFGoiAygCACICRQRAIAFBEGohAyABKAIQIQILIAINAAsgBUEANgIACwJAIARFDQACQCAAIAAoAhxBAnRB7L3AAGoiAigCAEcEQCAEQRBBFCAEKAIQIABGG2ogATYCACABDQEMAgsgAiABNgIAIAENAEHgu8AAQeC7wAAoAgBBfiAAKAIcd3E2AgAPCyABIAQ2AhggACgCECICBEAgASACNgIQIAIgATYCGAsgAEEUaigCACIARQ0AIAFBFGogADYCACAAIAE2AhgLC+UBAQZ/IwBBgARrIgIkACACIAAQXiACQYABaiIFIABBgAFqIgYQXiACQYACaiIDQTgQ0AEaIAJBATYCuAIgAkHAAmpBOBDQARogAkH4AmpBATYCACACQYADaiIEIAYQXiACIAEQESAFIAFBgAFqIgcQESADIAcQmQEgAyABEJoBIAQgABCaASADEKkBIAQQqQEgBCADEBEgAyACEJkBIAMQNiAEIAMQmgEgBBCpASADIAUQmQEgAxA2IAYgBBCZASAGIAMQmgEgBRB8IAAgBRCZASAAIAIQmgEgABCwASACQYAEaiQAC28BDH9BjL/AACgCACICRQRAQZy/wABB/x82AgBBAA8LQYS/wAAhBgNAIAIiASgCCCECIAEoAgQhAyABKAIAIQQgAUEMaigCABogASEGIAVBAWohBSACDQALQZy/wAAgBUH/HyAFQf8fSxs2AgBBAAuAAgEGfyMAQYAIayIBJAAgACgCgAZBAUcEQCABIAAQjAEgAUGAAmoiAiAAQYACaiIEEIwBIAFBgARqIgUgAEGABGoiAxCMASABQYAGaiIGIAAQjAEgARAhIAIgAxAYIAIQswEgAhCwASAFECEgBiAEEBggBhCzASADIAAQlwEgAyAEEJcBIAMQsAEgAxAhIAAgARCWASABIAIQlwEgARCwASABIAUQlwEgASAGEJcBIAEQsAEgARArIAIQZCAFEGQgACACEJcBIAQgBRCWASAEIAYQlwEgAyABEJcBIABBBEEFIAAoAoAGQX5xQQJGGzYCgAYgABCdAQsgAUGACGokAAuZAgEBfyMAQYANayIDJAAgAyABEGkgAxCdASADQYgGaiIBIAIQXSABEEIgA0HABmoiAiABEF0gAkEDECkaIAIQQiADQfgGaiADEGkCQCACEFdFBEAgA0HABmoQKkECayECA0AgAkEBakEBTQRAIANB+AZqIgEQnAEMAwUgA0H4BmoQEwJAAkACQCADQcAGaiACEFMgA0GIBmogAhBTa0EBag4DAQIAAgsgA0H4BmogAxAHDAELIAMQngEgA0H4BmogAxAHIAMQngELIAJBAWshAgwBCwALAAsgA0H4BmoiARC3ASABQYABahC2ASABQYACahCxASABQYAEahCxASABQQE2AoAGCyAAIAFBiAYQ0QEaIANBgA1qJAALhgICBH8BfiMAQTBrIgIkACABQQRqIQQgASgCBEUEQCABKAIAIQMgAkEQaiIFQQA2AgAgAkIBNwMIIAIgAkEIajYCFCACQShqIANBEGopAgA3AwAgAkEgaiADQQhqKQIANwMAIAIgAykCADcDGCACQRRqIAJBGGoQDBogBEEIaiAFKAIANgIAIAQgAikDCDcCAAsgAkEgaiIDIARBCGooAgA2AgAgAUEMakEANgIAIAQpAgAhBiABQgE3AgQgAiAGNwMYQQxBBBC5ASIBRQRAQQxBBBDPAQALIAEgAikDGDcCACABQQhqIAMoAgA2AgAgAEGEt8AANgIEIAAgATYCACACQTBqJAAL5AEBAn8jAEHAAWsiAyQAIAMQZyAAIAEgAkEfdSIEIAJzIARBf3NqQQJtIgJBAWtBH3YQbiAAIAFBwAFqIAJBAXNBAWtBH3YQbiAAIAFBgANqIAJBAnNBAWtBH3YQbiAAIAFBwARqIAJBA3NBAWtBH3YQbiAAIAFBgAZqIAJBBHNBAWtBH3YQbiAAIAFBwAdqIAJBBXNBAWtBH3YQbiAAIAFBgAlqIAJBBnNBAWtBH3YQbiAAIAFBwApqIAJBB3NBAWtBH3YQbiADIAAQeCADEKQBIAAgAyAEQQFxEG4gA0HAAWokAAvDAwIGfwN+IwBB8ABrIgEkACABQcCywAAQSSABQThqIAEQXSAAEEICQAJAAkAgAQJ/IAAoAjgiAkEQTARAIAJBAWsQNQwBCyABKQMwIghCAXwiByAIVA0BIAApAzAiCEKAgICAgICAgIB/USAHQn9RcQ0CIAFBOGoiAiAIIAd/pxApIQcgASABKQNoIAdCOoZ8NwNoIAAgAhBhIAAQQkECCyIEECgDQCAERQ0DQQAhAyABIAEpAwgiCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgACkDACAHfSEHIABBCGohBSAAIAFBOGoiAkEBA38gAiADaiAHQv//////////A4M3AwAgB0I6hyEHIANBKEYEfyABIAEpAzBCAYciCDcDMCACIAApAzAgCH0gB3wiBzcDMCAHQj+IpwUgASADaiIGQQhqIAhCAYcgBkEQaikDACIIQjmGQoCAgICAgICAAoOEIgk3AwAgAyAFaikDACAHfCAJfSEHIANBCGohAwwBCwtrEDAgBEEBayEEDAALAAtB4LPAAEEZQcSzwAAQWQALQYC0wABBH0HEs8AAEFkACyAAQQE2AjggAUHwAGokAAvuAQECfyMAQbABayIDJAAgA0EwENABIQMCQAJAA0AgAkEwRgRAIANBMGogAxBwIAFBMGohAUEAIQIDQCACQTBGDQMgAkEwRg0EIAIgA2ogASACai0AADoAACACQQFqIQIMAAsACyACQeAARwRAIAIgA2ogASACai0AADoAACACQQFqIQIMAQsLQeAAQeAAQYCmwAAQOwALIANB8ABqIgEgAxBwIABBOBDQASIAQQE2AjggAEFAa0E4ENABIABB+ABqQQE2AgAgACABEK4BIANBMGoQrgEgA0GwAWokAA8LIAJBMGpB4ABBkKbAABA7AAuPAgEDfyMAQSBrIgUkAEEBIQZB2LvAAEHYu8AAKAIAIgdBAWo2AgACQEGgv8AALQAABEBBpL/AACgCAEEBaiEGDAELQaC/wABBAToAAAtBpL/AACAGNgIAAkACQCAHQQBIIAZBAktyDQAgBSAEOgAYIAUgAzYCFCAFIAI2AhBBzLvAACgCACICQQBIDQBBzLvAACACQQFqIgI2AgBBzLvAAEHUu8AAKAIAIgMEf0HQu8AAKAIAIAUgACABKAIQEQAAIAUgBSkDADcDCCAFQQhqIAMoAhQRAABBzLvAACgCAAUgAgtBAWs2AgAgBkEBSw0AIAQNAQsACyMAQRBrIgIkACACIAE2AgwgAiAANgIIAAucAQEEfyMAQYADayICJAAgAiAAEF4gAkGAAWoiASAAQYABaiIEEF4gAkGAAmoiAyAAEF4gAyAEEBEgAiAEEJoBIAEQfCABIAAQmgEgAhCpASABEKkBIAAgAhCZASAAIAEQESABIAMQmQEgARB8IAEgAxCaASABEKkBIAEQNiAAIAEQmgEgAxC4ASAEIAMQmQEgABCwASACQYADaiQAC7kBAQJ/IwBBIGsiAyQAAkAgASABIAJqIgFLDQAgAEEEaigCACICQQF0IgQgASABIARJGyIBQQggAUEISxshAQJAIAIEQCADQRhqQQE2AgAgAyACNgIUIAMgACgCADYCEAwBCyADQQA2AhALIAMgASADQRBqECYgAygCAARAIANBCGooAgAiAEUNASADKAIEIAAQzwEACyADKAIEIQIgAEEEaiABNgIAIAAgAjYCACADQSBqJAAPCxBlAAusAQECfyMAQYADayIDJAAgA0EIaiABEJABAkAgAgRAIANBCGogAhCuAQwBCyADQQhqEDoLIANByABqIgJB8LTAABBJIANBgAFqIAIQjgEgA0HAAWoiAiADQQhqIgQQkAEgAhBMIAIgARBKIAAgARCQASAAIAQQSiADQYACaiACEJABIAAQViEBIANBwAJqIgIgABCQASACEEMgAhBCIAAgAiABEHIgA0GAA2okAAueAQEFfyMAQYABayICJAAgAkE4ENABIgJBATYCOCACQUBrIgNBOBDQARogAkEBNgJ4IAIgABCuASACIAFBgAFqIgUQSiADIAEQrgEgAyAAQYABaiIGEEoCQCACIAMQWEUNACACIABBQGsQrgEgAiAFEEogAkFAayIAIAFBQGsQrgEgACAGEEogAiAAEFhFDQBBASEECyACQYABaiQAIAQLpwEBA38jAEEwayICJAAgAUEEaiEDIAEoAgRFBEAgASgCACEBIAJBEGoiBEEANgIAIAJCATcDCCACIAJBCGo2AhQgAkEoaiABQRBqKQIANwMAIAJBIGogAUEIaikCADcDACACIAEpAgA3AxggAkEUaiACQRhqEAwaIANBCGogBCgCADYCACADIAIpAwg3AgALIABBhLfAADYCBCAAIAM2AgAgAkEwaiQAC5UBAQJ/AkACQAJAAkACfwJAAkACf0EBIgMgAUEASA0AGiACKAIAIgRFDQEgAigCBCICDQQgAQ0CQQEMAwshA0EAIQEMBgsgAQ0AQQEMAQsgAUEBELkBCyICRQ0BDAILIAQgARCsASICDQELIAAgATYCBEEBIQEMAQsgACACNgIEQQAhAwsgACADNgIAIABBCGogATYCAAvvMwISfwV+IwBBMGsiDiQAIA5BEGogACABEFsgDiAOKAIUIgA2AhwgDiAOKAIQIgg2AhggDkEIaiACIAMQWyAOIA4oAgwiATYCJCAOIA4oAggiAzYCICAOIAQgBRBbIA4gDigCBCIFNgIsIA4gDigCACINNgIoIAAhBCMAQZAVayICJAAjAEGwBmsiCiQAIApBEGpBOBDQARogCkHQAGpBOBDQASEVIApBiAFqQQE2AgAgCkEBNgJIIApBkAFqIgBB2KTAABBJIAAQKiEPIApByAFqIhNBgAIQ0AEaIApB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ABBJAkACQAJAAkADQAJAIAxBMEYEQCAAIAAtAABBH3E6AAAgAEHoAGogABC+ASAEDQFBAEEAQZiBwAAQOwALIAQgDEYNAiAAIAxqIAggDGotAAA6AAAgDEEBaiEMDAELC0EAIQwgCCwAACIJQQBIDQIgCEEwaiEDIARBMCAEQTBLG0EwayEIA0AgDEEwRgRAIABBoAFqIgQgABC+ASMAQYABayIDJAAgARBnIAEgAEHoAGoQwAEgAUFAayIIIAQQwAEgAUGAAWoQygEgARBCIAMgARBPIANBQGsiBCAIEJABIAQQTCAEIAMQWEUEQCABEJIBCyADQYABaiQADAULIAggDEYNAiAAIAxqIAMgDGotAAA6AAAgDEEBaiEMDAALAAsgBCAEQYiBwAAQOwALIAxBMGogBEGogcAAEDsACyMAQcABayIDJAAgAEGgAWoiBBBnIANBOBDQASIDQQE2AjggBCAAQegAahDAASAEEEIgBEGAAWoQygEgA0FAayIIIAQQTwJAAkACQCAIIAMQWkEBRgRAIANBgAFqIgggA0FAayADECMgCBBWDQEMAgsgBBCSAQwCCyADQYABaiIIEEMgCBBCCyAEQUBrIANBgAFqEK4BCyADQcABaiQAIAlBIHEiA0EAIABB4AFqEE0iBEEBRxtBASADIARBAUdyGwRAIABBoAFqEKQBCyABIABBoAFqQcABENEBGgsgAEHgAmokAAJ/QQAhAyMAQcAFayIAJAACQCABEIYBDQAgAEEIaiIIQZCtwAAQSSAAQYAEaiIEQbiuwAAQSSAAQUBrIgkgBBCOASAAQYABaiIEEGcgBCABEHggBCAJEEogAEHAAmoiBCABIAgQvQEgASAEECQNACAAQYAEaiIEIABBwAJqIgEgAEEIahC9ASABIARBwAEQ0QEaIAEQpAEgAEGAAWogARAkRQ0AQQEhAwsgAEHABWokAEF/IANFDQAaIAJBwAFqEKQBIAJBgANqIQhBACEAIwBB4ARrIgEkACABQeAAENABIQECQCAFBEADQCAAQeAARgRAIAEgAS0AAEEfcToAACABQeAAaiABEB9BACEAAkAgDSwAACILQQBOBEAgDUHgAGohAyAFQeAAIAVB4ABLG0HgAGshBANAIABB4ABGBEAgAUHgAWoiACABEB8gCCABQeAAaiAAED8MAwsgACAERwRA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AWoQmQEgACAEEBEgAEGAAWoiASAFQYABahCZASABIAgQESAAIAEQeg0BC0EADAELQQELIQEgAEGAAmokACANQcAHaiQAQX8gAUUNABojAEHgA2siACQAIABBgAFqIgFBwKjAABBJIABBuAFqIgNB+KjAABBJIAAgASADEEsgAEHwAmoiAUGwqcAAEEkgAEGoA2oiA0HoqcAAEEkgAEHwAWoiBCABIAMQSyACQYAGaiIBIAAgBBA/IABB4ANqJAAgAkGACWohByACQYADaiEIIwBBkDRrIgAkACAAQYAoaiIDQcitwAAQSSAAQYguaiIEQYCuwAAQSSAAIAMgBBBLIABBgAFqQTgQ0AEaIABBuAFqQTgQ0AEaIABB8AFqED0CQCACQcABaiIEEIYBRQRAIAIQhgEEQCAHIAEgBBAODAILIABB8ARqIgMQPSADIAEQfSADEEcgAEHwB2oiBRBnIAUgBBB4IAUQRiAAQbAJaiIEED0gBCAIEH0gBBBHIABBsAxqIggQZyAIIAIQeCAIEEYgAEGILmoiASAFEJABIABB8A1qIAEQkAEgASAAQbAIahCQASAAQbAOaiABEJABIAEgCBCQASAAQfAOaiABEJABIAEgAEHwDGoQkAEgAEGwD2ogARCQASAAQfAPaiIBED0gAEHwEmoiBRA9IABB8BVqEFUgASADEH0gBSAEEH0gAEH4G2oiARA9IAEgAxB9IAEQogEgAEH4HmoiARA9IAEgBBB9IAEQogEgAEG4AWogAEGAAWoQUEECayEBA0AgAUEBakEBTQRAIABB8BVqIgEQngEgByABQYgGENEBGgwDBSAAQfAVaiIEEBogAEH4IWoiAyAAQfAPaiAAQfANaiAAQbAOahALIABBgChqIgUgAEHwEmogAEHwDmogAEGwD2oQCyADIAUQAyAEIAMQAQJAAkACQCAAQbgBaiABEFMgAEGAAWogARBTa0EBag4DAQIAAgsgAEGILmoiAyAAQfAPaiAAQfAEaiAAQfANaiAAQbAOahAKIABB+CFqIgQgA0GIBhDRARogAyAAQfASaiAAQbAJaiAAQfAOaiAAQbAPahAKIAQgAxADIABB8BVqIAQQAQwBCyAAQYguaiIDIABB8A9qIABB+BtqIABB8A1qIABBsA5qEAogAEH4IWoiBCADQYgGENEBGiADIABB8BJqIABB+B5qIABB8A5qIABBsA9qEAogBCADEAMgAEHwFWogBBABCyABQQFrIQEMAQsACwALIAcgCCACEA4LIABBkDRqJAAjAEHgH2siCCQAIAhB0BNqIgFByK3AABBJIAhB2BlqIg1BgK7AABBJIAggASANEEsgCEGAAWoiC0GQrcAAEEkgAkGID2oiACAHEGkgCEG4AWoiBSAAEGkjAEGACGsiAyQAIAMgBRCMASADQYACaiIJIAVBgAJqIg8QjAEgA0GABGoiCiAFEIwBIANBgAZqIgRBOBDQARogA0EBNgK4BiADQcAGakE4ENABGiADQfgGakEBNgIAIANBgAdqQTgQ0AEaIANBuAdqQQE2AgAgA0HAB2pBOBDQARogA0H4B2pBATYCACAFEJ0BIAMQISAJIAVBgARqIgwQGCAJEGQgAyAJEHkgAxCwASAJIAwQlgEgCRAhIAkQZCAKIA8QGCAJIAoQeSAJELABIAogDxCWASAKECEgBCAFEJYBIAQgDBAYIAogBBB5IAoQsAEgBCAPEJYBIAQgChAYIAQQZCAFIAMQGCAEIAUQlwEgDCAJEBggDBBkIAQgDBCXASAEELABIwBBgAJrIgYkACAGIAQQXiAGQYABaiIQIARBgAFqIhIQXiAGEC0gEBAtIBAQfCAQEKkBIAYgEBB7IAYQPiAEIAYQESAGEDYgBhCpASASIAYQESAGQYACaiQAIAUgAxCWASAFIAQQGCAPIAkQlgEgDyAEEBggDCAKEJYBIAwgBBAYIAVBBTYCgAYgA0GACGokACAAEJ4BIAAgBRAHIAUgABBtIAAgCBAyIAAgCBAyIAAgBRAHIAhBwAdqIgQgABBpIAQQEyAEIAAQByANIAAgCxAbIAhByA1qIgMgDRBpIAMQngEgASAAEGkgARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gARCeASAAIAMQbSAAIAEQByANIAAgCxAbIAMgDRBtIAMQngEgASAAEG0gASAIEDIgACADEG0gACABEAcgDSAAIAsQGyADIA0QbSANIAMgCxAbIAMgDRBtIAEgABBtIAEgCBAyIAEgCBAyIAMgARAHIAEgABBtIAEQngEgACADEG0gACABEAcgACAEEAcgABCcASAIQeAfaiQAIAcgAEGIBhDRARpBACEAIwBBgAJrIgEkACABEGwCQCAHIAEQegR/IAdBgAFqIAFBgAFqEHoFQQALRQ0AIAdBgAJqEIcBRQ0AIAdBgARqEIcBIQALIAFBgAJqJABBACAADQAaQX8LIAJBkBVqJAAgDkEoahC0ASAOQSBqELQBIA5BGGoQtAEgDkEwaiQAC58BAgJ/BX4gAEEwaiICKQMAIAFBP3GtIgSGIQUgACkDKCIGQTogAWtBP3GtIgiHIQdBBiEBA38gAiAFIAeENwMAIAFBAU0EfyAAIAApAwAgBIZC//////////8DgzcDACAAKQMwQiSHpwUgAUEBayEBIAJBEGsiA0EIaiECIAYgBIZC//////////8DgyEHIAMpAwAiBiAIhyEFDAELCxoLiAECA34DfyMAQRBrIgUkAAN+IAZBOEYEfiAFQRBqJAAgAwUgBSAAIAZqIgcpAwAiAiACQj+HIAGsIgIgAkI/hxAvIAcgBSkDACIEIAN8IgJC//////////8DgzcDACACIARUrSAFQQhqKQMAIANCP4d8fEIGhiACQjqIhCEDIAZBCGohBgwBCwsLigECA38BfiMAQUBqIgIkACACQQhqIgEgABBdIAEQQiACQThqIQFBBiEDQdwCIQACQAJAA0AgA0EATgRAIAEpAwAiBEIAUg0CIAFBCGshASAAQTprIQAgA0EBayEDDAELC0EAIQAMAQsDQCAEUA0BIABBAWohACAEQgJ/IQQMAAsACyACQUBrJAAgAAuHAQEDfyMAQYACayIBJAAgABCwASABIAAQXiABQYABaiICQTgQ0AEaIAFBATYCuAEgAUHAAWpBOBDQARogAUH4AWpBATYCACABIABBgAFqIgMQmgEgARA2IAIgARCZASACIAMQmgEgAyABEJkBIAMgABCaASAAIAIQmQEgABCwASABQYACaiQAC30CBH4BfyABQT9xrSECQTogAWtBP3GtIQRBACEBIAApAwAiBSEDA38gAUEwRgR/IAAgACkDMCAChzcDMCAFQn8gAoZCf4WDpwUgACABaiIGIAMgAocgBkEIaikDACIDIASGQv//////////A4OENwMAIAFBCGohAQwBCwsaC2kBBH8jAEHAAWsiASQAIAEgABCQASABQUBrIgIgABCQASABQYABaiIDIABBQGsiBBCQASABIAQQdyACIAAQdyACEEIgBCACEEogAxBDIAAgAxB3IAEQQiAAEEIgACABEEogAUHAAWokAAuCAQIBfwF+IABB8AAQ0AEhAANAIAJBOEYEQAJAIAAgASkDMCIDQjqHNwM4IAAgA0L//////////wODNwMwIABBQGshAEEAIQIDQCACQTBGDQEgACACakIANwMAIAJBCGohAgwACwALBSAAIAJqIAEgAmopAwA3AwAgAkEIaiECDAELCwtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIAYgA0IgiCIGfnwiBUIghnwiCjcDACAAIAcgClatIAYgCH4gBSAJVK1CIIYgBUIgiIR8fCABIAR+IAIgA358fDcDCAtqAgF/BX4gASkDCCAAKQMAhSIGQgGGQgGHIQdBACACa6whCAN+IANBOEYEfiAFBSAAIANqIgIgAikDACIEIAaFIAEgA2opAwAgBIUgCIOFIgQgB4U3AwAgBCAFhSEFIANBCGohAwwBCwsaC18CAX8EfkIBIQNBMCECA38gAkF4RgR/IARCAYYgA3ynQQFrBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBCGshAiAFIAaFQgF9QjqHIAODIQMMAQsLC2kBBH8jAEGAAmsiAiQAIAIgARBeIAJBgAFqIgMgARBeIAIQLSADIAIQESAAIAMQmAEgAEGAAmoiBCADEJgBIABBgARqIgUgAxCYASAEIAEQpgEgBSACEKYBIABBBTYCgAYgAkGAAmokAAtiAQJ/IwBBQGoiAiQAIAAQQiACIAAQkAECQCABBEAgACABEK4BDAELIAAQOgtBACEBA0AgA0UEQCAAEExBASABQQFqIAFBAUYiAxshAQwBCwsgACACEEogABAeIAJBQGskAAtnAQJ/IwBBQGoiAyQAAkAgASABQR91IgJqIAJzIgIgACgCOGxBgICAEE4EQCADIAIQOSAAIAMQSgwBCyAAIAIQKRogACAAKAI4IAJsNgI4CyABQQBIBEAgABBDIAAQQgsgA0FAayQAC2cAIABBAXYgAHIiAEECdiAAciIAQQR2IAByIgBBCHYgAHIiAEEQdiAAciIAIABBAXZB1arVqgVxayIAQQJ2QbPmzJkDcSAAQbPmzJkDcWoiAEEEdiAAakGPnrz4AHFBgYKECGxBGHYLYQEDfyMAQYABayIBJAAgASAAEJABIAFBQGsiAkE4ENABGiABQQE2AnggASAAQUBrIgMQdyABEEMgAiABEK4BIAIgAxB3IAMgARCuASADIAAQdyAAIAIQrgEgAUGAAWokAAtVAgJ/AX4jAEHwAGsiASQAIAFBwLLAABBJIAApAwAhAyABQThqIgIgABBdIABBARAsIAIgARBgIAIQQiACQQEQLCAAIAIgA0ICgacQMCABQfAAaiQAC5gBAQZ/IwBBwAFrIgMkACAAIAEQXiAAEC0gA0GIAWoiBkHop8AAEEkjAEFAaiIEJAAgA0EIaiICQTgQ0AEiBUEBNgI4IAVBQGtBOBDQASAFQfgAakEBNgIAIAQgBhCOASAFIAQQrgEQwQEgBEFAayQAIAIQqQEgAhB8IAIQqQEgACABEBEgACACEJoBIAAQtQEgA0HAAWokAAtZAQJ/IwBBQGoiAyQAIABBOBDQASIAQQE2AjgCQCABQQBOBEAgACABEJMBDAELIANBCGoiAkHAssAAEEkgAiABEJMBIAIQQiAAIAIQagsgABBUIANBQGskAAu9CAEKfyMAQYABayIHJAAgB0EIaiIDQcCywAAQSSADQQEQlAECQAJAA0AgAUEwRgRAIANBMGogAykDMEIBhzcDACADQThqIQEDQCACRQ0EIAFCADcDACACQQFrIQIgAUEIaiEBDAALAAsgAUE4Rg0BIAFBOEcEQCABIANqIAEgA2oiBEEIaikDAEI5hkL//////////wODIAQpAwBCAYeENwMAIAVBAWohBSABQQhqIQEMAQsLQQdBB0GEm8AAEDsACyAFQQdB9JrAABA7AAsgA0EBEJQBIANBARAsIAdBQGshBUEAIQIjAEGgCmsiASQAIAFBOBDQASIBQUBrQTgQ0AEhBiABQYABakE4ENABGiABQcABakE4ENABGiABQYACakE4ENABGiABQcACakE4ENABGiABQYADakE4ENABGiABQcADakE4ENABGiABQYAEakE4ENABGiABQcAEakE4ENABGiABQYAFakE4ENABGiABQcAFakE4ENABGiABQYAGakE4ENABGiABQcAGakE4ENABGiABQYAHakE4ENABGiABQcAHakE4ENABGiABQfgHakEBNgIAIAFBuAdqQQE2AgAgAUH4BmpBATYCACABQbgGakEBNgIAIAFB+AVqQQE2AgAgAUG4BWpBATYCACABQfgEakEBNgIAIAFBuARqQQE2AgAgAUH4A2pBATYCACABQbgDakEBNgIAIAFB+AJqQQE2AgAgAUG4AmpBATYCACABQfgBakEBNgIAIAFBuAFqQQE2AgAgAUH4AGpBATYCACABQQE2AjggAUGBCGpB5wAQ0AEaIAFB6AhqIgQgABCQASAEEEIgAUGoCWoiBCADEF0gBBBCIAQQKkEDaiIIQQJ2IgNBAWohCQJAA0AgAiAJRgRAIAEQygEgBiABQegIahCuASABQeAJakE4ENABGiABQQE2ApgKQYB5IQIMAgsgAUGoCWoiBCAEQQQQjwEiChCUASAEEEIgAkHnAEcEQCABQYEIaiACaiAKOgAAIAFBqAlqQQQQLCACQQFqIQIMAQsLQecAQecAQaC0wAAQOwALA0AgAgRAIAFB4AlqIgQgASACaiIGQcAHahCuASAGQYAIaiIGIAQQrgEgBiABQegIahBKIAJBQGshAgwBCwsCQAJAAkACQCAIQZwDSQRAIAFBgQhqIANqLAAAIgJBEE8NASAFIAEgAkEGdGoQkAEgA0EBayICQeYASyEEA0AgAkF/Rg0DIAUQTCAFEEwgBRBMIAUQTCAEDQQgAUGBCGogAmotAAAiA0EQSQRAIAUgASADQQZ0ahBKIAJBAWshAgwBCwsgA0EYdEEYdUEQQeC0wAAQOwALIANB5wBBsLTAABA7AAsgAkEQQcC0wAAQOwALIAUQHiABQaAKaiQADAELIAJB5wBB0LTAABA7AAsgACAFEK4BIAdBgAFqJAALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQE2AgAgA0ICNwIMIANB2LjAADYCCCADQQE2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEGYAC2UBAn8gACAAKAIAIgJBCGoiAzYCACAAIAJBA3ZBPHFqQShqIgIgAUH/AXEgAigCAEEIdHI2AgACQAJAIANFBEAgAEEANgIAIAAgACgCBEEBajYCBAwBCyADQf8DcQ0BCyAAEA8LC1wAIABBOBDQASIAQQE2AjggAEFAa0E4ENABGiAAQfgAakEBNgIAIABBgAFqEFEgAEGAAmpBOBDQARogAEG4AmpBATYCACAAQcACakE4ENABGiAAQfgCakEBNgIAC1sBA38jAEGAAWsiASQAIAAQqQEgASAAEJABIAFBQGsiAiAAQUBrIgMQkAEgARBMIAIQTCABIAIQdyABQQAQMyAAIAEQSiABEEMgARBCIAMgARBKIAFBgAFqJAALYQEBfyMAQYACayIDJAAgABA9IAAgARCZASAAQYABaiIBIAIQmQEgAEGAAmoQtwEgABCpASADIAAQOCADQYABaiICIAEQXiACEC0gAiADEHpFBEAgABCbAQsgA0GAAmokAAtUAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqIAJBCGoQDCACQSBqJAALZwAjAEEwayIBJABBpLvAAC0AAARAIAFBHGpBATYCACABQgI3AgwgAUGQtsAANgIIIAFBATYCJCABIAA2AiwgASABQSBqNgIYIAEgAUEsajYCICABQQhqQbi2wAAQZgALIAFBMGokAAtiAgF+An8gACkDACEBA34gACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkEoRgR+IAAgACkDMCABfCIBNwMwIAFCJIcFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLGgt8AQV/IwBBQGoiAyQAIANBCGoiAkHAssAAEEkgAiAAKAI4QQFrEDUiBBAoA0AgAUE4RwRAIAAgAWoiBSABIAJqKQMAIAUpAwB9NwMAIAFBCGohAQwBCwsgAEEBIARBAWp0IgI2AjggAkH///8PSgRAIAAQHgsgA0FAayQAC3sBAn8gAEEoaiECA0AgAUGAAkYEQCAAQufMp9DW0Ouzu383AgggAEIANwIAIABBIGpCq7OP/JGjs/DbADcCACAAQRhqQv+kuYjFkdqCm383AgAgAEEQakLy5rvjo6f9p6V/NwIABSABIAJqQQA2AgAgAUEEaiEBDAELCwtUACAAQTgQ0AEiAEEBNgI4IABBQGtBOBDQARogAEH4AGpBATYCACAAQYABakE4ENABGiAAQbgBakEBNgIAIABBwAFqQTgQ0AEaIABB+AFqQQE2AgALWAECfyMAQUBqIgEkAAJAIAAQhgENACABQQEQOSAAQYABaiICIAEQWA0AIAJBABAzIAAgAhBKIAAQHiAAQUBrIgAgAhBKIAAQHiACIAEQrgELIAFBQGskAAtZAQJ/IwBBgAFrIgEkAAJAIAAQigENACABEFEgAEGAAmoiAiABEHoNACACED4gACACEBEgABC1ASAAQYABaiIAIAIQESAAELUBIAIgARCZAQsgAUGAAWokAAtbAgF+An8gACkDACEBA0AgACACaiIDIAFC//////////8DgzcDACABQjqHIQEgAkHgAEYEQCAAIAApA2ggAXw3A2gFIAJBCGohAiADQQhqKQMAIAF8IQEMAQsLC08BAX8gAEE4ENABGgJAA0AgAkEHRwRAIAJBB0YNAiAAIAEpAwA3AwAgAEEIaiEAIAFBCGohASACQQFqIQIMAQsLDwtBB0EHQeSawAAQOwALVAECfyMAQbABayICJAAgATQCOCAANAI4fkL///8PVQRAIAAQHgsgAkEIaiIDIAAgARAFIAJB+ABqIgEgAxBrIAAgARBqIABBAjYCOCACQbABaiQAC1EBAn8jAEFAaiIDJAAgAEE4ENABIgBBATYCOCAAQUBrQTgQ0AEgAEH4AGpBATYCACADIAEQjgEgACADEK4BIAMgAhCOASADEK4BIANBQGskAAvwDAIRfwh+IwBBsAFrIg8kACAANAI4IhIgEn5C////D1YEQCAAEB4LIwBB0AFrIgEkACAPQQhqIgZBCGpB0AAQ0AEaIAFBwAFqIAApAwAiFyAXQj+HIhYgFyAWEC8gBiABKQPAASISQv//////////A4M3AwAgAUHIAWopAwAiFUIGhiASQjqIhCETIBVCOoghGCAAQQhqIgwhDSAAIQlBASEKQQEhBwJAA0AgCkEERgRAIABBGGohCiAAQRBqIQkgAEEoaiEMIAApAzAhF0EHIQUgAUHIAGohCwNAIAVBC0kEQCABQUBrIAVBA3QiCCAAakEwaykDACISIBJCP4cgFyAXQj+HIhYQLyAFQQFqIg1BAXYhByALKQMAIRUgASkDQCESIAkhAiAMIQQgBUEFayIOIQMDQCADIAdJBEAgASACKQMAIhQgFEI/hyAEKQMAIhQgFEI/hxAvIAEpAwAiFCASfCISIBRUrSABQQhqKQMAIBV8fCEVIAJBCGohAiAEQQhrIQQgA0EBaiEDDAELCyAGIAhqIBJCAYYiFCATfCITQv//////////A4M3AwAgAUEwaiAAIA5BA3RqKQMAIhkgGUI/hyAXIBYQLyATIBRU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aikDADcDACACQQhqIQIMAQsLC4QJAg1/Cn4jAEFAaiILJAAgC0EIaiIJQcCywAAQSSMAQZACayICJAAgAEEwENABIQogAkHoAGpB8AAQ0AEaIAJB4AFqQTAQ0AEaIAoQcSACIAEiDCkDACIQQv3/8//P///5AX5C//////////8DgyISNwPYASACQdgAaiASQgAgCSkDACIXIBdCP4ciGBAvIBAgAikDWCIPfCITIA9UrSACQeAAaikDACAQQj+HfHwiEEI6hyABKQMIIg9CP4d8IA8gEEIGhiATQjqIhCITfCIQIBNUrXwhD0EBIQBCACETAkACQANAAkAgAEEHRgRAQQYhB0EAIQhBByEADAELIABBAXYiAUEBaiEGIAggAWshAyABQQN0IgFBCGohBCAHIAFrIQUgAkHIAGogCSAAQQN0Ig1qKQMAIhUgFUI/hyIWIBJCABAvIAJB0ABqKQMAIBAgECATfCIRVq0gDyAUfHx8IBEgAikDSHwiDyARVK18IRAgAEEBaiEBA0AgACAGTQRAIAJB2AFqIA1qIA9C/f/z/8////kBfkL//////////wODIhE3AwAgAkE4aiARQgAgFyAYEC8gAkEoaiARQgAgFSAWEC8gAkHoAGogAEEEdGoiACACQTBqKQMAIhE3AwggACACKQMoIhU3AwAgDyACKQM4IhZ8Ig8gFlStIAJBQGspAwAgEHx8IhBCOocgDCABQQN0aikDACIWQj+HfCAWIBBCBoYgD0I6iIQiD3wiECAPVK18IQ8gEyAVfCITIBVUrSARIBR8fCEUIAdBCGohByAIQQFqIQggASEADAMLIANBB08NAyACQRhqIAQgCWopAwAgBSAJaikDAH0iESARQj+HIAJB2AFqIg4gBWopAwAgBCAOaikDAH0iESARQj+HEC8gAikDGCIRIA98Ig8gEVStIAJBIGopAwAgEHx8IRAgBkEBaiEGIARBCGohBCAFQQhrIQUgA0EBayEDDAALAAsLA0ACQAJAIABBDUcEQCAHIABBAXYiBmshAyAIIAZBA3QiAWshBCABQQhqIQUgDyAUfCAQIBN8Ig8gEFStfCEQIABBAWohAQNAIAZBBUsNAyADQQdPDQIgAkEIaiAFIAlqKQMAIAQgCWpBMGopAwB9IhIgEkI/hyACIARqQYgCaikDACACQdgBaiAFaikDAH0iEiASQj+HEC8gAikDCCISIA98Ig8gElStIAJBEGopAwAgEHx8IRAgBkEBaiEGIARBCGshBCADQQFrIQMgBUEIaiEFDAALAAsgCiAQQv//////////A4M3AzAgAkGQAmokAAwECyADQQdBpJzAABA7AAsgAEEDdCAKakE4ayAPQv//////////A4M3AwAgEEI6hyAMIAFBA3RqKQMAIhJCP4d8IBIgEEIGhiAPQjqIhCIPfCIQIA9UrXwhDyAUIABBBHQgAmpBCGoiAEEIaikDAH0gEyAAKQMAIhJUrX0hFCAIQQhqIQggB0EBaiEHIBMgEn0hEyABIQAMAAsACyADQQdBlJzAABA7AAsgC0FAayQACy4BAX8jAEGAAWsiASQAIAAQRSABEFEgACABEJkBIABBgAFqELYBIAFBgAFqJAALMwAgACABEJYBIABBgAJqIAFBgAJqEJYBIABBgARqIAFBgARqEJYBIAAgASgCgAY2AoAGCygAIAAgASACEHIgAEFAayABQUBrIAIQciAAQYABaiABQYABaiACEHILLQAgACABIAIQjQEgAEGAAWogAUGAAWogAhCNASAAQYACaiABQYACaiACEI0BCycBAn8jAEFAaiICJAAgAkEIaiIDIAEQvgEgACADEI4BIAJBQGskAAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCyUAIAAgASACEDAgAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLJwAgACAAKAIEQQFxIAFyQQJyNgIEIAAgAWoiACAAKAIEQQFyNgIECyMAA0AgAgRAIAAgAS0AABA8IAJBAWshAiABQQFqIQEMAQsLCywAIAAQiwEgACABEJYBIABBgAJqIAIQlgEgAEGABGogAxCWASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEJABIAEQHiABEFcgAUFAayQACykAIAAgARBgIAAgACgCOCABKAI4aiIBNgI4IAFB////D0oEQCAAEB4LCyUAIAAgARCuASAAQUBrIAFBQGsQrgEgAEGAAWogAUGAAWoQrgELKAEBfyMAQYACayICJAAgAiABEIwBIAIQKyAAIAIQlwEgAkGAAmokAAscAQF/IAAgARBYBH8gAEFAayABQUBrEFgFQQALCycBAX8jAEGAAWsiAiQAIAIg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DCELDQALCyAMpyICQeMASwRAIABBAmsiACAGQQlqaiAMpyICIAJB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRB6LjAAGovAAA7AAALAkAgAkEKTwRAIABBAmsiACAGQQlqaiACQQF0Qei4wABqLwAAOwAADAELIABBAWsiACAGQQlqaiACQTBqOgAACwJ/IAZBCWogAGohCEErQYCAxAAgASgCACIDQQFxIgIbIQQgAkEnIABrIglqIQJBlLjAAEEAIANBBHEbIQUCQAJAIAEoAghFBEBBASEAIAEgBCAFEFINAQwCCwJAAkACQAJAIAIgAUEMaigCACIDSQRAIAEtAABBCHENBEEAIQAgAyACayICIQNBASABLQAgIgcgB0EDRhtBA3FBAWsOAgECAwtBASEAIAEgBCAFEFINBAwFC0EAIQMgAiEADAELIAJBAXYhACACQQFqQQF2IQMLIABBAWohACABQRxqKAIAIQcgASgCBCECIAEoAhghCgJAA0AgAEEBayIARQ0BIAogAiAHKAIQEQQARQ0AC0EBDAQLQQEhACACQYCAxABGDQEgASAEIAUQUg0BIAEoAhggCCAJIAEoAhwoAgwRBQANASABKAIcIQQgASgCGCEBQQAhAAJ/A0AgAyAAIANGDQEaIABBAWohACABIAIgBCgCEBEEAEUNAAsgAEEBawsgA0khAAwBCyABKAIEIQcgAUEwNgIEIAEtACAhCkEBIQAgAUEBOgAgIAEgBCAFEFINAEEAIQAgAyACayICIQMCQAJAAkBBASABLQAgIgQgBEEDRhtBA3FBAWsOAgABAgtBACEDIAIhAAwBCyACQQF2IQAgAkEBakEBdiEDCyAAQQFqIQAgAUEcaigCACECIAEoAgQhBCABKAIYIQUCQANAIABBAWsiAEUNASAFIAQgAigCEBEEAEUNAAtBAQwDC0EBIQAgBEGAgMQARg0AIAEoAhggCCAJIAEoAhwoAgwRBQANACABKAIcIQAgASgCGCEFQQAhAgJAA0AgAiADRg0BIAJBAWohAiAFIAQgACgCEBEEAEUNAAtBASEAIAJBAWsgA0kNAQsgASAKOgAgIAEgBzYCBEEADAILIAAMAQsgASgCGCAIIAkgAUEcaigCACgCDBEFAAsgBkEwaiQACwsAIAAQNiAAELABCysCAX8BfkIBIQIDQCAAIAFq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AAANAEHgs8AAC8EHYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93ALAZEAASAAAADAIAAA0AAACwGRAAEgAAABgCAAAmAAAAsBkQABIAAAAYAgAAIwAAALAZEAASAAAAHgIAABcAAACwGRAAEgAAAB4CAAAUAAAAqqr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAAADAAAABAAAAAQAAAAEAAAABQAAAAYAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAoAAOsaEAAVAAAAABsQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnMgGxAAGAAAAEkBAAAJAAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc0gbEAAcAAAARgIAAB8AAABIGxAAHAAAAEcCAAAeAAAABwAAAAwAAAAEAAAACAAAAAMAAAAIAAAABAAAAAkAAAAKAAAAEAAAAAQAAAALAAAADAAAAAMAAAAIAAAABAAAAA0AAAAOAAAAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93AAAA6BsQABEAAADMGxAAHAAAAAUCAAAFAAAAEAAAAAAAAAABAAAAEQAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAkHBAAIAAAAEQcEAASAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5yc3JhbmdlIGVuZCBpbmRleCAAAABxHRAAEAAAADAdEAAiAAAAUh0QAB8AAABJAAAABQB7CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42MS4wIChmZTViMTNkNjggMjAyMi0wNS0xOCkGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4SMC4yLjgxICgwNjJhYTVmNzAp`;\n","import { PipeArrayBuffer, lebDecode } from '@dfinity/candid';\n\nexport const decodeLeb128 = (buf: ArrayBuffer): bigint => {\n return lebDecode(new PipeArrayBuffer(buf));\n};\n\n// time is a LEB128-encoded Nat\nexport const decodeTime = (buf: ArrayBuffer): Date => {\n const decoded = decodeLeb128(buf);\n\n // nanoseconds to milliseconds\n return new Date(Number(decoded) / 1_000_000);\n};\n","require('./helpers/bundle-manifest').register(JSON.parse(\"{\\\"4d2VJ\\\":\\\"index.fa82552e.js\\\",\\\"2GjZc\\\":\\\"logo2.b0e3e9ca.svg\\\",\\\"1oTUQ\\\":\\\"Logo-Bulldog-Blast.369f2611.svg\\\",\\\"2q1kL\\\":\\\"Logo-OptiGames-KO.356dbf95.svg\\\",\\\"1siNr\\\":\\\"green.1e2aa865.png\\\",\\\"hzj8B\\\":\\\"orange.54273906.png\\\",\\\"doqUQ\\\":\\\"red.f0b05b7c.png\\\",\\\"akJkx\\\":\\\"violet.593b74c7.png\\\",\\\"gPH4W\\\":\\\"green01.7ae4d590.png\\\",\\\"gpGys\\\":\\\"orange01.730083c4.png\\\",\\\"hN7EI\\\":\\\"red01.fb8c5df3.png\\\",\\\"6j6lb\\\":\\\"violet01.6e6b6267.png\\\",\\\"fcTmW\\\":\\\"GREEN.f12078cc.svg\\\",\\\"hgK51\\\":\\\"ORANGE.1b65dfdd.svg\\\",\\\"8GJJy\\\":\\\"RED.f50e46bd.svg\\\",\\\"5pY8x\\\":\\\"VIOLET.99e50744.svg\\\",\\\"bXitF\\\":\\\"index.4e729e14.css\\\"}\"));","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"2GjZc\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"1oTUQ\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"2q1kL\")).toString();","import { Principal } from '@dfinity/principal';\nimport { RequestId } from '../request_id';\nimport { JsonObject } from '@dfinity/candid';\nimport { Identity } from '../auth';\nimport { HttpHeaderField } from './http/types';\n\n/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport enum ReplicaRejectCode {\n SysFatal = 1,\n SysTransient = 2,\n DestinationInvalid = 3,\n CanisterReject = 4,\n CanisterError = 5,\n}\n\n/**\n * Options when doing a {@link Agent.readState} call.\n */\nexport interface ReadStateOptions {\n /**\n * A list of paths to read the state of.\n */\n paths: ArrayBuffer[][];\n}\n\n/**\n *\n */\nexport type QueryResponse = QueryResponseReplied | QueryResponseRejected;\n\nexport const enum QueryResponseStatus {\n Replied = 'replied',\n Rejected = 'rejected',\n}\n\nexport interface HttpDetailsResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: HttpHeaderField[];\n}\n\nexport type ApiQueryResponse = QueryResponse & {\n httpDetails: HttpDetailsResponse;\n requestId: RequestId;\n};\n\nexport interface QueryResponseBase {\n status: QueryResponseStatus;\n}\n\nexport type NodeSignature = {\n // the batch time\n timestamp: bigint;\n // the signature\n signature: Uint8Array;\n // the ID of the node that created the signature\n identity: Uint8Array;\n};\n\nexport interface QueryResponseReplied extends QueryResponseBase {\n status: QueryResponseStatus.Replied;\n reply: { arg: ArrayBuffer };\n signatures?: NodeSignature[];\n}\n\nexport interface QueryResponseRejected extends QueryResponseBase {\n status: QueryResponseStatus.Rejected;\n reject_code: ReplicaRejectCode;\n reject_message: string;\n error_code: string;\n signatures?: NodeSignature[];\n}\n\n/**\n * Options when doing a {@link Agent.query} call.\n */\nexport interface QueryFields {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n}\n\n/**\n * Options when doing a {@link Agent.call} call.\n */\nexport interface CallOptions {\n /**\n * The method name to call.\n */\n methodName: string;\n\n /**\n * A binary encoded argument. This is already encoded and will be sent as is.\n */\n arg: ArrayBuffer;\n\n /**\n * An effective canister ID, used for routing. This should only be mentioned if\n * it's different from the canister ID.\n */\n effectiveCanisterId: Principal | string;\n}\n\nexport interface ReadStateResponse {\n certificate: ArrayBuffer;\n}\n\nexport interface SubmitResponse {\n requestId: RequestId;\n response: {\n ok: boolean;\n status: number;\n statusText: string;\n body: {\n error_code?: string;\n reject_code: number;\n reject_message: string;\n } | null;\n headers: HttpHeaderField[];\n };\n}\n\n/**\n * An Agent able to make calls and queries to a Replica.\n */\nexport interface Agent {\n readonly rootKey: ArrayBuffer | null;\n /**\n * Returns the principal ID associated with this agent (by default). It only shows\n * the principal of the default identity in the agent, which is the principal used\n * when calls don't specify it.\n */\n getPrincipal(): Promise;\n\n /**\n * Create the request for the read state call.\n * `readState` uses this internally.\n * Useful to avoid signing the same request multiple times.\n */\n createReadStateRequest?(\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise;\n\n /**\n * Send a read state query to the replica. This includes a list of paths to return,\n * and will return a Certificate. This will only reject on communication errors,\n * but the certificate might contain less information than requested.\n * @param effectiveCanisterId A Canister ID related to this call.\n * @param options The options for this call.\n * @param identity Identity for the call. If not specified, uses the instance identity.\n * @param request The request to send in case it has already been created.\n */\n readState(\n effectiveCanisterId: Principal | string,\n options: ReadStateOptions,\n identity?: Identity,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n request?: any,\n ): Promise;\n\n call(canisterId: Principal | string, fields: CallOptions): Promise;\n\n /**\n * Query the status endpoint of the replica. This normally has a few fields that\n * corresponds to the version of the replica, its root public key, and any other\n * information made public.\n * @returns A JsonObject that is essentially a record of fields from the status\n * endpoint.\n */\n status(): Promise;\n\n /**\n * Send a query call to a canister. See\n * {@link https://sdk.dfinity.org/docs/interface-spec/#http-query | the interface spec}.\n * @param canisterId The Principal of the Canister to send the query to. Sending a query to\n * the management canister is not supported (as it has no meaning from an agent).\n * @param options Options to use to create and send the query.\n * @param identity Sender principal to use when sending the query.\n * @returns The response from the replica. The Promise will only reject when the communication\n * failed. If the query itself failed but no protocol errors happened, the response will\n * be of type QueryResponseRejected.\n */\n query(\n canisterId: Principal | string,\n options: QueryFields,\n identity?: Identity | Promise,\n ): Promise;\n\n /**\n * By default, the agent is configured to talk to the main Internet Computer,\n * and verifies responses using a hard-coded public key.\n *\n * This function will instruct the agent to ask the endpoint for its public\n * key, and use that instead. This is required when talking to a local test\n * instance, for example.\n *\n * Only use this when you are _not_ talking to the main Internet Computer,\n * otherwise you are prone to man-in-the-middle attacks! Do not call this\n * function by default.\n */\n fetchRootKey(): Promise;\n /**\n * If an application needs to invalidate an identity under certain conditions, an `Agent` may expose an `invalidateIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to `null`.\n *\n * A use case for this would be - after a certain period of inactivity, a secure application chooses to invalidate the identity of any `HttpAgent` instances. An invalid identity can be replaced by `Agent.replaceIdentity`\n */\n invalidateIdentity?(): void;\n /**\n * If an application needs to replace an identity under certain conditions, an `Agent` may expose a `replaceIdentity` method.\n * Invoking this method will set the inner identity used by the `Agent` to a newly provided identity.\n *\n * A use case for this would be - after authenticating using `@dfinity/auth-client`, you can replace the `AnonymousIdentity` of your `Actor` with a `DelegationIdentity`.\n *\n * ```Actor.agentOf(defaultActor).replaceIdentity(await authClient.getIdentity());```\n */\n replaceIdentity?(identity: Identity): void;\n}\n","import { Principal } from '@dfinity/principal';\nimport { HttpAgentRequest } from './agent/http/types';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\n/**\n * A Key Pair, containing a secret and public key.\n */\nexport interface KeyPair {\n secretKey: ArrayBuffer;\n publicKey: PublicKey;\n}\n\n/**\n * A public key that is DER encoded. This is a branded ArrayBuffer.\n */\nexport type DerEncodedPublicKey = ArrayBuffer & { __derEncodedPublicKey__?: void };\n\n/**\n * A signature array buffer.\n */\nexport type Signature = ArrayBuffer & { __signature__: void };\n\n/**\n * A Public Key implementation.\n */\nexport interface PublicKey {\n toDer(): DerEncodedPublicKey;\n // rawKey, toRaw, and derKey are optional for backwards compatibility.\n toRaw?(): ArrayBuffer;\n rawKey?: ArrayBuffer;\n derKey?: DerEncodedPublicKey;\n}\n\n/**\n * A General Identity object. This does not have to be a private key (for example,\n * the Anonymous identity), but it must be able to transform request.\n */\nexport interface Identity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal(): Principal;\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n */\n transformRequest(request: HttpAgentRequest): Promise;\n}\n\n/**\n * An Identity that can sign blobs.\n */\nexport abstract class SignIdentity implements Identity {\n protected _principal: Principal | undefined;\n\n /**\n * Returns the public key that would match this identity's signature.\n */\n public abstract getPublicKey(): PublicKey;\n\n /**\n * Signs a blob of data, with this identity's private key.\n */\n public abstract sign(blob: ArrayBuffer): Promise;\n\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n public getPrincipal(): Principal {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n public async transformRequest(request: HttpAgentRequest): Promise {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n },\n };\n }\n}\n\nexport class AnonymousIdentity implements Identity {\n public getPrincipal(): Principal {\n return Principal.anonymous();\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise {\n return {\n ...request,\n body: { content: request.body },\n };\n }\n}\n\n/*\n * We need to communicate with other agents on the page about identities,\n * but those messages may need to go across boundaries where it's not possible to\n * serialize/deserialize object prototypes easily.\n * So these are lightweight, serializable objects that contain enough information to recreate\n * SignIdentities, but don't commit to having all methods of SignIdentity.\n *\n * Use Case:\n * * DOM Events that let differently-versioned components communicate to one another about\n * Identities, even if they're using slightly different versions of agent packages to\n * create/interpret them.\n */\nexport interface AnonymousIdentityDescriptor {\n type: 'AnonymousIdentity';\n}\nexport interface PublicKeyIdentityDescriptor {\n type: 'PublicKeyIdentity';\n publicKey: string;\n}\nexport type IdentityDescriptor = AnonymousIdentityDescriptor | PublicKeyIdentityDescriptor;\n\n/**\n * Create an IdentityDescriptor from a @dfinity/identity Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(\n identity: SignIdentity | AnonymousIdentity,\n): IdentityDescriptor {\n const identityIndicator: IdentityDescriptor =\n 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport {\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpHeaderField,\n makeNonce,\n Nonce,\n} from './types';\n\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1_000_000);\n\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = 60 * 1000;\n\nexport class Expiry {\n private readonly _value: bigint;\n\n constructor(deltaInMSec: number) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n const raw_value =\n BigInt(Math.floor(Date.now() + deltaInMSec - REPLICA_PERMITTED_DRIFT_MILLISECONDS)) *\n NANOSECONDS_PER_MILLISECONDS;\n\n // round down to the nearest second\n const ingress_as_seconds = raw_value / BigInt(1_000_000_000);\n\n // round down to nearest minute\n const ingress_as_minutes = ingress_as_seconds / BigInt(60);\n\n const rounded_down_nanos = ingress_as_minutes * BigInt(60) * BigInt(1_000_000_000);\n\n this._value = rounded_down_nanos;\n }\n\n public toCBOR(): cbor.CborValue {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n\n public toHash(): ArrayBuffer {\n return lebEncode(this._value);\n }\n}\n\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn: () => Nonce = makeNonce): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n // Nonce needs to be inserted into the header for all requests, to enable logs to be correlated with requests.\n const headers = request.request.headers;\n // TODO: uncomment this when the http proxy supports it.\n // headers.set('X-IC-Request-ID', toHex(new Uint8Array(nonce)));\n request.request.headers = headers;\n\n // Nonce only needs to be inserted into the body for async calls, to prevent replay attacks.\n if (request.endpoint === Endpoint.Call) {\n request.body.nonce = nonceFn();\n }\n };\n}\n\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds: number): HttpAgentRequestTransformFn {\n return async (request: HttpAgentRequest) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n\n/**\n * Maps the default fetch headers field to the serializable HttpHeaderField.\n *\n * @param headers Fetch definition of the headers type\n * @returns array of header fields\n */\nexport function httpHeadersTransform(headers: Headers): HttpHeaderField[] {\n const headerFields: HttpHeaderField[] = [];\n headers.forEach((value, key) => {\n headerFields.push([key, value]);\n });\n return headerFields;\n}\n","/**\n * Generates a random unsigned 32-bit integer between 0 and 0xffffffff\n * @returns {number} a random number\n */\nexport const randomNumber = (): number => {\n // determine whether browser crypto is available\n if (typeof window !== 'undefined' && !!window.crypto && !!window.crypto.getRandomValues) {\n const array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return array[0];\n }\n // A second check for webcrypto, in case it is loaded under global instead of window\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return array[0];\n }\n\n type nodeCrypto = {\n randomInt: (min: number, max: number) => number;\n };\n\n // determine whether node crypto is available\n if (typeof crypto !== 'undefined' && (crypto as unknown as nodeCrypto).randomInt) {\n return (crypto as unknown as nodeCrypto).randomInt(0, 0xffffffff);\n }\n\n // fall back to Math.random\n return Math.floor(Math.random() * 0xffffffff);\n};\n","import type { Principal } from '@dfinity/principal';\nimport { Expiry } from './transforms';\nimport { randomNumber } from '../../utils/random';\n\n/**\n * @internal\n */\nexport const enum Endpoint {\n Query = 'read',\n ReadState = 'read_state',\n Call = 'call',\n}\n\n// An HttpAgent request, before it gets encoded and sent to the server.\n// We create an empty request that we will fill later.\nexport type HttpAgentRequest =\n | HttpAgentQueryRequest\n | HttpAgentSubmitRequest\n | HttpAgentReadStateRequest;\n\nexport interface HttpAgentBaseRequest {\n readonly endpoint: Endpoint;\n request: RequestInit;\n}\n\nexport type HttpHeaderField = [string, string];\n\nexport interface HttpAgentSubmitRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Call;\n body: CallRequest;\n}\n\nexport interface HttpAgentQueryRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.Query;\n body: ReadRequest;\n}\n\nexport interface HttpAgentReadStateRequest extends HttpAgentBaseRequest {\n readonly endpoint: Endpoint.ReadState;\n body: ReadRequest;\n}\n\nexport interface Signed {\n content: T;\n sender_pubkey: ArrayBuffer;\n sender_sig: ArrayBuffer;\n}\n\nexport interface UnSigned {\n content: T;\n}\n\nexport type Envelope = Signed | UnSigned;\n\nexport interface HttpAgentRequestTransformFn {\n (args: HttpAgentRequest): Promise;\n priority?: number;\n}\n\n// The fields in a \"call\" submit request.\nexport interface CallRequest extends Record {\n request_type: SubmitRequestType.Call;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n\n// The types of values allowed in the `request_type` field for submit requests.\nexport enum SubmitRequestType {\n Call = 'call',\n}\n\n// The types of values allowed in the `request_type` field for read requests.\nexport const enum ReadRequestType {\n Query = 'query',\n ReadState = 'read_state',\n}\n\n// The fields in a \"query\" read request.\nexport interface QueryRequest extends Record {\n request_type: ReadRequestType.Query;\n canister_id: Principal;\n method_name: string;\n arg: ArrayBuffer;\n sender: Uint8Array | Principal;\n ingress_expiry: Expiry;\n}\n\nexport interface ReadStateRequest extends Record {\n request_type: ReadRequestType.ReadState;\n paths: ArrayBuffer[][];\n ingress_expiry: Expiry;\n sender: Uint8Array | Principal;\n}\n\nexport type ReadRequest = QueryRequest | ReadStateRequest;\n\n// A Nonce that can be used for calls.\nexport type Nonce = Uint8Array & { __nonce__: void };\n\n/**\n * Create a random Nonce, based on random values\n */\nexport function makeNonce(): Nonce {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const rand1 = randomNumber();\n const rand2 = randomNumber();\n const rand3 = randomNumber();\n const rand4 = randomNumber();\n\n view.setUint32(0, rand1);\n view.setUint32(4, rand2);\n view.setUint32(8, rand3);\n view.setUint32(12, rand4);\n\n return buffer as Nonce;\n}\n","import { AgentError } from '../../errors';\nimport { HttpDetailsResponse } from '../api';\n\nexport class AgentHTTPResponseError extends AgentError {\n constructor(message: string, public readonly response: HttpDetailsResponse) {\n super(message);\n this.name = this.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x6a09e667 | 0;\n Al = 0xf3bcc908 | 0;\n Bh = 0xbb67ae85 | 0;\n Bl = 0x84caa73b | 0;\n Ch = 0x3c6ef372 | 0;\n Cl = 0xfe94f82b | 0;\n Dh = 0xa54ff53a | 0;\n Dl = 0x5f1d36f1 | 0;\n Eh = 0x510e527f | 0;\n El = 0xade682d1 | 0;\n Fh = 0x9b05688c | 0;\n Fl = 0x2b3e6c1f | 0;\n Gh = 0x1f83d9ab | 0;\n Gl = 0xfb41bd6b | 0;\n Hh = 0x5be0cd19 | 0;\n Hl = 0x137e2179 | 0;\n\n constructor() {\n super(128, 64, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\nclass SHA512_224 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x8c3d37c8 | 0;\n Al = 0x19544da2 | 0;\n Bh = 0x73e19966 | 0;\n Bl = 0x89dcd4d6 | 0;\n Ch = 0x1dfab7ae | 0;\n Cl = 0x32ff9c82 | 0;\n Dh = 0x679dd514 | 0;\n Dl = 0x582f9fcf | 0;\n Eh = 0x0f6d2b69 | 0;\n El = 0x7bd44da8 | 0;\n Fh = 0x77e36f73 | 0;\n Fl = 0x04c48942 | 0;\n Gh = 0x3f9d85a8 | 0;\n Gl = 0x6a1d36c8 | 0;\n Hh = 0x1112e6ad | 0;\n Hl = 0x91d692a1 | 0;\n\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\nclass SHA512_256 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0x22312194 | 0;\n Al = 0xfc2bf72c | 0;\n Bh = 0x9f555fa3 | 0;\n Bl = 0xc84c64c2 | 0;\n Ch = 0x2393b86b | 0;\n Cl = 0x6f53b151 | 0;\n Dh = 0x96387719 | 0;\n Dl = 0x5940eabd | 0;\n Eh = 0x96283ee2 | 0;\n El = 0xa88effe3 | 0;\n Fh = 0xbe5e1e25 | 0;\n Fl = 0x53863992 | 0;\n Gh = 0x2b0199fc | 0;\n Gl = 0x2c85b8aa | 0;\n Hh = 0x0eb72ddc | 0;\n Hl = 0x81c52ca2 | 0;\n\n constructor() {\n super();\n this.outputLen = 32;\n }\n}\n\nclass SHA384 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n Ah = 0xcbbb9d5d | 0;\n Al = 0xc1059ed8 | 0;\n Bh = 0x629a292a | 0;\n Bl = 0x367cd507 | 0;\n Ch = 0x9159015a | 0;\n Cl = 0x3070dd17 | 0;\n Dh = 0x152fecd8 | 0;\n Dl = 0xf70e5939 | 0;\n Eh = 0x67332667 | 0;\n El = 0xffc00b31 | 0;\n Fh = 0x8eb44a87 | 0;\n Fl = 0x68581511 | 0;\n Gh = 0xdb0c2e0d | 0;\n Gl = 0x64f98fa7 | 0;\n Hh = 0x47b5481d | 0;\n Hl = 0xbefa4fa4 | 0;\n\n constructor() {\n super();\n this.outputLen = 48;\n }\n}\n\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n } else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a)) throw new Error('Uint8Array expected');\n sum += a.length;\n }\n let res = new Uint8Array(sum);\n let pad = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array) {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number) {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n: bigint, pos: number, value: boolean) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number) => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any) => typeof val === 'bigint',\n function: (val: any) => typeof val === 'function',\n boolean: (val: any) => typeof val === 'boolean',\n string: (val: any) => typeof val === 'string',\n stringOrUint8Array: (val: any) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val: any) => Number.isSafeInteger(val),\n array: (val: any) => Array.isArray(val),\n field: (val: any, object: any) => (object as any).Fp.isValid(val),\n hash: (val: any) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n) {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n `Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport {\n bitMask,\n numberToBytesBE,\n numberToBytesLE,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n validateObject,\n} from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (modulo <= _0n || power < _0n) throw new Error('Expected power/modulo > 0');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n// Inverses number over modulo\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++);\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\nexport function FpSqrt(P: bigint) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp: IField, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint) => (mod(num, modulo) & _1n) === _1n;\n\n// Field is not always over prime: for example, Fp2 has ORDER(q)=p^m\nexport interface IField {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField(field: IField) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f: IField, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('Expected power > 0');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f: IField, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv(f: IField, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f: IField) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x: T): boolean => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial> = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f: Readonly = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { IField, validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper = (i: T[]) => T[];\n\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF>(c: GroupConstructor, bits: number) {\n const constTimeNegate = (condition: boolean, item: T): T => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W: number) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint) {\n let p = c.ZERO;\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group[] {\n const { windows, windowSize } = opts(W);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n wNAFCached(P: T, precomputesMap: Map, n: bigint, transform: Mapper): { p: T; f: T } {\n // @ts-ignore\n const W: number = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\n\n// Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n// Though generator can be different (Fp2 / Fp6 for BLS).\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic(curve: BasicCurve & T) {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²\nimport { mod } from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes, FHash, Hex } from './utils.js';\nimport { Group, GroupConstructor, wNAF, BasicCurve, validateBasic, AffinePoint } from './curve.js';\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n\n// Edwards curves must declare params a & d.\nexport type CurveType = BasicCurve & {\n a: bigint; // curve param a\n d: bigint; // curve param d\n hash: FHash; // Hashing\n randomBytes: (bytesLength?: number) => Uint8Array; // CSPRNG\n adjustScalarBytes?: (bytes: Uint8Array) => Uint8Array; // clears bits to get valid field elemtn\n domain?: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array; // Used for hashing\n uvRatio?: (u: bigint, v: bigint) => { isValid: boolean; value: bigint }; // Ratio √(u/v)\n prehash?: FHash; // RFC 8032 pre-hashing of messages to sign() / verify()\n mapToCurve?: (scalar: bigint[]) => AffinePoint; // for hash-to-curve standard\n};\n\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\n\nfunction validateOpts(curve: CurveType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n curve,\n {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n },\n {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n }\n );\n // Set defaults\n return Object.freeze({ ...opts } as const);\n}\n\n// Instance of Extended Point with coordinates in X, Y, Z, T\nexport interface ExtPointType extends Group {\n readonly ex: bigint;\n readonly ey: bigint;\n readonly ez: bigint;\n readonly et: bigint;\n get x(): bigint;\n get y(): bigint;\n assertValidity(): void;\n multiply(scalar: bigint): ExtPointType;\n multiplyUnsafe(scalar: bigint): ExtPointType;\n isSmallOrder(): boolean;\n isTorsionFree(): boolean;\n clearCofactor(): ExtPointType;\n toAffine(iz?: bigint): AffinePoint;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n}\n// Static methods of Extended Point with coordinates in X, Y, Z, T\nexport interface ExtPointConstructor extends GroupConstructor {\n new (x: bigint, y: bigint, z: bigint, t: bigint): ExtPointType;\n fromAffine(p: AffinePoint): ExtPointType;\n fromHex(hex: Hex): ExtPointType;\n fromPrivateKey(privateKey: Hex): ExtPointType;\n}\n\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: Hex) => Uint8Array;\n sign: (message: Hex, privateKey: Hex, options?: { context?: Hex }) => Uint8Array;\n verify: (\n sig: Hex,\n message: Hex,\n publicKey: Hex,\n options?: { context?: Hex; zip215: boolean }\n ) => boolean;\n ExtendedPoint: ExtPointConstructor;\n utils: {\n randomPrivateKey: () => Uint8Array;\n getExtendedPublicKey: (key: Hex) => {\n head: Uint8Array;\n prefix: Uint8Array;\n scalar: bigint;\n point: ExtPointType;\n pointBytes: Uint8Array;\n };\n };\n};\n\n// It is not generic twisted curve for now, but ed25519/ed448 generic implementation\nexport function twistedEdwards(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const {\n Fp,\n n: CURVE_ORDER,\n prehash: prehash,\n hash: cHash,\n randomBytes,\n nByteLength,\n h: cofactor,\n } = CURVE;\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n\n // sqrt(u/v)\n const uvRatio =\n CURVE.uvRatio ||\n ((u: bigint, v: bigint) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n } catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes: Uint8Array) => bytes); // NOOP\n const domain =\n CURVE.domain ||\n ((data: Uint8Array, ctx: Uint8Array, phflag: boolean) => {\n if (ctx.length || phflag) throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n const inBig = (n: bigint) => typeof n === 'bigint' && _0n < n; // n in [1..]\n const inRange = (n: bigint, max: bigint) => inBig(n) && inBig(max) && n < max; // n in [1..max-1]\n const in0MaskRange = (n: bigint) => n === _0n || inRange(n, MASK); // n in [0..MASK-1]\n function assertInRange(n: bigint, max: bigint) {\n // n in [1..max-1]\n if (inRange(n, max)) return n;\n throw new Error(`Expected valid scalar < ${max}, got ${typeof n} ${n}`);\n }\n function assertGE0(n: bigint) {\n // n in [0..CURVE_ORDER-1]\n return n === _0n ? n : assertInRange(n, CURVE_ORDER); // GE = prime subgroup, not full group\n }\n const pointPrecomputes = new Map();\n function isPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ExtendedPoint expected');\n }\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point implements ExtPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n static readonly ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n\n constructor(\n readonly ex: bigint,\n readonly ey: bigint,\n readonly ez: bigint,\n readonly et: bigint\n ) {\n if (!in0MaskRange(ex)) throw new Error('x required');\n if (!in0MaskRange(ey)) throw new Error('y required');\n if (!in0MaskRange(ez)) throw new Error('z required');\n if (!in0MaskRange(et)) throw new Error('t required');\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n static fromAffine(p: AffinePoint): Point {\n if (p instanceof Point) throw new Error('extended point not allowed');\n const { x, y } = p || {};\n if (!in0MaskRange(x) || !in0MaskRange(y)) throw new Error('invalid affine point');\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n _WINDOW_SIZE?: number;\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity(): void {\n const { a, d } = CURVE;\n if (this.is0()) throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = this;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right) throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT) throw new Error('bad point: equation left != right (2)');\n }\n\n // Compare one point to another.\n equals(other: Point): boolean {\n isPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n\n protected is0(): boolean {\n return this.equals(Point.ZERO);\n }\n\n negate(): Point {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double(): Point {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other: Point) {\n isPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n) return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n\n return new Point(X3, Y3, Z3, T3);\n }\n\n subtract(other: Point): Point {\n return this.add(other.negate());\n }\n\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, pointPrecomputes, n, Point.normalizeZ);\n }\n\n // Constant-time multiplication.\n multiply(scalar: bigint): Point {\n const { p, f } = this.wNAF(assertInRange(scalar, CURVE_ORDER));\n return Point.normalizeZ([p, f])[0];\n }\n\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n multiplyUnsafe(scalar: bigint): Point {\n let n = assertGE0(scalar); // 0 <= scalar < CURVE.n\n if (n === _0n) return I;\n if (this.equals(I) || n === _1n) return this;\n if (this.equals(G)) return this.wNAF(n).p;\n return wnaf.unsafeLadder(this, n);\n }\n\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder(): boolean {\n return this.multiplyUnsafe(cofactor).is0();\n }\n\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree(): boolean {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz?: bigint): AffinePoint {\n const { ex: x, ey: y, ez: z } = this;\n const is0 = this.is0();\n if (iz == null) iz = is0 ? _8n : (Fp.inv(z) as bigint); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0) return { x: _0n, y: _1n };\n if (zz !== _1n) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n\n clearCofactor(): Point {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n) return this;\n return this.multiplyUnsafe(cofactor);\n }\n\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex: Hex, zip215 = false): Point {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n if (y === _0n) {\n // y=0 is allowed\n } else {\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n if (zip215) assertInRange(y, MASK); // zip215=true [1..P-1] (2^255-19-1 for ed25519)\n else assertInRange(y, Fp.ORDER); // zip215=false [1..MASK-1] (2^256-1 for ed25519)\n }\n\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid) throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd) x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey: Hex) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes(): Uint8Array {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex(): string {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n\n function modN(a: bigint) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash: Uint8Array): bigint {\n return modN(ut.bytesToNumberLE(hash));\n }\n\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key: Hex) {\n const len = nByteLength;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey: Hex): Uint8Array {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context: Hex = new Uint8Array(), ...msgs: Uint8Array[]) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg: Hex, privKey: Hex, options: { context?: Hex } = {}): Uint8Array {\n msg = ensureBytes('message', msg);\n if (prehash) msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n assertGE0(s); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, nByteLength * 2); // 64-byte signature\n }\n\n const verifyOpts: { context?: Hex; zip215?: boolean } = VERIFY_DEFAULT;\n function verify(sig: Hex, msg: Hex, publicKey: Hex, options = verifyOpts): boolean {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n if (prehash) msg = prehash(msg); // for ed25519ph, etc\n\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n // zip215: true is good for consensus-critical apps and allows points < 2^256\n // zip215: false follows RFC8032 / NIST186-5 and restricts points to CURVE.p\n let A, R, SB;\n try {\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n } catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder()) return false;\n\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: (): Uint8Array => randomBytes(Fp.BYTES),\n\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { mod, pow } from './modular.js';\nimport { bytesToNumberLE, ensureBytes, numberToBytesLE, validateObject } from './utils.js';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\ntype Hex = string | Uint8Array;\n\nexport type CurveType = {\n P: bigint; // finite field prime\n nByteLength: number;\n adjustScalarBytes?: (bytes: Uint8Array) => Uint8Array;\n domain?: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array;\n a: bigint;\n montgomeryBits: number;\n powPminus2?: (x: bigint) => bigint;\n xyToU?: (x: bigint, y: bigint) => bigint;\n Gu: bigint;\n randomBytes?: (bytesLength?: number) => Uint8Array;\n};\nexport type CurveFn = {\n scalarMult: (scalar: Hex, u: Hex) => Uint8Array;\n scalarMultBase: (scalar: Hex) => Uint8Array;\n getSharedSecret: (privateKeyA: Hex, publicKeyB: Hex) => Uint8Array;\n getPublicKey: (privateKey: Hex) => Uint8Array;\n utils: { randomPrivateKey: () => Uint8Array };\n GuBytes: Uint8Array;\n};\n\nfunction validateOpts(curve: CurveType) {\n validateObject(\n curve,\n {\n a: 'bigint',\n },\n {\n montgomeryBits: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n adjustScalarBytes: 'function',\n domain: 'function',\n powPminus2: 'function',\n Gu: 'bigint',\n }\n );\n // Set defaults\n return Object.freeze({ ...curve } as const);\n}\n\n// NOTE: not really montgomery curve, just bunch of very specific methods for X25519/X448 (RFC 7748, https://www.rfc-editor.org/rfc/rfc7748)\n// Uses only one coordinate instead of two\nexport function montgomery(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef);\n const { P } = CURVE;\n const modP = (n: bigint) => mod(n, P);\n const montgomeryBits = CURVE.montgomeryBits;\n const montgomeryBytes = Math.ceil(montgomeryBits / 8);\n const fieldLen = CURVE.nByteLength;\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes: Uint8Array) => bytes);\n const powPminus2 = CURVE.powPminus2 || ((x: bigint) => pow(x, P - BigInt(2), P));\n\n // cswap from RFC7748. But it is not from RFC7748!\n /*\n cswap(swap, x_2, x_3):\n dummy = mask(swap) AND (x_2 XOR x_3)\n x_2 = x_2 XOR dummy\n x_3 = x_3 XOR dummy\n Return (x_2, x_3)\n Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n and x_3, computed, e.g., as mask(swap) = 0 - swap.\n */\n function cswap(swap: bigint, x_2: bigint, x_3: bigint): [bigint, bigint] {\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy);\n x_3 = modP(x_3 + dummy);\n return [x_2, x_3];\n }\n\n // Accepts 0 as well\n function assertFieldElement(n: bigint): bigint {\n if (typeof n === 'bigint' && _0n <= n && n < P) return n;\n throw new Error('Expected valid scalar 0 < scalar < CURVE.P');\n }\n\n // x25519 from 4\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519\n const a24 = (CURVE.a - BigInt(2)) / BigInt(4);\n /**\n *\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(pointU: bigint, scalar: bigint): bigint {\n const u = assertFieldElement(pointU);\n // Section 5: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime.\n const k = assertFieldElement(scalar);\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n let sw: [bigint, bigint];\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n swap = k_t;\n\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n // (x_2, x_3) = cswap(swap, x_2, x_3)\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n // (z_2, z_3) = cswap(swap, z_2, z_3)\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n // z_2^(p - 2)\n const z2 = powPminus2(z_2);\n // Return x_2 * (z_2^(p - 2))\n return modP(x_2 * z2);\n }\n\n function encodeUCoordinate(u: bigint): Uint8Array {\n return numberToBytesLE(modP(u), montgomeryBytes);\n }\n\n function decodeUCoordinate(uEnc: Hex): bigint {\n // Section 5: When receiving such an array, implementations of X25519\n // MUST mask the most significant bit in the final byte.\n const u = ensureBytes('u coordinate', uEnc, montgomeryBytes);\n if (fieldLen === 32) u[31] &= 127; // 0b0111_1111\n return bytesToNumberLE(u);\n }\n function decodeScalar(n: Hex): bigint {\n const bytes = ensureBytes('scalar', n);\n const len = bytes.length;\n if (len !== montgomeryBytes && len !== fieldLen)\n throw new Error(`Expected ${montgomeryBytes} or ${fieldLen} bytes, got ${len}`);\n return bytesToNumberLE(adjustScalarBytes(bytes));\n }\n function scalarMult(scalar: Hex, u: Hex): Uint8Array {\n const pointU = decodeUCoordinate(u);\n const _scalar = decodeScalar(scalar);\n const pu = montgomeryLadder(pointU, _scalar);\n // The result was not contributory\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n) throw new Error('Invalid private or public key received');\n return encodeUCoordinate(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n const GuBytes = encodeUCoordinate(CURVE.Gu);\n function scalarMultBase(scalar: Hex): Uint8Array {\n return scalarMult(scalar, GuBytes);\n }\n\n return {\n scalarMult,\n scalarMultBase,\n getSharedSecret: (privateKey: Hex, publicKey: Hex) => scalarMult(privateKey, publicKey),\n getPublicKey: (privateKey: Hex): Uint8Array => scalarMultBase(privateKey),\n utils: { randomPrivateKey: () => CURVE.randomBytes!(CURVE.nByteLength) },\n GuBytes: GuBytes,\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { Group, GroupConstructor, AffinePoint } from './curve.js';\nimport { mod, IField } from './modular.js';\nimport type { CHash } from './utils.js';\nimport { bytesToNumberBE, isBytes, concatBytes, utf8ToBytes, validateObject } from './utils.js';\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\ntype UnicodeOrBytes = string | Uint8Array;\nexport type Opts = {\n DST: UnicodeOrBytes;\n p: bigint;\n m: number;\n k: number;\n expand: 'xmd' | 'xof';\n hash: CHash;\n};\n\nfunction validateDST(dst: UnicodeOrBytes): Uint8Array {\n if (isBytes(dst)) return dst;\n if (typeof dst === 'string') return utf8ToBytes(dst);\n throw new Error('DST must be Uint8Array or string');\n}\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n if (value < 0 || value >= 1 << (8 * length)) {\n throw new Error(`bad I2OSP call: value=${value} length=${length}`);\n }\n const res = Array.from({ length }).fill(0) as number[];\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\n\nfunction abytes(item: unknown): void {\n if (!isBytes(item)) throw new Error('Uint8Array expected');\n}\nfunction isNum(item: unknown): void {\n if (!Number.isSafeInteger(item)) throw new Error('number expected');\n}\n\n// Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits\n// https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1\nexport function expand_message_xmd(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n isNum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (ell > 255) throw new Error('Invalid xmd length');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n// Produces a uniformly random byte string using an extendable-output function (XOF) H.\n// 1. The collision resistance of H MUST be at least k bits.\n// 2. H MUST be an XOF that has been proved indifferentiable from\n// a random oracle under a reasonable cryptographic assumption.\n// https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2\nexport function expand_message_xof(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n k: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n isNum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (\n H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest()\n );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F\n * https://www.rfc-editor.org/rfc/rfc9380#section-5.2\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: Opts): bigint[][] {\n validateObject(options, {\n DST: 'stringOrUint8Array',\n p: 'bigint',\n m: 'isSafeInteger',\n k: 'isSafeInteger',\n hash: 'hash',\n });\n const { p, k, m, hash, expand, DST: _DST } = options;\n abytes(msg);\n isNum(count);\n const DST = validateDST(_DST);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n } else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n } else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n } else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\n\nexport function isogenyMap>(field: F, map: [T[], T[], T[], T[]]) {\n // Make same order as in spec\n const COEFF = map.map((i) => Array.from(i).reverse());\n return (x: T, y: T) => {\n const [xNum, xDen, yNum, yDen] = COEFF.map((val) =>\n val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n );\n x = field.div(xNum, xDen); // xNum / xDen\n y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)\n return { x, y };\n };\n}\n\nexport interface H2CPoint extends Group> {\n add(rhs: H2CPoint): H2CPoint;\n toAffine(iz?: bigint): AffinePoint;\n clearCofactor(): H2CPoint;\n assertValidity(): void;\n}\n\nexport interface H2CPointConstructor extends GroupConstructor> {\n fromAffine(ap: AffinePoint): H2CPoint;\n}\n\nexport type MapToCurve = (scalar: bigint[]) => AffinePoint;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type htfBasicOpts = { DST: UnicodeOrBytes };\n\nexport function createHasher(\n Point: H2CPointConstructor,\n mapToCurve: MapToCurve,\n def: Opts & { encodeDST?: UnicodeOrBytes }\n) {\n if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n return {\n // Encodes byte string to elliptic curve.\n // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n hashToCurve(msg: Uint8Array, options?: htfBasicOpts) {\n const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options } as Opts);\n const u0 = Point.fromAffine(mapToCurve(u[0]));\n const u1 = Point.fromAffine(mapToCurve(u[1]));\n const P = u0.add(u1).clearCofactor();\n P.assertValidity();\n return P;\n },\n\n // Encodes byte string to elliptic curve.\n // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n encodeToCurve(msg: Uint8Array, options?: htfBasicOpts) {\n const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options } as Opts);\n const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();\n P.assertValidity();\n return P;\n },\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { ExtPointType, twistedEdwards } from './abstract/edwards.js';\nimport { montgomery } from './abstract/montgomery.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport {\n bytesToHex,\n bytesToNumberLE,\n ensureBytes,\n equalBytes,\n Hex,\n numberToBytesLE,\n} from './abstract/utils.js';\nimport { createHasher, htfBasicOpts, expand_message_xmd } from './abstract/hash-to-curve.js';\nimport { AffinePoint, Group } from './abstract/curve.js';\n\n/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n */\n\nconst ED25519_P = BigInt(\n '57896044618658097711785492504343953926634992332820282019728792003956564819949'\n);\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = BigInt(\n '19681161376707505956807079304988542015446066515923890162744021073123829784752'\n);\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _5n = BigInt(5);\n// prettier-ignore\nconst _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n\nfunction ed25519_pow_2_252_3(x: bigint) {\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\n\nfunction adjustScalarBytes(bytes: Uint8Array): Uint8Array {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n\n// sqrt(u/v)\nfunction uvRatio(u: bigint, v: bigint): { isValid: boolean; value: bigint } {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P)) x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n\n// Just in case\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n\nconst Fp = Field(ED25519_P, undefined, true);\n\nconst ed25519Defaults = {\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: BigInt(8),\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n} as const;\n\nexport const ed25519 = /* @__PURE__ */ twistedEdwards(ed25519Defaults);\n\nfunction ed25519_domain(data: Uint8Array, ctx: Uint8Array, phflag: boolean) {\n if (ctx.length > 255) throw new Error('Context is too big');\n return concatBytes(\n utf8ToBytes('SigEd25519 no Ed25519 collisions'),\n new Uint8Array([phflag ? 1 : 0, ctx.length]),\n ctx,\n data\n );\n}\n\nexport const ed25519ctx = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n});\nexport const ed25519ph = /* @__PURE__ */ twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n prehash: sha512,\n});\n\nexport const x25519 = /* @__PURE__ */ (() =>\n montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x: bigint): bigint => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, BigInt(3), P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n }))();\n\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub: Hex): Uint8Array {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery = edwardsToMontgomeryPub; // deprecated\n\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv: Uint8Array): Uint8Array {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\n\nconst ELL2_C1 = (Fp.ORDER + BigInt(3)) / BigInt(8); // 1. c1 = (q + 3) / 8 # Integer arithmetic\n\nconst ELL2_C2 = Fp.pow(_2n, ELL2_C1); // 2. c2 = 2^c1\nconst ELL2_C3 = Fp.sqrt(Fp.neg(Fp.ONE)); // 3. c3 = sqrt(-1)\nconst ELL2_C4 = (Fp.ORDER - BigInt(5)) / BigInt(8); // 4. c4 = (q - 5) / 8 # Integer arithmetic\nconst ELL2_J = BigInt(486662);\n\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u: bigint) {\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\n\nconst ELL2_C1_EDWARDS = FpSqrtEven(Fp, Fp.neg(BigInt(486664))); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u: bigint) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\n\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n ed25519.ExtendedPoint,\n (scalars: bigint[]) => map_to_curve_elligator2_edwards25519(scalars[0]),\n {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n }\n ))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n\nfunction assertRstPoint(other: unknown) {\n if (!(other instanceof RistPoint)) throw new Error('RistrettoPoint expected');\n}\n\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = BigInt(\n '25063068953384623474111414158702152701244531502492656460079210482610430750235'\n);\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = BigInt(\n '54469307008909316920995813868745141605393597292927456921205312896311721017578'\n);\n// 1-d²\nconst ONE_MINUS_D_SQ = BigInt(\n '1159843021668779879193775521855586647937357759715417654439879720876111806838'\n);\n// (d-1)²\nconst D_MINUS_ONE_SQ = BigInt(\n '40440834346308536858101042469323190826248399146238708352240133220865137265952'\n);\n// Calculates 1/√(number)\nconst invertSqrt = (number: bigint) => uvRatio(_1n, number);\n\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes: Uint8Array) =>\n ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n\ntype ExtendedPoint = ExtPointType;\n\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0: bigint): ExtendedPoint {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P)) s_ = mod(-s_);\n if (!Ns_D_is_sq) s = s_; // 7\n if (!Ns_D_is_sq) c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint implements Group {\n static BASE: RistPoint;\n static ZERO: RistPoint;\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(private readonly ep: ExtendedPoint) {}\n\n static fromAffine(ap: AffinePoint) {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex: Hex): RistPoint {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex: Hex): RistPoint {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P)) throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P)) x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n) throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes(): Uint8Array {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D: bigint; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n } else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P)) y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P)) s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n\n toHex(): string {\n return bytesToHex(this.toRawBytes());\n }\n\n toString(): string {\n return this.toHex();\n }\n\n // Compare one point to another.\n equals(other: RistPoint): boolean {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n\n add(other: RistPoint): RistPoint {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n\n subtract(other: RistPoint): RistPoint {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n\n multiply(scalar: bigint): RistPoint {\n return new RistPoint(this.ep.multiply(scalar));\n }\n\n multiplyUnsafe(scalar: bigint): RistPoint {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n\n double(): RistPoint {\n return new RistPoint(this.ep.double());\n }\n\n negate(): RistPoint {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE) RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO) RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg: Uint8Array, options: htfBasicOpts) => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255 = hashToRistretto255; // legacy\n","export type ExpirableMapOptions = {\n source?: Iterable<[K, V]>;\n expirationTime?: number;\n};\n\n/**\n * A map that expires entries after a given time.\n * Defaults to 10 minutes.\n */\nexport class ExpirableMap implements Map {\n // Internals\n #inner: Map;\n #expirationTime: number;\n\n [Symbol.iterator]: () => IterableIterator<[K, V]> = this.entries.bind(this);\n [Symbol.toStringTag] = 'ExpirableMap';\n\n /**\n * Create a new ExpirableMap.\n * @param {ExpirableMapOptions} options - options for the map.\n * @param {Iterable<[any, any]>} options.source - an optional source of entries to initialize the map with.\n * @param {number} options.expirationTime - the time in milliseconds after which entries will expire.\n */\n constructor(options: ExpirableMapOptions = {}) {\n const { source = [], expirationTime = 10 * 60 * 1000 } = options;\n const currentTime = Date.now();\n this.#inner = new Map(\n [...source].map(([key, value]) => [key, { value, timestamp: currentTime }]),\n );\n this.#expirationTime = expirationTime;\n }\n\n /**\n * Prune removes all expired entries.\n */\n prune() {\n const currentTime = Date.now();\n for (const [key, entry] of this.#inner.entries()) {\n if (currentTime - entry.timestamp > this.#expirationTime) {\n this.#inner.delete(key);\n }\n }\n return this;\n }\n\n // Implementing the Map interface\n\n /**\n * Set the value for the given key. Prunes expired entries.\n * @param key for the entry\n * @param value of the entry\n * @returns this\n */\n set(key: K, value: V) {\n this.prune();\n const entry = {\n value,\n timestamp: Date.now(),\n };\n this.#inner.set(key, entry);\n\n return this;\n }\n\n /**\n * Get the value associated with the key, if it exists and has not expired.\n * @param key K\n * @returns the value associated with the key, or undefined if the key is not present or has expired.\n */\n get(key: K) {\n const entry = this.#inner.get(key);\n if (entry === undefined) {\n return undefined;\n }\n if (Date.now() - entry.timestamp > this.#expirationTime) {\n this.#inner.delete(key);\n return undefined;\n }\n return entry.value;\n }\n\n /**\n * Clear all entries.\n */\n clear() {\n this.#inner.clear();\n }\n\n /**\n * Entries returns the entries of the map, without the expiration time.\n * @returns an iterator over the entries of the map.\n */\n entries(): IterableIterator<[K, V]> {\n const iterator = this.#inner.entries();\n const generator = function* () {\n for (const [key, value] of iterator) {\n yield [key, value.value] as [K, V];\n }\n };\n return generator();\n }\n\n /**\n * Values returns the values of the map, without the expiration time.\n * @returns an iterator over the values of the map.\n */\n values(): IterableIterator {\n const iterator = this.#inner.values();\n const generator = function* () {\n for (const value of iterator) {\n yield value.value;\n }\n };\n return generator();\n }\n\n /**\n * Keys returns the keys of the map\n * @returns an iterator over the keys of the map.\n */\n keys(): IterableIterator {\n return this.#inner.keys();\n }\n\n /**\n * forEach calls the callbackfn on each entry of the map.\n * @param callbackfn to call on each entry\n * @param thisArg to use as this when calling the callbackfn\n */\n forEach(callbackfn: (value: V, key: K, map: Map) => void, thisArg?: ExpirableMap) {\n for (const [key, value] of this.#inner.entries()) {\n callbackfn.call(thisArg, value.value, key, this);\n }\n }\n\n /**\n * has returns true if the key exists and has not expired.\n * @param key K\n * @returns true if the key exists and has not expired.\n */\n has(key: K): boolean {\n return this.#inner.has(key);\n }\n\n /**\n * delete the entry for the given key.\n * @param key K\n * @returns true if the key existed and has been deleted.\n */\n delete(key: K) {\n return this.#inner.delete(key);\n }\n\n /**\n * get size of the map.\n * @returns the size of the map.\n */\n get size() {\n return this.#inner.size;\n }\n}\n","import { bufEquals } from './utils/buffer';\n\nexport const encodeLenBytes = (len: number): number => {\n if (len <= 0x7f) {\n return 1;\n } else if (len <= 0xff) {\n return 2;\n } else if (len <= 0xffff) {\n return 3;\n } else if (len <= 0xffffff) {\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const encodeLen = (buf: Uint8Array, offset: number, len: number): number => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n } else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n } else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n } else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const decodeLenBytes = (buf: Uint8Array, offset: number): number => {\n if (buf[offset] < 0x80) return 1;\n if (buf[offset] === 0x80) throw new Error('Invalid length 0');\n if (buf[offset] === 0x81) return 2;\n if (buf[offset] === 0x82) return 3;\n if (buf[offset] === 0x83) return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\n\nexport const decodeLen = (buf: Uint8Array, offset: number): number => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1) return buf[offset];\n else if (lenBytes === 2) return buf[offset + 1];\n else if (lenBytes === 3) return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05], // SEQUENCE\n ...[0x06, 0x03], // OID with 3 bytes\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload: ArrayBuffer, oid: Uint8Array): Uint8Array {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n\n return buf;\n}\n\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded: ArrayBuffer, oid: Uint8Array): Uint8Array => {\n let offset = 0;\n const expect = (n: number, msg: string) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(\n `DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`,\n );\n }\n return result;\n};\n","import { DerEncodedPublicKey, PublicKey } from './auth';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\n\nexport class Ed25519PublicKey implements PublicKey {\n public static from(key: PublicKey): Ed25519PublicKey {\n return this.fromDer(key.toDer());\n }\n\n public static fromRaw(rawKey: ArrayBuffer): Ed25519PublicKey {\n return new Ed25519PublicKey(rawKey);\n }\n\n public static fromDer(derKey: DerEncodedPublicKey): Ed25519PublicKey {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n\n // The length of Ed25519 public keys is always 32 bytes.\n private static RAW_KEY_LENGTH = 32;\n\n private static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(publicKey, ED25519_OID).buffer as DerEncodedPublicKey;\n }\n\n private static derDecode(key: DerEncodedPublicKey): ArrayBuffer {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n\n #rawKey: ArrayBuffer;\n\n public get rawKey(): ArrayBuffer {\n return this.#rawKey;\n }\n\n #derKey: DerEncodedPublicKey;\n\n public get derKey(): DerEncodedPublicKey {\n return this.#derKey;\n }\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n private constructor(key: ArrayBuffer) {\n if (key.byteLength !== Ed25519PublicKey.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n this.#rawKey = key;\n this.#derKey = Ed25519PublicKey.derEncode(key);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this.derKey;\n }\n\n public toRaw(): ArrayBuffer {\n return this.rawKey;\n }\n}\n","import { AgentError } from './errors';\n\nexport type ObserveFunction = (data: T) => void;\n\nexport class Observable extends Function {\n observers: ObserveFunction[];\n\n constructor() {\n super();\n this.observers = [];\n return new Proxy(this, {\n apply: (target, _, args) => target.#call(args[0]),\n });\n }\n\n #call(message: T) {\n this.notify(message);\n }\n\n subscribe(func: ObserveFunction) {\n this.observers.push(func);\n }\n\n unsubscribe(func: ObserveFunction) {\n this.observers = this.observers.filter(observer => observer !== func);\n }\n\n notify(data: T) {\n this.observers.forEach(observer => observer(data));\n }\n}\n\nexport type AgentLog =\n | {\n message: string;\n level: 'warn' | 'info';\n }\n | {\n message: string;\n level: 'error';\n error: AgentError;\n };\n\nexport class ObservableLog extends Observable {\n constructor() {\n super();\n return new Proxy(this, {\n apply: (target, _, args) => target.#call(args[0]),\n });\n }\n log(message: string) {\n this.notify({ message, level: 'info' });\n }\n warn(message: string) {\n this.notify({ message, level: 'warn' });\n }\n error(message: string, error: AgentError) {\n this.notify({ message, level: 'error', error });\n }\n #call(message: string) {\n this.log(message);\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport { AgentError } from '../../errors';\nimport { AnonymousIdentity, Identity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { hashOfMap, requestIdOf } from '../../request_id';\nimport { concat, fromHex } from '../../utils/buffer';\nimport {\n Agent,\n ApiQueryResponse,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from '../api';\nimport { Expiry, httpHeadersTransform, makeNonceTransform } from './transforms';\nimport {\n CallRequest,\n Endpoint,\n HttpAgentRequest,\n HttpAgentRequestTransformFn,\n HttpAgentSubmitRequest,\n makeNonce,\n Nonce,\n QueryRequest,\n ReadRequestType,\n SubmitRequestType,\n} from './types';\nimport { AgentHTTPResponseError } from './errors';\nimport { SubnetStatus, request } from '../../canisterStatus';\nimport { CertificateVerificationError } from '../../certificate';\nimport { ed25519 } from '@noble/curves/ed25519';\nimport { ExpirableMap } from '../../utils/expirableMap';\nimport { Ed25519PublicKey } from '../../public_key';\nimport { ObservableLog } from '../../observable';\n\nexport * from './transforms';\nexport { Nonce, makeNonce } from './types';\n\nexport enum RequestStatusResponseStatus {\n Received = 'received',\n Processing = 'processing',\n Replied = 'replied',\n Rejected = 'rejected',\n Unknown = 'unknown',\n Done = 'done',\n}\n\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY =\n '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\n\n// IC0 domain info\nconst IC0_DOMAIN = 'ic0.app';\nconst IC0_SUB_DOMAIN = '.ic0.app';\n\nconst ICP0_DOMAIN = 'icp0.io';\nconst ICP0_SUB_DOMAIN = '.icp0.io';\n\nconst ICP_API_DOMAIN = 'icp-api.io';\nconst ICP_API_SUB_DOMAIN = '.icp-api.io';\n\nclass HttpDefaultFetchError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\nexport class IdentityInvalidError extends AgentError {\n constructor(public readonly message: string) {\n super(message);\n }\n}\n\n// HttpAgent options that can be used at construction.\nexport interface HttpAgentOptions {\n // Another HttpAgent to inherit configuration (pipeline and fetch) of. This\n // is only used at construction.\n source?: HttpAgent;\n\n // A surrogate to the global fetch function. Useful for testing.\n fetch?: typeof fetch;\n\n // Additional options to pass along to fetch. Will not override fields that\n // the agent already needs to set\n // Should follow the RequestInit interface, but we intentially support non-standard fields\n fetchOptions?: Record;\n\n // Additional options to pass along to fetch for the call API.\n callOptions?: Record;\n\n // The host to use for the client. By default, uses the same host as\n // the current page.\n host?: string;\n\n // The principal used to send messages. This cannot be empty at the request\n // time (will throw).\n identity?: Identity | Promise;\n\n credentials?: {\n name: string;\n password?: string;\n };\n /**\n * Adds a unique {@link Nonce} with each query.\n * Enabling will prevent queries from being answered with a cached response.\n * @example\n * const agent = new HttpAgent({ useQueryNonces: true });\n * agent.addTransform(makeNonceTransform(makeNonce);\n * @default false\n */\n useQueryNonces?: boolean;\n /**\n * Number of times to retry requests before throwing an error\n * @default 3\n */\n retryTimes?: number;\n /**\n * Whether the agent should verify signatures signed by node keys on query responses. Increases security, but adds overhead and must make a separate request to cache the node keys for the canister's subnet.\n * @default true\n */\n verifyQuerySignatures?: boolean;\n /**\n * Whether to log to the console. Defaults to false.\n */\n logToConsole?: boolean;\n}\n\nfunction getDefaultFetch(): typeof fetch {\n let defaultFetch;\n\n if (typeof window !== 'undefined') {\n // Browser context\n if (window.fetch) {\n defaultFetch = window.fetch.bind(window);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a browser context, but window.fetch was not present.',\n );\n }\n } else if (typeof global !== 'undefined') {\n // Node context\n if (global.fetch) {\n defaultFetch = global.fetch.bind(global);\n } else {\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. You appear to be in a Node.js context, but global.fetch was not available.',\n );\n }\n } else if (typeof self !== 'undefined') {\n if (self.fetch) {\n defaultFetch = self.fetch.bind(self);\n }\n }\n\n if (defaultFetch) {\n return defaultFetch;\n }\n throw new HttpDefaultFetchError(\n 'Fetch implementation was not available. Please provide fetch to the HttpAgent constructor, or ensure it is available in the window or global context.',\n );\n}\n\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent implements Agent {\n public rootKey = fromHex(IC_ROOT_KEY);\n private _identity: Promise | null;\n private readonly _fetch: typeof fetch;\n private readonly _fetchOptions?: Record;\n private readonly _callOptions?: Record;\n private _timeDiffMsecs = 0;\n private readonly _host: URL;\n private readonly _credentials: string | undefined;\n private _rootKeyFetched = false;\n private readonly _retryTimes; // Retry requests N times before erroring by default\n public readonly _isAgent = true;\n\n public log: ObservableLog = new ObservableLog();\n\n #queryPipeline: HttpAgentRequestTransformFn[] = [];\n #updatePipeline: HttpAgentRequestTransformFn[] = [];\n\n #subnetKeys: ExpirableMap = new ExpirableMap({\n expirationTime: 5 * 60 * 1000, // 5 minutes\n });\n #verifyQuerySignatures = true;\n\n constructor(options: HttpAgentOptions = {}) {\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n } else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n this._fetchOptions = options.fetchOptions;\n this._callOptions = options.callOptions;\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n } else {\n this._host = new URL(options.host);\n }\n } else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n } else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n this._host = new URL('https://icp-api.io');\n this.log.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n // Mainnet, local, and remote environments will have the api route available\n const knownHosts = ['ic0.app', 'icp0.io', '127.0.0.1', 'localhost'];\n const remoteHosts = ['.github.dev', '.gitpod.io'];\n const hostname = location?.hostname;\n let knownHost;\n if (hostname && typeof hostname === 'string') {\n if (remoteHosts.some(host => hostname.endsWith(host))) {\n knownHost = hostname;\n } else {\n knownHost = knownHosts.find(host => hostname.endsWith(host));\n }\n }\n\n if (location && knownHost) {\n // If the user is on a boundary-node provided host, we can use the same host for the agent\n this._host = new URL(\n `${location.protocol}//${knownHost}${location.port ? ':' + location.port : ''}`,\n );\n } else {\n this._host = new URL('https://icp-api.io');\n console.warn(\n 'Could not infer host from window.location, defaulting to mainnet gateway of https://icp-api.io. Please provide a host to the HttpAgent constructor to avoid this warning.',\n );\n }\n }\n if (options.verifyQuerySignatures !== undefined) {\n this.#verifyQuerySignatures = options.verifyQuerySignatures;\n }\n // Default is 3, only set from option if greater or equal to 0\n this._retryTimes =\n options.retryTimes !== undefined && options.retryTimes >= 0 ? options.retryTimes : 3;\n // Rewrite to avoid redirects\n if (this._host.hostname.endsWith(IC0_SUB_DOMAIN)) {\n this._host.hostname = IC0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP0_SUB_DOMAIN)) {\n this._host.hostname = ICP0_DOMAIN;\n } else if (this._host.hostname.endsWith(ICP_API_SUB_DOMAIN)) {\n this._host.hostname = ICP_API_DOMAIN;\n }\n\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n\n // Add a nonce transform to ensure calls are unique\n this.addTransform('update', makeNonceTransform(makeNonce));\n if (options.useQueryNonces) {\n this.addTransform('query', makeNonceTransform(makeNonce));\n }\n if (options.logToConsole) {\n this.log.subscribe(log => {\n if (log.level === 'error') {\n console.error(log.message);\n } else if (log.level === 'warn') {\n console.warn(log.message);\n } else {\n console.log(log.message);\n }\n });\n }\n }\n\n public isLocal(): boolean {\n const hostname = this._host.hostname;\n return hostname === '127.0.0.1' || hostname.endsWith('127.0.0.1');\n }\n\n public addTransform(\n type: 'update' | 'query',\n fn: HttpAgentRequestTransformFn,\n priority = fn.priority || 0,\n ): void {\n if (type === 'update') {\n // Keep the pipeline sorted at all time, by priority.\n const i = this.#updatePipeline.findIndex(x => (x.priority || 0) < priority);\n this.#updatePipeline.splice(\n i >= 0 ? i : this.#updatePipeline.length,\n 0,\n Object.assign(fn, { priority }),\n );\n } else if (type === 'query') {\n // Keep the pipeline sorted at all time, by priority.\n const i = this.#queryPipeline.findIndex(x => (x.priority || 0) < priority);\n this.#queryPipeline.splice(\n i >= 0 ? i : this.#queryPipeline.length,\n 0,\n Object.assign(fn, { priority }),\n );\n }\n }\n\n public async getPrincipal(): Promise {\n if (!this._identity) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n return (await this._identity).getPrincipal();\n }\n\n public async call(\n canisterId: Principal | string,\n options: {\n methodName: string;\n arg: ArrayBuffer;\n effectiveCanisterId?: Principal | string;\n },\n identity?: Identity | Promise,\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n\n const sender: Principal = id.getPrincipal() || Principal.anonymous();\n\n let ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS);\n\n // If the value is off by more than 30 seconds, reconcile system time with the network\n if (Math.abs(this._timeDiffMsecs) > 1_000 * 30) {\n ingress_expiry = new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS + this._timeDiffMsecs);\n }\n\n const submit: CallRequest = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Call,\n body: submit,\n })) as HttpAgentSubmitRequest;\n\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const request = this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), {\n ...this._callOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const [response, requestId] = await Promise.all([request, requestIdOf(submit)]);\n\n const responseBuffer = await response.arrayBuffer();\n const responseBody = (\n response.status === 200 && responseBuffer.byteLength > 0 ? cbor.decode(responseBuffer) : null\n ) as SubmitResponse['response']['body'];\n\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n headers: httpHeadersTransform(response.headers),\n },\n };\n }\n\n private async _requestAndRetry(request: () => Promise, tries = 0): Promise {\n let response: Response;\n try {\n response = await request();\n } catch (error) {\n if (this._retryTimes > tries) {\n console.warn(\n `Caught exception while attempting to make request:\\n` +\n ` ${error}\\n` +\n ` Retrying request.`,\n );\n return await this._requestAndRetry(request, tries + 1);\n }\n throw error;\n }\n if (response.ok) {\n return response;\n }\n\n const responseText = await response.clone().text();\n const errorMessage =\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${responseText}\\n`;\n\n if (this._retryTimes > tries) {\n console.warn(errorMessage + ` Retrying request.`);\n return await this._requestAndRetry(request, tries + 1);\n }\n\n throw new AgentHTTPResponseError(errorMessage, {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n });\n }\n\n public async query(\n canisterId: Principal | string,\n fields: QueryFields,\n identity?: Identity | Promise,\n ): Promise {\n const makeQuery = async () => {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n\n const canister = Principal.from(canisterId);\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n const request: QueryRequest = {\n request_type: ReadRequestType.Query,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n\n const requestId = await requestIdOf(request);\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.Query,\n body: request,\n });\n\n // Apply transform for identity.\n transformedRequest = await id?.transformRequest(transformedRequest);\n\n const body = cbor.encode(transformedRequest.body);\n\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n const queryResponse: QueryResponse = cbor.decode(await response.arrayBuffer());\n\n return {\n ...queryResponse,\n httpDetails: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers: httpHeadersTransform(response.headers),\n },\n requestId,\n };\n };\n\n const getSubnetStatus = async (): Promise => {\n if (!this.#verifyQuerySignatures) {\n return undefined;\n }\n const subnetStatus = this.#subnetKeys.get(canisterId.toString());\n if (subnetStatus) {\n return subnetStatus;\n }\n await this.fetchSubnetKeys(canisterId.toString());\n return this.#subnetKeys.get(canisterId.toString());\n };\n // Make query and fetch subnet keys in parallel\n const [query, subnetStatus] = await Promise.all([makeQuery(), getSubnetStatus()]);\n // Skip verification if the user has disabled it\n if (!this.#verifyQuerySignatures) {\n return query;\n }\n try {\n return this.#verifyQueryResponse(query, subnetStatus);\n } catch (_) {\n // In case the node signatures have changed, refresh the subnet keys and try again\n console.warn('Query response verification failed. Retrying with fresh subnet keys.');\n this.#subnetKeys.delete(canisterId.toString());\n await this.fetchSubnetKeys(canisterId.toString());\n\n const updatedSubnetStatus = this.#subnetKeys.get(canisterId.toString());\n if (!updatedSubnetStatus) {\n throw new CertificateVerificationError(\n 'Invalid signature from replica signed query: no matching node key found.',\n );\n }\n return this.#verifyQueryResponse(query, updatedSubnetStatus);\n }\n }\n\n /**\n * See https://internetcomputer.org/docs/current/references/ic-interface-spec/#http-query for details on validation\n * @param queryResponse - The response from the query\n * @param subnetStatus - The subnet status, including all node keys\n * @returns ApiQueryResponse\n */\n #verifyQueryResponse = (\n queryResponse: ApiQueryResponse,\n subnetStatus: SubnetStatus | void,\n ): ApiQueryResponse => {\n if (this.#verifyQuerySignatures === false) {\n // This should not be called if the user has disabled verification\n return queryResponse;\n }\n if (!subnetStatus) {\n throw new CertificateVerificationError(\n 'Invalid signature from replica signed query: no matching node key found.',\n );\n }\n const { status, signatures = [], requestId } = queryResponse;\n\n const domainSeparator = new TextEncoder().encode('\\x0Bic-response');\n for (const sig of signatures) {\n const { timestamp, identity } = sig;\n const nodeId = Principal.fromUint8Array(identity).toText();\n let hash: ArrayBuffer;\n\n // Hash is constructed differently depending on the status\n if (status === 'replied') {\n const { reply } = queryResponse;\n hash = hashOfMap({\n status: status,\n reply: reply,\n timestamp: BigInt(timestamp),\n request_id: requestId,\n });\n } else if (status === 'rejected') {\n const { reject_code, reject_message, error_code } = queryResponse;\n hash = hashOfMap({\n status: status,\n reject_code: reject_code,\n reject_message: reject_message,\n error_code: error_code,\n timestamp: BigInt(timestamp),\n request_id: requestId,\n });\n } else {\n throw new Error(`Unknown status: ${status}`);\n }\n\n const separatorWithHash = concat(domainSeparator, new Uint8Array(hash));\n\n // FIX: check for match without verifying N times\n const pubKey = subnetStatus?.nodeKeys.get(nodeId);\n if (!pubKey) {\n throw new CertificateVerificationError(\n 'Invalid signature from replica signed query: no matching node key found.',\n );\n }\n const rawKey = Ed25519PublicKey.fromDer(pubKey).rawKey;\n const valid = ed25519.verify(\n sig.signature,\n new Uint8Array(separatorWithHash),\n new Uint8Array(rawKey),\n );\n if (valid) return queryResponse;\n\n throw new CertificateVerificationError(\n `Invalid signature from replica ${nodeId} signed query.`,\n );\n }\n return queryResponse;\n };\n\n public async createReadStateRequest(\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise {\n const id = await (identity !== undefined ? await identity : await this._identity);\n if (!id) {\n throw new IdentityInvalidError(\n \"This identity has expired due this application's security policy. Please refresh your authentication.\",\n );\n }\n const sender = id?.getPrincipal() || Principal.anonymous();\n\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transformedRequest: any = await this._transform({\n request: {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/cbor',\n ...(this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {}),\n },\n },\n endpoint: Endpoint.ReadState,\n body: {\n request_type: ReadRequestType.ReadState,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n\n // Apply transform for identity.\n return id?.transformRequest(transformedRequest);\n }\n\n public async readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n identity?: Identity | Promise,\n // eslint-disable-next-line\n request?: any,\n ): Promise {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n\n const transformedRequest = request ?? (await this.createReadStateRequest(fields, identity));\n const body = cbor.encode(transformedRequest.body);\n\n // TODO - https://dfinity.atlassian.net/browse/SDK-1092\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), {\n ...this._fetchOptions,\n ...transformedRequest.request,\n body,\n }),\n );\n\n if (!response.ok) {\n throw new Error(\n `Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`,\n );\n }\n return cbor.decode(await response.arrayBuffer());\n }\n\n /**\n * Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request\n * @param {Principal} canisterId - Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default\n */\n public async syncTime(canisterId?: Principal): Promise {\n const CanisterStatus = await import('../../canisterStatus');\n const callTime = Date.now();\n try {\n if (!canisterId) {\n this.log(\n 'Syncing time with the IC. No canisterId provided, so falling back to ryjl3-tyaaa-aaaaa-aaaba-cai',\n );\n }\n const status = await CanisterStatus.request({\n // Fall back with canisterId of the ICP Ledger\n canisterId: canisterId ?? Principal.from('ryjl3-tyaaa-aaaaa-aaaba-cai'),\n agent: this,\n paths: ['time'],\n });\n\n const replicaTime = status.get('time');\n if (replicaTime) {\n this._timeDiffMsecs = Number(replicaTime as bigint) - Number(callTime);\n }\n } catch (error) {\n this.log.error('Caught exception while attempting to sync time', error as AgentError);\n }\n }\n\n public async status(): Promise {\n const headers: Record = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n\n const response = await this._requestAndRetry(() =>\n this._fetch('' + new URL(`/api/v2/status`, this._host), { headers, ...this._fetchOptions }),\n );\n\n return cbor.decode(await response.arrayBuffer());\n }\n\n public async fetchRootKey(): Promise {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = ((await this.status()) as JsonObject & { root_key: ArrayBuffer }).root_key;\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n\n public invalidateIdentity(): void {\n this._identity = null;\n }\n\n public replaceIdentity(identity: Identity): void {\n this._identity = Promise.resolve(identity);\n }\n\n public async fetchSubnetKeys(canisterId: Principal | string) {\n const effectiveCanisterId: Principal = Principal.from(canisterId);\n const response = await request({\n canisterId: effectiveCanisterId,\n paths: ['subnet'],\n agent: this,\n });\n\n const subnetResponse = response.get('subnet');\n if (subnetResponse && typeof subnetResponse === 'object' && 'nodeKeys' in subnetResponse) {\n this.#subnetKeys.set(effectiveCanisterId.toText(), subnetResponse as SubnetStatus);\n return subnetResponse as SubnetStatus;\n }\n // If the subnet status is not returned, return undefined\n return undefined;\n }\n\n protected _transform(request: HttpAgentRequest): Promise {\n let p = Promise.resolve(request);\n if (request.endpoint === Endpoint.Call) {\n for (const fn of this.#updatePipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n } else {\n for (const fn of this.#queryPipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n }\n\n return p;\n }\n}\n","import { JsonObject } from '@dfinity/candid';\nimport {\n Agent,\n ApiQueryResponse,\n CallOptions,\n QueryFields,\n QueryResponse,\n ReadStateOptions,\n ReadStateResponse,\n SubmitResponse,\n} from './api';\nimport { Principal } from '@dfinity/principal';\n\nexport enum ProxyMessageKind {\n Error = 'err',\n GetPrincipal = 'gp',\n GetPrincipalResponse = 'gpr',\n Query = 'q',\n QueryResponse = 'qr',\n Call = 'c',\n CallResponse = 'cr',\n ReadState = 'rs',\n ReadStateResponse = 'rsr',\n Status = 's',\n StatusResponse = 'sr',\n}\n\nexport interface ProxyMessageBase {\n id: number;\n type: ProxyMessageKind;\n}\n\nexport interface ProxyMessageError extends ProxyMessageBase {\n type: ProxyMessageKind.Error;\n error: any;\n}\n\nexport interface ProxyMessageGetPrincipal extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipal;\n}\n\nexport interface ProxyMessageGetPrincipalResponse extends ProxyMessageBase {\n type: ProxyMessageKind.GetPrincipalResponse;\n response: string;\n}\n\nexport interface ProxyMessageQuery extends ProxyMessageBase {\n type: ProxyMessageKind.Query;\n args: [string, QueryFields];\n}\n\nexport interface ProxyMessageQueryResponse extends ProxyMessageBase {\n type: ProxyMessageKind.QueryResponse;\n response: QueryResponse;\n}\n\nexport interface ProxyMessageCall extends ProxyMessageBase {\n type: ProxyMessageKind.Call;\n args: [string, CallOptions];\n}\n\nexport interface ProxyMessageCallResponse extends ProxyMessageBase {\n type: ProxyMessageKind.CallResponse;\n response: SubmitResponse;\n}\n\nexport interface ProxyMessageReadState extends ProxyMessageBase {\n type: ProxyMessageKind.ReadState;\n args: [string, ReadStateOptions];\n}\n\nexport interface ProxyMessageReadStateResponse extends ProxyMessageBase {\n type: ProxyMessageKind.ReadStateResponse;\n response: ReadStateResponse;\n}\n\nexport interface ProxyMessageStatus extends ProxyMessageBase {\n type: ProxyMessageKind.Status;\n}\n\nexport interface ProxyMessageStatusResponse extends ProxyMessageBase {\n type: ProxyMessageKind.StatusResponse;\n response: JsonObject;\n}\n\nexport type ProxyMessage =\n | ProxyMessageError\n | ProxyMessageGetPrincipal\n | ProxyMessageGetPrincipalResponse\n | ProxyMessageQuery\n | ProxyMessageQueryResponse\n | ProxyMessageCall\n | ProxyMessageReadState\n | ProxyMessageReadStateResponse\n | ProxyMessageCallResponse\n | ProxyMessageStatus\n | ProxyMessageStatusResponse;\n\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(private _frontend: (msg: ProxyMessage) => void, private _agent: Agent) {}\n\n public onmessage(msg: ProxyMessage): void {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent implements Agent {\n private _nextId = 0;\n private _pendingCalls = new Map void, (reject: any) => void]>();\n public rootKey = null;\n\n constructor(private _backend: (msg: ProxyMessage) => void) {}\n\n public onmessage(msg: ProxyMessage): void {\n const id = msg.id;\n\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n\n public async getPrincipal(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n\n public readState(\n canisterId: Principal | string,\n fields: ReadStateOptions,\n ): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public call(canisterId: Principal | string, fields: CallOptions): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n public status(): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n }) as Promise;\n }\n\n public query(canisterId: Principal | string, fields: QueryFields): Promise {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n }) as Promise;\n }\n\n private async _sendAndWait(msg: ProxyMessage): Promise {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n\n this._backend(msg);\n });\n }\n\n public async fetchRootKey(): Promise {\n // Hex-encoded version of the replica root key\n const rootKey = ((await this.status()) as any).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n","import { GlobalInternetComputer } from '../index';\nimport { Agent } from './api';\n\nexport * from './api';\nexport * from './http';\nexport * from './http/errors';\nexport * from './proxy';\n\ndeclare const window: GlobalInternetComputer;\ndeclare const global: GlobalInternetComputer;\ndeclare const self: GlobalInternetComputer;\n\nexport function getDefaultAgent(): Agent {\n const agent =\n typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n\n return agent;\n}\n","import { Principal } from '@dfinity/principal';\nimport { RequestStatusResponseStatus } from '../agent';\nimport { toHex } from '../utils/buffer';\nimport { PollStrategy } from './index';\nimport { RequestId } from '../request_id';\n\nexport type Predicate = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\n\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy(): PollStrategy {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n\n/**\n * Predicate that returns true once.\n */\nexport function once(): Predicate {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition: Predicate, timeInMsec: number): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count: number): PollStrategy {\n let attempts = count;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (--attempts <= 0) {\n throw new Error(\n `Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec: number): PollStrategy {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec: number): PollStrategy {\n const end = Date.now() + timeInMsec;\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n if (Date.now() > end) {\n throw new Error(\n `Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`,\n );\n }\n };\n}\n\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec: number, backoffFactor: number): PollStrategy {\n let currentThrottling = startingThrottleInMsec;\n\n return () =>\n new Promise(resolve =>\n setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling),\n );\n}\n\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies: PollStrategy[]): PollStrategy {\n return async (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n ) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n","import { Principal } from '@dfinity/principal';\nimport { Agent, RequestStatusResponseStatus } from '../agent';\nimport { Certificate, CreateCertificateOptions } from '../certificate';\nimport { RequestId } from '../request_id';\nimport { toHex } from '../utils/buffer';\n\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\nexport type PollStrategy = (\n canisterId: Principal,\n requestId: RequestId,\n status: RequestStatusResponseStatus,\n) => Promise;\nexport type PollStrategyFactory = () => PollStrategy;\n\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n * @param request Request for the readState call.\n */\nexport async function pollForResponse(\n agent: Agent,\n canisterId: Principal,\n requestId: RequestId,\n strategy: PollStrategy,\n // eslint-disable-next-line\n request?: any,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): Promise {\n const path = [new TextEncoder().encode('request_status'), requestId];\n const currentRequest = request ?? (await agent.createReadStateRequest?.({ paths: [path] }));\n const state = await agent.readState(canisterId, { paths: [path] }, undefined, currentRequest);\n if (agent.rootKey == null) throw new Error('Agent root key not initialized before polling');\n const cert = await Certificate.create({\n certificate: state.certificate,\n rootKey: agent.rootKey,\n canisterId: canisterId,\n blsVerify,\n });\n const maybeBuf = cert.lookup([...path, new TextEncoder().encode('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n } else {\n status = new TextDecoder().decode(maybeBuf);\n }\n\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, 'reply'])!;\n }\n\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy, currentRequest);\n\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = new Uint8Array(cert.lookup([...path, 'reject_code'])!)[0];\n const rejectMessage = new TextDecoder().decode(cert.lookup([...path, 'reject_message'])!);\n throw new Error(\n `Call was rejected:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`,\n );\n }\n\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(\n `Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${toHex(requestId)}\\n`,\n );\n }\n throw new Error('unreachable');\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/**\n * This file is generated from the candid for asset management.\n * didc version: 0.3.6\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport default ({ IDL }) => {\n const bitcoin_network = IDL.Variant({\n mainnet: IDL.Null,\n testnet: IDL.Null,\n });\n const bitcoin_address = IDL.Text;\n const get_balance_request = IDL.Record({\n network: bitcoin_network,\n address: bitcoin_address,\n min_confirmations: IDL.Opt(IDL.Nat32),\n });\n const satoshi = IDL.Nat64;\n const get_current_fee_percentiles_request = IDL.Record({\n network: bitcoin_network,\n });\n const millisatoshi_per_byte = IDL.Nat64;\n const get_utxos_request = IDL.Record({\n network: bitcoin_network,\n filter: IDL.Opt(\n IDL.Variant({\n page: IDL.Vec(IDL.Nat8),\n min_confirmations: IDL.Nat32,\n }),\n ),\n address: bitcoin_address,\n });\n const block_hash = IDL.Vec(IDL.Nat8);\n const outpoint = IDL.Record({\n txid: IDL.Vec(IDL.Nat8),\n vout: IDL.Nat32,\n });\n const utxo = IDL.Record({\n height: IDL.Nat32,\n value: satoshi,\n outpoint: outpoint,\n });\n const get_utxos_response = IDL.Record({\n next_page: IDL.Opt(IDL.Vec(IDL.Nat8)),\n tip_height: IDL.Nat32,\n tip_block_hash: block_hash,\n utxos: IDL.Vec(utxo),\n });\n const send_transaction_request = IDL.Record({\n transaction: IDL.Vec(IDL.Nat8),\n network: bitcoin_network,\n });\n const canister_id = IDL.Principal;\n const change_origin = IDL.Variant({\n from_user: IDL.Record({ user_id: IDL.Principal }),\n from_canister: IDL.Record({\n canister_version: IDL.Opt(IDL.Nat64),\n canister_id: IDL.Principal,\n }),\n });\n const change_details = IDL.Variant({\n creation: IDL.Record({ controllers: IDL.Vec(IDL.Principal) }),\n code_deployment: IDL.Record({\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Null,\n install: IDL.Null,\n }),\n module_hash: IDL.Vec(IDL.Nat8),\n }),\n controllers_change: IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n }),\n code_uninstall: IDL.Null,\n });\n const change = IDL.Record({\n timestamp_nanos: IDL.Nat64,\n canister_version: IDL.Nat64,\n origin: change_origin,\n details: change_details,\n });\n const definite_canister_settings = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const canister_settings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat),\n controllers: IDL.Opt(IDL.Vec(IDL.Principal)),\n memory_allocation: IDL.Opt(IDL.Nat),\n compute_allocation: IDL.Opt(IDL.Nat),\n });\n const ecdsa_curve = IDL.Variant({ secp256k1: IDL.Null });\n const http_header = IDL.Record({ value: IDL.Text, name: IDL.Text });\n const http_response = IDL.Record({\n status: IDL.Nat,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(http_header),\n });\n const chunk_hash = IDL.Vec(IDL.Nat8);\n const wasm_module = IDL.Vec(IDL.Nat8);\n const node_metrics = IDL.Record({\n num_block_failures_total: IDL.Nat64,\n node_id: IDL.Principal,\n num_blocks_total: IDL.Nat64,\n });\n return IDL.Service({\n bitcoin_get_balance: IDL.Func([get_balance_request], [satoshi], []),\n bitcoin_get_balance_query: IDL.Func([get_balance_request], [satoshi], ['query']),\n bitcoin_get_current_fee_percentiles: IDL.Func(\n [get_current_fee_percentiles_request],\n [IDL.Vec(millisatoshi_per_byte)],\n [],\n ),\n bitcoin_get_utxos: IDL.Func([get_utxos_request], [get_utxos_response], []),\n bitcoin_get_utxos_query: IDL.Func([get_utxos_request], [get_utxos_response], ['query']),\n bitcoin_send_transaction: IDL.Func([send_transaction_request], [], []),\n canister_info: IDL.Func(\n [\n IDL.Record({\n canister_id: canister_id,\n num_requested_changes: IDL.Opt(IDL.Nat64),\n }),\n ],\n [\n IDL.Record({\n controllers: IDL.Vec(IDL.Principal),\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n recent_changes: IDL.Vec(change),\n total_num_changes: IDL.Nat64,\n }),\n ],\n [],\n ),\n canister_status: IDL.Func(\n [IDL.Record({ canister_id: canister_id })],\n [\n IDL.Record({\n status: IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n }),\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: definite_canister_settings,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [],\n ),\n clear_chunk_store: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n create_canister: IDL.Func(\n [\n IDL.Record({\n settings: IDL.Opt(canister_settings),\n sender_canister_version: IDL.Opt(IDL.Nat64),\n }),\n ],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n delete_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n deposit_cycles: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n ecdsa_public_key: IDL.Func(\n [\n IDL.Record({\n key_id: IDL.Record({ name: IDL.Text, curve: ecdsa_curve }),\n canister_id: IDL.Opt(canister_id),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [\n IDL.Record({\n public_key: IDL.Vec(IDL.Nat8),\n chain_code: IDL.Vec(IDL.Nat8),\n }),\n ],\n [],\n ),\n http_request: IDL.Func(\n [\n IDL.Record({\n url: IDL.Text,\n method: IDL.Variant({\n get: IDL.Null,\n head: IDL.Null,\n post: IDL.Null,\n }),\n max_response_bytes: IDL.Opt(IDL.Nat64),\n body: IDL.Opt(IDL.Vec(IDL.Nat8)),\n transform: IDL.Opt(\n IDL.Record({\n function: IDL.Func(\n [\n IDL.Record({\n context: IDL.Vec(IDL.Nat8),\n response: http_response,\n }),\n ],\n [http_response],\n ['query'],\n ),\n context: IDL.Vec(IDL.Nat8),\n }),\n ),\n headers: IDL.Vec(http_header),\n }),\n ],\n [http_response],\n [],\n ),\n install_chunked_code: IDL.Func(\n [\n IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module_hash: IDL.Vec(IDL.Nat8),\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Opt(IDL.Record({ skip_pre_upgrade: IDL.Opt(IDL.Bool) })),\n install: IDL.Null,\n }),\n chunk_hashes_list: IDL.Vec(chunk_hash),\n target_canister: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n storage_canister: IDL.Opt(canister_id),\n }),\n ],\n [],\n [],\n ),\n install_code: IDL.Func(\n [\n IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n wasm_module: wasm_module,\n mode: IDL.Variant({\n reinstall: IDL.Null,\n upgrade: IDL.Opt(IDL.Record({ skip_pre_upgrade: IDL.Opt(IDL.Bool) })),\n install: IDL.Null,\n }),\n canister_id: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n }),\n ],\n [],\n [],\n ),\n node_metrics_history: IDL.Func(\n [\n IDL.Record({\n start_at_timestamp_nanos: IDL.Nat64,\n subnet_id: IDL.Principal,\n }),\n ],\n [\n IDL.Vec(\n IDL.Record({\n timestamp_nanos: IDL.Nat64,\n node_metrics: IDL.Vec(node_metrics),\n }),\n ),\n ],\n [],\n ),\n provisional_create_canister_with_cycles: IDL.Func(\n [\n IDL.Record({\n settings: IDL.Opt(canister_settings),\n specified_id: IDL.Opt(canister_id),\n amount: IDL.Opt(IDL.Nat),\n sender_canister_version: IDL.Opt(IDL.Nat64),\n }),\n ],\n [IDL.Record({ canister_id: canister_id })],\n [],\n ),\n provisional_top_up_canister: IDL.Func(\n [IDL.Record({ canister_id: canister_id, amount: IDL.Nat })],\n [],\n [],\n ),\n raw_rand: IDL.Func([], [IDL.Vec(IDL.Nat8)], []),\n sign_with_ecdsa: IDL.Func(\n [\n IDL.Record({\n key_id: IDL.Record({ name: IDL.Text, curve: ecdsa_curve }),\n derivation_path: IDL.Vec(IDL.Vec(IDL.Nat8)),\n message_hash: IDL.Vec(IDL.Nat8),\n }),\n ],\n [IDL.Record({ signature: IDL.Vec(IDL.Nat8) })],\n [],\n ),\n start_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n stop_canister: IDL.Func([IDL.Record({ canister_id: canister_id })], [], []),\n stored_chunks: IDL.Func([IDL.Record({ canister_id: canister_id })], [IDL.Vec(chunk_hash)], []),\n uninstall_code: IDL.Func(\n [\n IDL.Record({\n canister_id: canister_id,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n }),\n ],\n [],\n [],\n ),\n update_settings: IDL.Func(\n [\n IDL.Record({\n canister_id: IDL.Principal,\n settings: canister_settings,\n sender_canister_version: IDL.Opt(IDL.Nat64),\n }),\n ],\n [],\n [],\n ),\n upload_chunk: IDL.Func(\n [\n IDL.Record({\n chunk: IDL.Vec(IDL.Nat8),\n canister_id: IDL.Principal,\n }),\n ],\n [chunk_hash],\n [],\n ),\n });\n};\n","import { Buffer } from 'buffer/';\nimport {\n Agent,\n getDefaultAgent,\n HttpDetailsResponse,\n QueryResponseRejected,\n QueryResponseStatus,\n ReplicaRejectCode,\n SubmitResponse,\n} from './agent';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, PollStrategyFactory, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { RequestId } from './request_id';\nimport { toHex } from './utils/buffer';\nimport { CreateCertificateOptions } from './certificate';\nimport managementCanisterIdl from './canisters/management_idl';\nimport _SERVICE, { canister_settings } from './canisters/management_service';\n\nexport class ActorCallError extends AgentError {\n constructor(\n public readonly canisterId: Principal,\n public readonly methodName: string,\n public readonly type: 'query' | 'update',\n public readonly props: Record,\n ) {\n super(\n [\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'),\n );\n }\n}\n\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly result: QueryResponseRejected,\n ) {\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: ReplicaRejectCode[result.reject_code] ?? `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n }\n}\n\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(\n canisterId: Principal,\n methodName: string,\n public readonly requestId: RequestId,\n public readonly response: SubmitResponse['response'],\n ) {\n super(canisterId, methodName, 'update', {\n 'Request ID': toHex(requestId),\n ...(response.body\n ? {\n ...(response.body.error_code\n ? {\n 'Error code': response.body.error_code,\n }\n : {}),\n 'Reject code': String(response.body.reject_code),\n 'Reject message': response.body.reject_message,\n }\n : {\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n }),\n });\n }\n}\n\n/**\n * Configuration to make calls to the Replica.\n */\nexport interface CallConfig {\n /**\n * An agent to use in this call, otherwise the actor or call will try to discover the\n * agent to use.\n */\n agent?: Agent;\n\n /**\n * A polling strategy factory that dictates how much and often we should poll the\n * read_state endpoint to get the result of an update call.\n */\n pollingStrategyFactory?: PollStrategyFactory;\n\n /**\n * The canister ID of this Actor.\n */\n canisterId?: string | Principal;\n\n /**\n * The effective canister ID. This should almost always be ignored.\n */\n effectiveCanisterId?: Principal;\n}\n\n/**\n * Configuration that can be passed to customize the Actor behaviour.\n */\nexport interface ActorConfig extends CallConfig {\n /**\n * The Canister ID of this Actor. This is required for an Actor.\n */\n canisterId: string | Principal;\n\n /**\n * An override function for update calls' CallConfig. This will be called on every calls.\n */\n callTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * An override function for query calls' CallConfig. This will be called on every query.\n */\n queryTransform?(\n methodName: string,\n args: unknown[],\n callConfig: CallConfig,\n ): Partial | void;\n\n /**\n * Polyfill for BLS Certificate verification in case wasm is not supported\n */\n blsVerify?: CreateCertificateOptions['blsVerify'];\n}\n\n// TODO: move this to proper typing when Candid support TypeScript.\n/**\n * A subclass of an actor. Actor class itself is meant to be a based class.\n */\nexport type ActorSubclass> = Actor & T;\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethod {\n (...args: Args): Promise;\n withOptions(options: CallConfig): (...args: Args) => Promise;\n}\n\n/**\n * An actor method type, defined for each methods of the actor service.\n */\nexport interface ActorMethodWithHttpDetails\n extends ActorMethod {\n (...args: Args): Promise<{ httpDetails: HttpDetailsResponse; result: Ret }>;\n}\n\nexport type FunctionWithArgsAndReturn = (\n ...args: Args\n) => Ret;\n\n// Update all entries of T with the extra information from ActorMethodWithInfo\nexport type ActorMethodMappedWithHttpDetails = {\n [K in keyof T]: T[K] extends FunctionWithArgsAndReturn\n ? ActorMethodWithHttpDetails\n : never;\n};\n\n/**\n * The mode used when installing a canister.\n */\nexport type CanisterInstallMode =\n | {\n reinstall: null;\n }\n | {\n upgrade:\n | []\n | [\n {\n skip_pre_upgrade: [] | [boolean];\n },\n ];\n }\n | {\n install: null;\n };\n\n/**\n * Internal metadata for actors. It's an enhanced version of ActorConfig with\n * some fields marked as required (as they are defaulted) and canisterId as\n * a Principal type.\n */\ninterface ActorMetadata {\n service: IDL.ServiceClass;\n agent?: Agent;\n config: ActorConfig;\n}\n\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n\nexport interface CreateActorClassOpts {\n httpDetails?: boolean;\n}\n\ninterface CreateCanisterSettings {\n freezing_threshold?: bigint;\n controllers?: Array;\n memory_allocation?: bigint;\n compute_allocation?: bigint;\n}\n\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n public static agentOf(actor: Actor): Agent | undefined {\n return actor[metadataSymbol].config.agent;\n }\n\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n public static interfaceOf(actor: Actor): IDL.ServiceClass {\n return actor[metadataSymbol].service;\n }\n\n public static canisterIdOf(actor: Actor): Principal {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n\n public static async install(\n fields: {\n module: ArrayBuffer;\n mode?: CanisterInstallMode;\n arg?: ArrayBuffer;\n },\n config: ActorConfig,\n ): Promise {\n const mode = fields.mode === undefined ? { install: null } : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n await getManagementCanister(config).install_code({\n mode,\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n sender_canister_version: [],\n });\n }\n\n public static async createCanister(\n config?: CallConfig,\n settings?: CreateCanisterSettings,\n ): Promise {\n function settingsToCanisterSettings(settings: CreateCanisterSettings): [canister_settings] {\n return [\n {\n controllers: settings.controllers ? [settings.controllers] : [],\n compute_allocation: settings.compute_allocation ? [settings.compute_allocation] : [],\n freezing_threshold: settings.freezing_threshold ? [settings.freezing_threshold] : [],\n memory_allocation: settings.memory_allocation ? [settings.memory_allocation] : [],\n },\n ];\n }\n\n const { canister_id: canisterId } = await getManagementCanister(\n config || {},\n ).provisional_create_canister_with_cycles({\n amount: [],\n settings: settingsToCanisterSettings(settings || {}),\n specified_id: [],\n sender_canister_version: [],\n });\n\n return canisterId;\n }\n\n public static async createAndInstallCanister(\n interfaceFactory: IDL.InterfaceFactory,\n fields: {\n module: ArrayBuffer;\n arg?: ArrayBuffer;\n },\n config?: CallConfig,\n ): Promise {\n const canisterId = await this.createCanister(config);\n await this.install(\n {\n ...fields,\n },\n { ...config, canisterId },\n );\n\n return this.createActor(interfaceFactory, { ...config, canisterId });\n }\n\n public static createActorClass(\n interfaceFactory: IDL.InterfaceFactory,\n options?: CreateActorClassOpts,\n ): ActorConstructor {\n const service = interfaceFactory({ IDL });\n\n class CanisterActor extends Actor {\n [x: string]: ActorMethod;\n\n constructor(config: ActorConfig) {\n if (!config.canisterId)\n throw new AgentError(\n `Canister ID is required, but received ${typeof config.canisterId} instead. If you are using automatically generated declarations, this may be because your application is not setting the canister ID in process.env correctly.`,\n );\n const canisterId =\n typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n\n super({\n config: {\n ...DEFAULT_ACTOR_CONFIG,\n ...config,\n canisterId,\n },\n service,\n });\n\n for (const [methodName, func] of service._fields) {\n if (options?.httpDetails) {\n func.annotations.push(ACTOR_METHOD_WITH_HTTP_DETAILS);\n }\n\n this[methodName] = _createActorMethod(this, methodName, func, config.blsVerify);\n }\n }\n }\n\n return CanisterActor;\n }\n\n public static createActor>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass {\n if (!configuration.canisterId) {\n throw new AgentError(\n `Canister ID is required, but received ${typeof configuration.canisterId} instead. If you are using automatically generated declarations, this may be because your application is not setting the canister ID in process.env correctly.`,\n );\n }\n return new (this.createActorClass(interfaceFactory))(\n configuration,\n ) as unknown as ActorSubclass;\n }\n\n public static createActorWithHttpDetails>(\n interfaceFactory: IDL.InterfaceFactory,\n configuration: ActorConfig,\n ): ActorSubclass> {\n return new (this.createActorClass(interfaceFactory, { httpDetails: true }))(\n configuration,\n ) as unknown as ActorSubclass>;\n }\n\n private [metadataSymbol]: ActorMetadata;\n\n protected constructor(metadata: ActorMetadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n}\n\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types: IDL.Type[], msg: ArrayBuffer) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\n\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\n\nexport type ActorConstructor = new (config: ActorConfig) => ActorSubclass;\n\nexport const ACTOR_METHOD_WITH_HTTP_DETAILS = 'http-details';\n\nfunction _createActorMethod(\n actor: Actor,\n methodName: string,\n func: IDL.FuncClass,\n blsVerify?: CreateCertificateOptions['blsVerify'],\n): ActorMethod {\n let caller: (options: CallConfig, ...args: unknown[]) => Promise;\n if (func.annotations.includes('query') || func.annotations.includes('composite_query')) {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.queryTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n\n const result = await agent.query(cid, { methodName, arg });\n\n switch (result.status) {\n case QueryResponseStatus.Rejected:\n throw new QueryCallRejectedError(cid, methodName, result);\n\n case QueryResponseStatus.Replied:\n return func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS)\n ? {\n httpDetails: result.httpDetails,\n result: decodeReturnValue(func.retTypes, result.reply.arg),\n }\n : decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n } else {\n caller = async (options, ...args) => {\n // First, if there's a config transformation, call it.\n options = {\n ...options,\n ...actor[metadataSymbol].config.callTransform?.(methodName, args, {\n ...actor[metadataSymbol].config,\n ...options,\n }),\n };\n\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = {\n ...DEFAULT_ACTOR_CONFIG,\n ...actor[metadataSymbol].config,\n ...options,\n };\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n\n if (!response.ok || response.body /* IC-1462 */) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy, blsVerify);\n const shouldIncludeHttpDetails = func.annotations.includes(ACTOR_METHOD_WITH_HTTP_DETAILS);\n\n if (responseBytes !== undefined) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: decodeReturnValue(func.retTypes, responseBytes),\n }\n : decodeReturnValue(func.retTypes, responseBytes);\n } else if (func.retTypes.length === 0) {\n return shouldIncludeHttpDetails\n ? {\n httpDetails: response,\n result: undefined,\n }\n : undefined;\n } else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n\n const handler = (...args: unknown[]) => caller({}, ...args);\n handler.withOptions =\n (options: CallConfig) =>\n (...args: unknown[]) =>\n caller(options, ...args);\n return handler as ActorMethod;\n}\n\nexport type ManagementCanisterRecord = _SERVICE;\n\n/**\n * Create a management canister actor\n * @param config - a CallConfig\n */\nexport function getManagementCanister(config: CallConfig): ActorSubclass {\n function transform(\n _methodName: string,\n args: Record & { canister_id: string }[],\n ) {\n const first = args[0];\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id as unknown);\n }\n return { effectiveCanisterId };\n }\n\n return Actor.createActor(managementCanisterIdl, {\n ...config,\n canisterId: Principal.fromHex(''),\n ...{\n callTransform: transform,\n queryTransform: transform,\n },\n });\n}\n","import { Principal } from '@dfinity/principal';\nimport * as CanisterStatus from './canisterStatus/index';\nimport { IDL } from '@dfinity/candid';\nimport { HttpAgent } from './agent/http';\nimport { Actor, ActorSubclass } from './actor';\n\n/**\n * Retrieves the Candid interface for the specified canister.\n *\n * @param agent The agent to use for the request (usually an `HttpAgent`)\n * @param canisterId A string corresponding to the canister ID\n * @returns Candid source code\n */\nexport async function fetchCandid(canisterId: string, agent?: HttpAgent): Promise {\n if (!agent) {\n // Create an anonymous `HttpAgent` (adapted from Candid UI)\n agent = new HttpAgent();\n if (agent.isLocal()) {\n agent.fetchRootKey();\n }\n }\n\n // Attempt to use canister metadata\n const status = await CanisterStatus.request({\n agent,\n canisterId: Principal.fromText(canisterId),\n paths: ['candid'],\n });\n const candid = status.get('candid') as string | undefined;\n if (candid) {\n return candid;\n }\n\n // Use `__get_candid_interface_tmp_hack` for canisters without Candid metadata\n const tmpHackInterface: IDL.InterfaceFactory = ({ IDL }) =>\n IDL.Service({\n __get_candid_interface_tmp_hack: IDL.Func([], [IDL.Text], ['query']),\n });\n const actor: ActorSubclass = Actor.createActor(tmpHackInterface, { agent, canisterId });\n return (await actor.__get_candid_interface_tmp_hack()) as string;\n}\n","export const idlFactory = ({ IDL }) => {\n const GameStatus = IDL.Variant({\n 'Finalized' : IDL.Null,\n 'Active' : IDL.Null,\n 'Complete' : IDL.Null,\n 'Nonexistent' : IDL.Null,\n });\n const QueueEntry = IDL.Record({\n 'player' : IDL.Principal,\n 'name' : IDL.Text,\n 'amount' : IDL.Nat,\n });\n const GameQueue = IDL.Vec(QueueEntry);\n const QueueValidation = IDL.Variant({\n 'Invalid' : IDL.Null,\n 'ValidReady' : IDL.Null,\n 'ValidNotReady' : IDL.Null,\n });\n const LobbyQueueJoinResult = IDL.Record({\n 'validity' : QueueValidation,\n 'playerID' : IDL.Nat,\n 'gameID' : IDL.Nat,\n });\n const LobbyLoginResult = IDL.Record({ 'credits' : IDL.Nat });\n const Lobby = IDL.Service({\n 'deposit' : IDL.Func([], [IDL.Nat], []),\n 'gameStatus' : IDL.Func([IDL.Nat], [GameStatus], []),\n 'getQueue' : IDL.Func([], [GameQueue], []),\n 'joinQueue' : IDL.Func([IDL.Text], [LobbyQueueJoinResult], []),\n 'login' : IDL.Func([], [LobbyLoginResult], []),\n });\n return Lobby;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from \"./lobby.did.js\";\nexport { idlFactory } from \"./lobby.did.js\";\n\n/* CANISTER_ID is replaced by webpack based on node environment\n * Note: canister environment variable will be standardized as\n * process.env.CANISTER_ID_\n * beginning in dfx 0.15.0\n */\nexport const canisterId =\n process.env.CANISTER_ID_LOBBY ||\n process.env.LOBBY_CANISTER_ID;\n\nexport const createActor = (canisterId, options = {}) => {\n const agent = options.agent || new HttpAgent({ ...options.agentOptions });\n\n if (options.agent && options.agentOptions) {\n console.warn(\n \"Detected both agent and agentOptions passed to createActor. Ignoring agentOptions and proceeding with the provided agent.\"\n );\n }\n\n // Fetch root key for certificate validation during development\n if (process.env.DFX_NETWORK !== \"ic\") {\n agent.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options.actorOptions,\n });\n};\n\nexport const lobby = canisterId ? createActor(canisterId) : undefined;\n","{\n \"__Candid_UI\": {\n \"local\": \"br5f7-7uaaa-aaaaa-qaaca-cai\"\n },\n \"bulldogblast\": {\n \"local\": \"bkyz2-fmaaa-aaaaa-qaaaq-cai\"\n },\n \"frontend\": {\n \"local\": \"bd3sg-teaaa-aaaaa-qaaba-cai\"\n },\n \"lobby\": {\n \"local\": \"be2us-64aaa-aaaaa-qaabq-cai\"\n }\n}","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"1siNr\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"hzj8B\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"doqUQ\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"akJkx\")).toString();","import React, { useEffect, useState } from 'react';\nimport logo from \"../assets/logo2.svg\";\nimport LogoBulldogBlast from \"../assets/Logo-Bulldog-Blast.svg\";\nimport LogoOptiGamesKO from \"../assets/Logo-OptiGames-KO.svg\";\nimport { lobby } from \"../../declarations/lobby\"\nimport canisters from \"../../../.dfx/local/canister_ids.json\";\nimport green from \"../assets/characters/green.png\";\nimport orange from \"../assets/characters/orange.png\";\nimport red from \"../assets/characters/red.png\";\nimport violet from \"../assets/characters/violet.png\";\nconst characters = { 1: green, 2: orange, 3: red, 4: violet }\n\nconst Lobby = ( { handleGameStart } ) => {\n\n const [queue, setQueue] = useState([]);\n const [playerName, setPlayerName] = useState('');\n const [playerID, setPlayerID ] = useState(null);\n const [gameID, setGameID ] = useState(null);\n const [isJoiningQueue, setIsJoiningQueue] = useState(false);\n\n const pollLobby = async () => {\n const newQueue = await lobby.getQueue()\n setQueue(newQueue);\n if (gameID != null) {\n const gameStatus = await lobby.gameStatus(gameID)\n if (\"Active\" in gameStatus) {\n handleGameStart(gameID, playerID)\n }\n }\n }\n\n useEffect(() => {\n pollLobby();\n const intervalId = setInterval(pollLobby, 1000);\n return () => clearInterval(intervalId);\n }, [ gameID ]); \n\n const handleJoinQueue = async () => {\n if (playerName.trim() == '') { return };\n setIsJoiningQueue(true)\n let queueJoinResult = await lobby.joinQueue(playerName);\n setPlayerID(queueJoinResult.playerID)\n setGameID(queueJoinResult.gameID)\n };\n\n return (\n
\n
\n \"OptiGames \n

presents

\n \"Bulldog\n
\n

the explosive vehicular combat experience.

\n \"dfinity\n\t
\n\t

In the game, click to launch a bomb. Click and drag to set a thrust. Turns tick forward every 5 seconds.

\n\t
\n
\n {(gameID == null) ? \n
\n \n setPlayerName(e.target.value)} />\n \n
:\n
\n Waiting for game...\n
\n }\n
\n Game Queue:\n
\n {queue.map((queue, i) => (\n
\n
\n \n
\n
{queue.name}
\n
\n ))}\n
\n
\n
\n
\n );\n}\n\nexport default Lobby;\n","export const idlFactory = ({ IDL }) => {\n const GameStatus = IDL.Variant({\n 'Finalized' : IDL.Null,\n 'Active' : IDL.Null,\n 'Complete' : IDL.Null,\n 'Nonexistent' : IDL.Null,\n });\n const QueueEntry = IDL.Record({\n 'player' : IDL.Principal,\n 'name' : IDL.Text,\n 'amount' : IDL.Nat,\n });\n const GameSessionResult = IDL.Record({\n 'status' : GameStatus,\n 'balances' : IDL.Vec(QueueEntry),\n });\n const GameObjectType = IDL.Variant({ 'Bomb' : IDL.Null, 'Ship' : IDL.Null });\n const Velocity = IDL.Record({ 'x' : IDL.Float64, 'y' : IDL.Float64 });\n const Acceleration = IDL.Record({ 'x' : IDL.Float64, 'y' : IDL.Float64 });\n const Position = IDL.Record({ 'x' : IDL.Float64, 'y' : IDL.Float64 });\n const InertialState = IDL.Record({\n 'velocity' : Velocity,\n 'mass' : IDL.Nat,\n 'acceleration' : Acceleration,\n 'position' : Position,\n });\n const PhysicalPresence = IDL.Record({\n 'inertialState' : InertialState,\n 'radius' : IDL.Nat,\n });\n const GameObject = IDL.Record({\n 't' : GameObjectType,\n 'id' : IDL.Nat,\n 'cleanup' : IDL.Bool,\n 'physicalPresence' : PhysicalPresence,\n });\n const BDBView = IDL.Record({\n 'status' : GameStatus,\n 'dataValues' : IDL.Vec(IDL.Nat),\n 'tick' : IDL.Nat,\n 'objects' : IDL.Vec(GameObject),\n 'dataKeys' : IDL.Vec(IDL.Text),\n });\n const Vector = IDL.Record({ 'x' : IDL.Float64, 'y' : IDL.Float64 });\n const InputCommandTypes = IDL.Variant({\n 'Fire' : IDL.Null,\n 'None' : IDL.Null,\n 'Thrust' : IDL.Null,\n });\n const InputCommand = IDL.Record({\n 'player' : IDL.Nat,\n 'vector' : Vector,\n 'commandType' : InputCommandTypes,\n });\n const Result = IDL.Variant({ 'Ok' : IDL.Null, 'Err' : IDL.Null });\n const QueueValidation = IDL.Variant({\n 'Invalid' : IDL.Null,\n 'ValidReady' : IDL.Null,\n 'ValidNotReady' : IDL.Null,\n });\n const QueueJoinResult = IDL.Record({\n 'validity' : QueueValidation,\n 'playerID' : IDL.Nat,\n 'gameID' : IDL.Nat,\n });\n const GameRouter = IDL.Service({\n 'gameSessionResult' : IDL.Func([IDL.Nat], [GameSessionResult], []),\n 'gameStatus' : IDL.Func([IDL.Nat], [GameStatus], []),\n 'getGameView' : IDL.Func([IDL.Nat], [BDBView], []),\n 'getScores' : IDL.Func([IDL.Nat], [IDL.Vec(QueueEntry)], []),\n 'getTick' : IDL.Func([IDL.Nat], [IDL.Nat], []),\n 'input' : IDL.Func([IDL.Nat, IDL.Nat, InputCommand], [Result], []),\n 'startGame' : IDL.Func([IDL.Vec(QueueEntry)], [IDL.Nat], []),\n 'testGame' : IDL.Func([], [IDL.Nat], []),\n 'validateQueue' : IDL.Func([IDL.Vec(QueueEntry)], [QueueJoinResult], []),\n });\n return GameRouter;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from \"./bulldogblast.did.js\";\nexport { idlFactory } from \"./bulldogblast.did.js\";\n\n/* CANISTER_ID is replaced by webpack based on node environment\n * Note: canister environment variable will be standardized as\n * process.env.CANISTER_ID_\n * beginning in dfx 0.15.0\n */\nexport const canisterId =\n process.env.CANISTER_ID_BULLDOGBLAST ||\n process.env.BULLDOGBLAST_CANISTER_ID;\n\nexport const createActor = (canisterId, options = {}) => {\n const agent = options.agent || new HttpAgent({ ...options.agentOptions });\n\n if (options.agent && options.agentOptions) {\n console.warn(\n \"Detected both agent and agentOptions passed to createActor. Ignoring agentOptions and proceeding with the provided agent.\"\n );\n }\n\n // Fetch root key for certificate validation during development\n if (process.env.DFX_NETWORK !== \"ic\") {\n agent.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options.actorOptions,\n });\n};\n\nexport const bulldogblast = canisterId ? createActor(canisterId) : undefined;\n","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"gPH4W\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"gpGys\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"hN7EI\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"6j6lb\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"fcTmW\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"hgK51\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"8GJJy\")).toString();","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"5pY8x\")).toString();","import React, { useState, useEffect, useRef } from 'react';\nimport { bulldogblast } from \"../../declarations/bulldogblast\"\nimport '../assets/bdb.css';\n\nimport green01 from '../assets/ships/green01.png';\nimport orange01 from '../assets/ships/orange01.png';\nimport red01 from '../assets/ships/red01.png';\nimport violet01 from '../assets/ships/violet01.png';\nimport GREEN from '../assets/tokens/GREEN.svg';\nimport ORANGE from '../assets/tokens/ORANGE.svg';\nimport RED from '../assets/tokens/RED.svg';\nimport VIOLET from '../assets/tokens/VIOLET.svg';\nimport green from \"../assets/characters/green.png\";\nimport orange from \"../assets/characters/orange.png\";\nimport red from \"../assets/characters/red.png\";\nimport violet from \"../assets/characters/violet.png\";\n\nconst assets = {\"ships\": { 1: green01, 2: orange01, 3: red01, 4: violet01 },\n \"characters\": { 1: green, 2: orange, 3: red, 4: violet },\n \"bombs\": { 1: GREEN, 2: ORANGE, 3: RED, 4: VIOLET }\n };\n\nconst BulldogBlast = ( { gameID, playerID, handleGameEnd }) => {\n\n let isDragging = false;\n let startPoint = {x:0, y:0};\n let lastTimestamp = 0;\n let tick = 0;\n let gos = {}\n let [names, setNames] = useState([\"loading...\", \"loading...\", \"loading...\", \"loading...\"])\n let [scores, setScores] = useState([0,0,0,0])\n\n const svgRef = useRef(null);\n let frames = 0\n let deltaTime = 0;\n\n\n const resizeSvg = () => {\n const { innerWidth, innerHeight } = window;\n const aspectRatio = 800 / 600;\n const svgElement = svgRef.current;\n\n const windowRatio = innerWidth / innerHeight;\n if (windowRatio > aspectRatio) {\n // Fit to height\n svgElement.setAttribute('height', innerHeight);\n svgElement.setAttribute('width', innerHeight * aspectRatio);\n } else {\n // Fit to width\n svgElement.setAttribute('width', innerWidth);\n svgElement.setAttribute('height', innerWidth / aspectRatio);\n }\n };\n\n useEffect(() => {\n window.addEventListener('resize', resizeSvg);\n resizeSvg(); // Initial resize\n return () => {\n window.removeEventListener('resize', resizeSvg);\n };\n }, []);\n\n //Draw stars\n useEffect(() => {\n const svgElement = svgRef.current;\n const numStars = 50;\n for (let i = 0; i < numStars; i++) {\n const star = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n star.setAttribute('cx', Math.random() * 800); // Random x-coordinate\n star.setAttribute('cy', Math.random() * 600); // Random y-coordinate\n star.setAttribute('r', Math.random() * 2 + 0.5); // Random radius between 0.5 and 2\n star.setAttribute('fill', 'white'); // Star color\n svgElement.appendChild(star);\n }\n return () => {\n while (svgElement.firstChild) {\n svgElement.removeChild(svgElement.firstChild);\n }\n };\n }, []); \n\n const rotation = function(velocity, defaultDegrees) {\n let degrees = (velocity.x === 0 && velocity.y === 0) ? defaultDegrees\n : Math.atan2(velocity.y, velocity.x) * (180 / Math.PI) + 90;\n return degrees;\n };\n\n function createShip(ship) {\n const svgElement = svgRef.current;\n let {id, physicalPresence } = ship;\n let { position } = physicalPresence.inertialState;\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', '40');\n svg.setAttribute('height', '50'); \n\n const background = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n background.setAttribute('width', '40');\n background.setAttribute('height', '5'); \n background.setAttribute('fill', 'red'); \n svg.appendChild(background);\n \n const healthBar = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n healthBar.setAttribute('width', 40 * ship.health.toString() / 100);\n healthBar.setAttribute('height', '5'); \n healthBar.setAttribute('fill', 'green'); \n svg.appendChild(healthBar)\n\n const img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttribute('href', assets.ships[id]);\n img.setAttribute('width', '40');\n img.setAttribute('height', '40');\n svg.appendChild(img);\n\n if (ship.health == 0) { \n svg.setAttribute('visibility', 'hidden');\n }\n\n const startRotations = { 1: 135, 2: 225, 3: 45, 4: 315};\n ship.defaultDegrees = startRotations[ship.id];\n\n svgElement.appendChild(svg);\n\n ship[\"svg\"] = svg;\n ship[\"img\"] = img;\n ship[\"healthbar\"] = healthBar\n return ship;\n }\n\n function createBomb(bomb) {\n const svgElement = svgRef.current;\n let {id, physicalPresence, fill, rotate} = bomb;\n let { inertialState } = physicalPresence;\n let {position} = inertialState;\n window.is = inertialState;\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', '40');\n svg.setAttribute('height', '50');\n\n const img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttribute('href', assets.bombs[bomb.launchedBy]);\n img.setAttribute('width', '50');\n img.setAttribute('height', '50'); \n svg.appendChild(img);\n\n svgElement.appendChild(svg);\n bomb[\"svg\"] = svg;\n bomb[\"img\"] = img;\n return bomb;\n }\n\n function distance(p1, p2) {\n return Math.sqrt((p2.x - p1.x)**2 + (p2.y - p1.y)**2)\n }\n\n function allShips() {\n return Object.values(gos).filter(x => goType(x) === \"Ship\")\n }\n\n function createExplosion(launchedBy, position) {\n const explosion = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n explosion.setAttribute('cx', position.x)\n explosion.setAttribute('cy', position.y)\n explosion.setAttribute('r', '100')\n const explosionColors = {1: \"green\", 2: \"orange\", 3: \"red\", 4: \"purple\"};\n let color = explosionColors[launchedBy] ? explosionColors[launchedBy] : \"white\";\n explosion.setAttribute('fill', color);\n explosion.setAttribute('class', \"explosion\")\n document.getElementById('game-svg').appendChild(explosion);\n }\n\n function blowUp(bomb) {\n let { physicalPresence, launchedBy, power, blastRadius } = bomb;\n let {position} = physicalPresence.inertialState;\n createExplosion(launchedBy, position);\n let newScores = []\n allShips().forEach(ship => {\n let health = ship.health.toString()\n newScores.push(ship.score.toString());\n ship.healthbar.setAttribute('width', 40 * health / 100);\n if (health == 0 && ship.svg.getAttribute('visibility') !== \"hidden\" ) {\n ship.svg.setAttribute('visibility', 'hidden');\n //createExplosion(ship.physicalPresence.inertialState.position)\n }\n })\n setScores(newScores)\n\n }\n\n var goType = (go) => Object.keys(go.t)[0]\n\n var create = (go) => {\n go.defaultDegrees = 0;\n switch (goType(go)) {\n case \"Ship\":\n return createShip(go)\n case \"Bomb\":\n return createBomb(go)\n }\n }\n\n var removeObject = (goid) => {\n let go = gos[goid]\n if (goType(go) == \"Bomb\") {\n blowUp(go)\n }\n go.svg.remove();\n delete gos[goid]\n }\n\n var refresh = async() => {\n if (!gameID) return;\n const canisterTick = await bulldogblast.getTick(gameID);\n if (canisterTick == tick) return;\n\n const gameStatus = await bulldogblast.gameStatus(gameID)\n if (\"Complete\" in gameStatus) {\n handleGameEnd()\n }\n tick = canisterTick;\n const result = await bulldogblast.getGameView(gameID);\n let natData = {}\n result[\"dataKeys\"].forEach((k,i) => {\n const [id, type, key] = k.split(\".\")\n const value = result[\"dataValues\"][i]\n if (!natData[id]) { natData[id] = {}}\n natData[id][key] = value \n })\n\n //Update or create local objects\n await Promise.all(result[\"objects\"].map(async (x) => {\n let localGo = { ...(gos[x.id] || {}), ...x, ...(natData[x.id] || {}) };\n gos[x.id] = gos[x.id] ? localGo : create(localGo);\n }));\n\n Object.keys(gos).forEach(goid => {\n let incomingIds = result[\"objects\"].map(x => x.id.toString());\n if (!(incomingIds.includes(goid))) {\n removeObject(goid)\n }\n })\n \n // frames = 1000\n lastTimestamp = 0\n moveObjects()\n };\n\n\n const fetchScores = async () => {\n const scores = await bulldogblast.getScores(gameID)\n setNames(scores.map(x => x['name']))\n }\n\n useEffect(() => {\n refresh()\n fetchScores()\n const intervalId = setInterval(refresh, 1000);\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n let vectorAdd = (v1, v2) => {\n v1.x += v2.x;\n v1.y += v2.y;\n }\n\n function moveObjects() {\n/* if (frames <= 0) {\n return\n }*/\n\n/* let timestamp = Date.now();\n if (lastTimestamp !== 0) {\n deltaTime = (timestamp - lastTimestamp);\n } else {\n deltaTime = 1\n }\n frames = frames - deltaTime;\n deltaTime = deltaTime / 10 //100 units of game time = 1 second\n lastTimestamp = timestamp;*/\n deltaTime = 100\n\n Object.values(gos).forEach((go) => {\n let {position, velocity, acceleration} = go.physicalPresence.inertialState\n vectorAdd(velocity, {x: acceleration.x * deltaTime, y: acceleration.y * deltaTime})\n let interpolatedPosition = {\n x: ((position.x + velocity.x * deltaTime) + 800) % 800,\n y: ((position.y + velocity.y * deltaTime) + 600) % 600\n };\n go.physicalPresence.inertialState.position = interpolatedPosition;\n let degrees = rotation(velocity, go.defaultDegrees);\n go.svg.setAttribute('transform', `translate(${interpolatedPosition.x - 20} ${interpolatedPosition.y - 25})`);\n if (go.img) {\n go.img.setAttribute('transform', `rotate(${degrees} 20 20)`);\n }\n\n })\n //requestAnimationFrame(moveObjects);\n }\n\n //mousedown\n useEffect(() => {\n const svgElement = svgRef.current;\n\n const handleMouseDown = event => {\n isDragging = true;\n const svgRect = svgElement.getBoundingClientRect();\n const svgPoint = svgElement.createSVGPoint();\n svgPoint.x = event.clientX;\n svgPoint.y = event.clientY;\n startPoint =svgPoint.matrixTransform(svgElement.getScreenCTM().inverse());\n };\n\n svgElement.addEventListener('mousedown', handleMouseDown);\n\n return () => {\n svgElement.removeEventListener('mousedown', handleMouseDown);\n };\n }, []); \n\n //mouseup\n useEffect(() => {\n const svgElement = svgRef.current;\n const handleMouseUp = async event => {\n if (!isDragging) return;\n const svgRect = svgElement.getBoundingClientRect();\n const svgPoint = svgElement.createSVGPoint();\n svgPoint.x = event.clientX;\n svgPoint.y = event.clientY;\n const endPoint = svgPoint.matrixTransform(svgElement.getScreenCTM().inverse());\n const dx = endPoint.x - startPoint.x;\n const dy = endPoint.y - startPoint.y;\n const swipeLength = Math.sqrt(dx ** 2 + dy ** 2);\n\n if (swipeLength > 10) {\n const normalizedVector = { x: dx / swipeLength, y: dy / swipeLength };\n const result = await bulldogblast.input(gameID, playerID, {\n commandType: { Thrust: null },\n vector: normalizedVector,\n player: playerID\n });\n } else {\n const targetPoint = { x: endPoint.x, y: endPoint.y };\n const result = await bulldogblast.input(gameID, playerID, {\n commandType: { Fire: null },\n vector: targetPoint,\n player: playerID\n });\n }\n isDragging = false;\n };\n\n svgElement.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n svgElement.removeEventListener('mouseup', handleMouseUp);\n };\n }, []);\n\n useEffect(() => {\n const svgElement = svgRef.current;\n const handleMouseLeave = () => {\n isDragging = false;\n };\n svgElement.addEventListener('mouseleave', handleMouseLeave);\n return () => {\n svgElement.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, []);\n\n return (\n
\n { ['top-left', 'top-right', 'bottom-left', 'bottom-right'].map((position, i) => {\n const playerID = i+1\n return(\n
\n \n
{names[i]}
\n
{scores[i]*100}
\n
\n )}\n )}\n \n \n \n
\n );\n}\n\nexport default BulldogBlast;\n","import * as React from 'react';\nimport Lobby from \"./Lobby\"\nimport BulldogBlast from \"./BulldogBlast\"\n\nconst App = () => {\n const [context, setContext] = React.useState(\"lobby\");\n const [gameID, setGameID] = React.useState(null);\n const [playerID, setPlayerID] = React.useState(null);\n\n const inputRef = React.useRef();\n\n const handleGameStart = (gameID, playerID) => {\n setGameID(gameID);\n setPlayerID(playerID);\n setContext(\"game\");\n }\n\n const handleGameEnd = async () => {\n setPlayerID(null)\n setGameID(null)\n setContext(\"lobby\")\n }\n\n return (\n
\n {(context == \"lobby\") ?\n :\n }\n
\n );\n}\n\nexport default App;\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));"],"names":["$de758a360a70d3f5$export$6503ec6e8aabbaf","$de758a360a70d3f5$export$f7ad0328861e2f03","$de758a360a70d3f5$var$mapping","pairs","keys","Object","i","length","id","resolved","Error","$2cb2e9e42f48b616$export$ffb0004e005737fa","$2cb2e9e42f48b616$export$34b9dba7ce09269b","$2cb2e9e42f48b616$export$25062201e9e25d76","$2cb2e9e42f48b616$var$g","Symbol","for","$2cb2e9e42f48b616$var$h","$2cb2e9e42f48b616$var$m","$bAJ3U","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","$2cb2e9e42f48b616$var$n","prototype","hasOwnProperty","$2cb2e9e42f48b616$var$p","key","ref","__self","__source","$2cb2e9e42f48b616$var$q","c","a","k","b","d","e","l","call","defaultProps","$$typeof","type","props","_owner","current","$93a05e168dbe51f1$var$getOwnPropertySymbols","getOwnPropertySymbols","$93a05e168dbe51f1$var$hasOwnProperty","$93a05e168dbe51f1$var$propIsEnumerable","propertyIsEnumerable","$93a05e168dbe51f1$var$toObject","val","TypeError","module","exports","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","n","join","test3","split","forEach","letter","err","$93a05e168dbe51f1$var$shouldUseNative","target","source","from","symbols","to","s","arguments","parcelRequire","$c6335d252d52a5dd$export$ffb0004e005737fa","$c6335d252d52a5dd$export$5f8d39834fd61797","$c6335d252d52a5dd$export$e2c29f18771995cb","$c6335d252d52a5dd$export$74bf444e3cd11ea5","$c6335d252d52a5dd$export$dca3b0875bd9a954","$c6335d252d52a5dd$export$16fa2f45be04daa8","$c6335d252d52a5dd$export$221d75b3f55bb0bd","$c6335d252d52a5dd$export$ae55be85d98224ed","$c6335d252d52a5dd$export$e530037191fcd5d7","$c6335d252d52a5dd$export$fd42f52fd3ae1109","$c6335d252d52a5dd$export$c8a8987d4410bf2d","$c6335d252d52a5dd$export$d38cd72104c1f0e9","$c6335d252d52a5dd$export$7d1e3a5e95ceca43","$c6335d252d52a5dd$export$257a8862b851cb5b","$c6335d252d52a5dd$export$a8257692ac88316c","$c6335d252d52a5dd$export$488013bae63b21da","$c6335d252d52a5dd$export$7c73462e0d25e514","$c6335d252d52a5dd$export$35808ee640e87ca7","$c6335d252d52a5dd$export$fae74005e78b1a27","$c6335d252d52a5dd$export$dc8fbce3eb94dc1e","$c6335d252d52a5dd$export$6d9c69b0de29b591","$c6335d252d52a5dd$export$d5a552a76deda3c2","$c6335d252d52a5dd$export$e5c5a5f917a5871c","$c6335d252d52a5dd$export$1538c33de8887b59","$c6335d252d52a5dd$export$13e3392192263954","$c6335d252d52a5dd$export$b8f5890fc79d6aca","$c6335d252d52a5dd$export$60241385465d0a34","$c6335d252d52a5dd$export$83d89fbfd8236492","$c6335d252d52a5dd$var$n","$c6335d252d52a5dd$var$p","$c6335d252d52a5dd$var$q","$c6335d252d52a5dd$var$r","$c6335d252d52a5dd$var$t","$c6335d252d52a5dd$var$u","$c6335d252d52a5dd$var$v","$c6335d252d52a5dd$var$w","$c6335d252d52a5dd$var$x","iterator","$c6335d252d52a5dd$var$z","encodeURIComponent","$c6335d252d52a5dd$var$A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","$c6335d252d52a5dd$var$B","$c6335d252d52a5dd$var$C","this","context","refs","updater","$c6335d252d52a5dd$var$D","$c6335d252d52a5dd$var$E","isReactComponent","setState","forceUpdate","$c6335d252d52a5dd$var$F","constructor","$cFOlw","isPureReactComponent","$c6335d252d52a5dd$var$G","$c6335d252d52a5dd$var$H","$c6335d252d52a5dd$var$I","$c6335d252d52a5dd$var$J","h","g","children","f","Array","m","$c6335d252d52a5dd$var$L","$c6335d252d52a5dd$var$M","$c6335d252d52a5dd$var$N","a1","replace","$c6335d252d52a5dd$var$escape","toString","$c6335d252d52a5dd$var$O","a2","isArray","$c6335d252d52a5dd$var$K","push","next","done","value","$c6335d252d52a5dd$var$P","a3","$c6335d252d52a5dd$var$Q","_status","b1","_result","then","default","$c6335d252d52a5dd$var$R","$c6335d252d52a5dd$var$S","apply","count","toArray","a4","only","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","IsSomeRendererActing","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","bind","render","_payload","_init","compare","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","$c108a9d717b309f9$export$ae55be85d98224ed","$c108a9d717b309f9$export$d39a5bbd09211389","$c108a9d717b309f9$export$466bfc07425424d5","$c108a9d717b309f9$export$cd75ccfd720a3cd4","$c108a9d717b309f9$export$fa8d919ba61d84db","$c108a9d717b309f9$export$b3890eb0ae9dca99","$c108a9d717b309f9$export$502457920280e6be","$c108a9d717b309f9$export$c78a37762a8d58e1","$c108a9d717b309f9$export$2577ef5d2565d52f","$c108a9d717b309f9$export$dc54d992c10e8a18","$c108a9d717b309f9$export$83d89fbfd8236492","$c108a9d717b309f9$var$y","$c108a9d717b309f9$var$ba","Set","$c108a9d717b309f9$var$ca","$c108a9d717b309f9$var$da","$c108a9d717b309f9$var$ea","add","$c108a9d717b309f9$var$fa","window","document","createElement","$c108a9d717b309f9$var$ha","$c108a9d717b309f9$var$ia","$c108a9d717b309f9$var$ja","$c108a9d717b309f9$var$ka","$c108a9d717b309f9$var$B","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","$c108a9d717b309f9$var$D","toLowerCase","$c108a9d717b309f9$var$oa","$c108a9d717b309f9$var$pa","toUpperCase","$c108a9d717b309f9$var$qa","slice","$c108a9d717b309f9$var$ma","isNaN","$c108a9d717b309f9$var$na","test","$c108a9d717b309f9$var$la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","$c108a9d717b309f9$var$ra","$c108a9d717b309f9$var$sa","$c108a9d717b309f9$var$ta","$c108a9d717b309f9$var$ua","$c108a9d717b309f9$var$wa","$c108a9d717b309f9$var$xa","$c108a9d717b309f9$var$ya","$c108a9d717b309f9$var$za","$c108a9d717b309f9$var$Aa","$c108a9d717b309f9$var$Ba","$c108a9d717b309f9$var$Ca","$c108a9d717b309f9$var$Da","$c108a9d717b309f9$var$Ea","$c108a9d717b309f9$var$Fa","$c108a9d717b309f9$var$Ga","$c108a9d717b309f9$var$Ha","$c108a9d717b309f9$var$Ia","$c108a9d717b309f9$var$Ja","$c108a9d717b309f9$var$E","$c108a9d717b309f9$var$Ma","$c108a9d717b309f9$var$Ka","$c108a9d717b309f9$var$La","$c108a9d717b309f9$var$Na","stack","trim","match","$c108a9d717b309f9$var$Oa","$c108a9d717b309f9$var$Pa","prepareStackTrace","defineProperty","set","Reflect","construct","displayName","name","$c108a9d717b309f9$var$Qa","tag","_render","$c108a9d717b309f9$var$Ra","$c108a9d717b309f9$var$Sa","$c108a9d717b309f9$var$Ta","nodeName","$c108a9d717b309f9$var$Va","_valueTracker","getOwnPropertyDescriptor","get","configurable","enumerable","getValue","setValue","stopTracking","$c108a9d717b309f9$var$Ua","$c108a9d717b309f9$var$Wa","checked","$c108a9d717b309f9$var$Xa","activeElement","body","$c108a9d717b309f9$var$Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","$c108a9d717b309f9$var$Za","initialValue","controlled","$c108a9d717b309f9$var$$a","$c108a9d717b309f9$var$ab","$c108a9d717b309f9$var$bb","$c108a9d717b309f9$var$cb","ownerDocument","$c108a9d717b309f9$var$eb","Children","$c108a9d717b309f9$var$db","$c108a9d717b309f9$var$fb","options","selected","defaultSelected","disabled","$c108a9d717b309f9$var$gb","dangerouslySetInnerHTML","$c108a9d717b309f9$var$hb","$c108a9d717b309f9$var$ib","$c108a9d717b309f9$var$jb","textContent","$c108a9d717b309f9$var$kb","$c108a9d717b309f9$var$lb","$c108a9d717b309f9$var$mb","$c108a9d717b309f9$var$nb","$c108a9d717b309f9$var$ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","$c108a9d717b309f9$var$pb","lastChild","nodeType","nodeValue","$c108a9d717b309f9$var$qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","$c108a9d717b309f9$var$rb","$c108a9d717b309f9$var$sb","$c108a9d717b309f9$var$tb","style","indexOf","setProperty","charAt","substring","$c108a9d717b309f9$var$ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","$c108a9d717b309f9$var$vb","$c108a9d717b309f9$var$wb","is","$c108a9d717b309f9$var$xb","srcElement","correspondingUseElement","parentNode","$c108a9d717b309f9$var$yb","$c108a9d717b309f9$var$zb","$c108a9d717b309f9$var$Ab","$c108a9d717b309f9$var$Bb","$c108a9d717b309f9$var$Cb","stateNode","$c108a9d717b309f9$var$Db","$c108a9d717b309f9$var$Eb","$c108a9d717b309f9$var$Fb","$c108a9d717b309f9$var$Gb","$c108a9d717b309f9$var$Hb","$c108a9d717b309f9$var$Ib","$c108a9d717b309f9$var$Jb","$c108a9d717b309f9$var$Kb","$c108a9d717b309f9$var$Lb","$c108a9d717b309f9$var$Mb","$c108a9d717b309f9$var$Ob","$c108a9d717b309f9$var$Pb","$c108a9d717b309f9$var$Qb","addEventListener","removeEventListener","$c108a9d717b309f9$var$Rb","onError","$c108a9d717b309f9$var$Sb","$c108a9d717b309f9$var$Tb","$c108a9d717b309f9$var$Ub","$c108a9d717b309f9$var$Vb","$c108a9d717b309f9$var$Wb","$c108a9d717b309f9$var$Xb","$c108a9d717b309f9$var$Zb","alternate","return","flags","$c108a9d717b309f9$var$$b","a5","memoizedState","dehydrated","$c108a9d717b309f9$var$ac","a6","$c108a9d717b309f9$var$cc","a8","a7","child","sibling","$c108a9d717b309f9$var$bc","$c108a9d717b309f9$var$dc","a9","$c108a9d717b309f9$var$ec","$c108a9d717b309f9$var$fc","$c108a9d717b309f9$var$gc","$c108a9d717b309f9$var$hc","$c108a9d717b309f9$var$ic","$c108a9d717b309f9$var$jc","$c108a9d717b309f9$var$kc","$c108a9d717b309f9$var$lc","$c108a9d717b309f9$var$mc","$c108a9d717b309f9$var$nc","Map","$c108a9d717b309f9$var$oc","$c108a9d717b309f9$var$pc","$c108a9d717b309f9$var$qc","$c108a9d717b309f9$var$rc","a10","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","$c108a9d717b309f9$var$sc","a11","delete","pointerId","$c108a9d717b309f9$var$tc","a12","$c108a9d717b309f9$var$vc","a14","$c108a9d717b309f9$var$wc","lanePriority","$9cEkc","unstable_runWithPriority","priority","hydrate","containerInfo","$c108a9d717b309f9$var$xc","a15","$c108a9d717b309f9$var$yc","shift","$c108a9d717b309f9$var$zc","a16","$c108a9d717b309f9$var$Ac","a17","$c108a9d717b309f9$var$Bc","a18","unstable_scheduleCallback","unstable_NormalPriority","$c108a9d717b309f9$var$Cc","a19","$c108a9d717b309f9$var$Dc","a20","$c108a9d717b309f9$var$Ec","animationend","animationiteration","animationstart","transitionend","$c108a9d717b309f9$var$Fc","$c108a9d717b309f9$var$Gc","$c108a9d717b309f9$var$Hc","a21","animation","$c108a9d717b309f9$var$Ic","$c108a9d717b309f9$var$Jc","$c108a9d717b309f9$var$Kc","$c108a9d717b309f9$var$Lc","$c108a9d717b309f9$var$Mc","$c108a9d717b309f9$var$Nc","$c108a9d717b309f9$var$Oc","$c108a9d717b309f9$var$Pc","a22","$c108a9d717b309f9$var$Qc","unstable_now","$c108a9d717b309f9$var$F","$c108a9d717b309f9$var$Rc","a23","$c108a9d717b309f9$var$Uc","a26","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","$c108a9d717b309f9$var$Vc","entangledLanes","entanglements","$c108a9d717b309f9$var$Wc","a27","$c108a9d717b309f9$var$Xc","a28","$c108a9d717b309f9$var$Yc","a29","$c108a9d717b309f9$var$Zc","a30","$c108a9d717b309f9$var$$c","a31","eventTimes","Math","clz32","a32","$c108a9d717b309f9$var$bd","$c108a9d717b309f9$var$cd","log","LN2","$c108a9d717b309f9$var$dd","unstable_UserBlockingPriority","$c108a9d717b309f9$var$ed","$c108a9d717b309f9$var$fd","$c108a9d717b309f9$var$gd","a33","$c108a9d717b309f9$var$hd","$c108a9d717b309f9$var$id","a34","a35","a13","$c108a9d717b309f9$var$uc","$c108a9d717b309f9$var$jd","a36","$c108a9d717b309f9$var$kd","$c108a9d717b309f9$var$ld","$c108a9d717b309f9$var$md","$c108a9d717b309f9$var$nd","a37","$c108a9d717b309f9$var$od","a38","keyCode","charCode","$c108a9d717b309f9$var$pd","$c108a9d717b309f9$var$qd","$c108a9d717b309f9$var$rd","a39","b2","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","a40","stopPropagation","a41","cancelBubble","persist","isPersistent","$c108a9d717b309f9$var$wd","$c108a9d717b309f9$var$xd","$c108a9d717b309f9$var$yd","$c108a9d717b309f9$var$sd","eventPhase","bubbles","cancelable","timeStamp","a42","Date","now","isTrusted","$c108a9d717b309f9$var$td","$c108a9d717b309f9$var$ud","view","detail","$c108a9d717b309f9$var$vd","$c108a9d717b309f9$var$Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","$c108a9d717b309f9$var$zd","button","buttons","relatedTarget","a43","fromElement","toElement","movementX","a44","movementY","a45","$c108a9d717b309f9$var$Bd","$c108a9d717b309f9$var$Dd","dataTransfer","$c108a9d717b309f9$var$Fd","$c108a9d717b309f9$var$Hd","animationName","elapsedTime","pseudoElement","$c108a9d717b309f9$var$Jd","clipboardData","a46","$c108a9d717b309f9$var$Ld","data","$c108a9d717b309f9$var$Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","$c108a9d717b309f9$var$Nd","$c108a9d717b309f9$var$Od","Alt","Control","Meta","Shift","$c108a9d717b309f9$var$Pd","a47","$c108a9d717b309f9$var$Rd","a48","code","location","repeat","locale","a49","a50","which","a51","$c108a9d717b309f9$var$Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c108a9d717b309f9$var$Vd","touches","targetTouches","changedTouches","$c108a9d717b309f9$var$Xd","$c108a9d717b309f9$var$Zd","deltaX","a52","wheelDeltaX","deltaY","a53","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$c108a9d717b309f9$var$$d","$c108a9d717b309f9$var$ae","$c108a9d717b309f9$var$be","documentMode","$c108a9d717b309f9$var$ce","$c108a9d717b309f9$var$de","$c108a9d717b309f9$var$ee","$c108a9d717b309f9$var$fe","$c108a9d717b309f9$var$ge","a54","$c108a9d717b309f9$var$he","a55","$c108a9d717b309f9$var$ie","$c108a9d717b309f9$var$le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","$c108a9d717b309f9$var$me","a58","$c108a9d717b309f9$var$ne","a59","$c108a9d717b309f9$var$oe","event","listeners","$c108a9d717b309f9$var$pe","$c108a9d717b309f9$var$qe","$c108a9d717b309f9$var$re","a60","$c108a9d717b309f9$var$se","$c108a9d717b309f9$var$te","a61","$c108a9d717b309f9$var$ue","$c108a9d717b309f9$var$ve","a62","$c108a9d717b309f9$var$we","$c108a9d717b309f9$var$xe","$c108a9d717b309f9$var$ye","$c108a9d717b309f9$var$ze","oninput","$c108a9d717b309f9$var$Ae","detachEvent","$c108a9d717b309f9$var$Be","a63","$c108a9d717b309f9$var$Ce","a64","attachEvent","$c108a9d717b309f9$var$De","a65","$c108a9d717b309f9$var$Ee","a66","$c108a9d717b309f9$var$Fe","a67","$c108a9d717b309f9$var$He","a68","$c108a9d717b309f9$var$Ie","$c108a9d717b309f9$var$Je","a69","$c108a9d717b309f9$var$Ke","a70","$c108a9d717b309f9$var$Le","a71","node","offset","nextSibling","$c108a9d717b309f9$var$Me","a72","contains","compareDocumentPosition","$c108a9d717b309f9$var$Ne","a73","HTMLIFrameElement","contentWindow","href","$c108a9d717b309f9$var$Oe","a74","contentEditable","$c108a9d717b309f9$var$Pe","$c108a9d717b309f9$var$Qe","$c108a9d717b309f9$var$Re","$c108a9d717b309f9$var$Se","$c108a9d717b309f9$var$Te","$c108a9d717b309f9$var$Ue","a75","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","$c108a9d717b309f9$var$Ve","$c108a9d717b309f9$var$We","$c108a9d717b309f9$var$Xe","$c108a9d717b309f9$var$Ye","concat","$c108a9d717b309f9$var$Ze","a76","$c108a9d717b309f9$var$Yb","a77","instance","listener","$c108a9d717b309f9$var$G","a78","$c108a9d717b309f9$var$$e","has","$c108a9d717b309f9$var$af","$c108a9d717b309f9$var$bf","random","$c108a9d717b309f9$var$cf","a79","$c108a9d717b309f9$var$df","a80","a81","capture","passive","a82","d1","e1","$c108a9d717b309f9$var$Nb","x","w","z","u","q","t","v","$c108a9d717b309f9$var$ef","$c108a9d717b309f9$var$ff","parentWindow","$c108a9d717b309f9$var$gf","$c108a9d717b309f9$var$hf","J","K","Q","L","a56","$c108a9d717b309f9$var$je","a57","char","$c108a9d717b309f9$var$ke","a83","a84","unshift","a85","a86","$c108a9d717b309f9$var$jf","$c108a9d717b309f9$var$kf","$c108a9d717b309f9$var$lf","$c108a9d717b309f9$var$mf","a87","autoFocus","$c108a9d717b309f9$var$nf","a88","__html","$c108a9d717b309f9$var$of","setTimeout","$c108a9d717b309f9$var$pf","clearTimeout","$c108a9d717b309f9$var$qf","a89","$c108a9d717b309f9$var$rf","a90","$c108a9d717b309f9$var$sf","a91","previousSibling","$c108a9d717b309f9$var$tf","$c108a9d717b309f9$var$vf","$c108a9d717b309f9$var$wf","$c108a9d717b309f9$var$xf","$c108a9d717b309f9$var$yf","a93","a94","a95","a96","a97","$c108a9d717b309f9$var$zf","$c108a9d717b309f9$var$Af","$c108a9d717b309f9$var$Bf","a98","$c108a9d717b309f9$var$H","a99","$c108a9d717b309f9$var$I","a100","$c108a9d717b309f9$var$Cf","$c108a9d717b309f9$var$M","$c108a9d717b309f9$var$N","$c108a9d717b309f9$var$Df","$c108a9d717b309f9$var$Ef","a101","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","$c108a9d717b309f9$var$Ff","a102","childContextTypes","$c108a9d717b309f9$var$Gf","$c108a9d717b309f9$var$Hf","$c108a9d717b309f9$var$If","a103","getChildContext","$c108a9d717b309f9$var$Jf","a104","__reactInternalMemoizedMergedChildContext","$c108a9d717b309f9$var$Kf","a105","$c108a9d717b309f9$var$Lf","$c108a9d717b309f9$var$Mf","$c108a9d717b309f9$var$Nf","$c108a9d717b309f9$var$Of","$c108a9d717b309f9$var$Pf","unstable_cancelCallback","$c108a9d717b309f9$var$Qf","unstable_shouldYield","$c108a9d717b309f9$var$Rf","unstable_requestPaint","$c108a9d717b309f9$var$Sf","$c108a9d717b309f9$var$Tf","unstable_getCurrentPriorityLevel","$c108a9d717b309f9$var$Uf","unstable_ImmediatePriority","$c108a9d717b309f9$var$Vf","$c108a9d717b309f9$var$Wf","$c108a9d717b309f9$var$Xf","unstable_LowPriority","$c108a9d717b309f9$var$Yf","unstable_IdlePriority","$c108a9d717b309f9$var$Zf","$c108a9d717b309f9$var$$f","$c108a9d717b309f9$var$ag","$c108a9d717b309f9$var$bg","$c108a9d717b309f9$var$cg","$c108a9d717b309f9$var$dg","$c108a9d717b309f9$var$O","$c108a9d717b309f9$var$eg","$c108a9d717b309f9$var$fg","a106","$c108a9d717b309f9$var$gg","a107","$c108a9d717b309f9$var$hg","a108","$c108a9d717b309f9$var$ig","a109","$c108a9d717b309f9$var$jg","a110","$c108a9d717b309f9$var$kg","$c108a9d717b309f9$var$lg","a111","$c108a9d717b309f9$var$mg","$c108a9d717b309f9$var$ng","$c108a9d717b309f9$var$og","$c108a9d717b309f9$var$pg","$c108a9d717b309f9$var$qg","$c108a9d717b309f9$var$rg","a112","$c108a9d717b309f9$var$sg","a113","childLanes","$c108a9d717b309f9$var$tg","a114","dependencies","firstContext","lanes","$c108a9d717b309f9$var$ug","$c108a9d717b309f9$var$vg","a115","observedBits","responders","$c108a9d717b309f9$var$wg","$c108a9d717b309f9$var$xg","a116","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","$c108a9d717b309f9$var$yg","a117","$c108a9d717b309f9$var$zg","a118","eventTime","lane","payload","callback","$c108a9d717b309f9$var$Ag","a119","$c108a9d717b309f9$var$Bg","a120","$c108a9d717b309f9$var$Cg","a121","A","p","C","$c108a9d717b309f9$var$Dg","$c108a9d717b309f9$var$Eg","a122","$c108a9d717b309f9$var$Fg","Component","$c108a9d717b309f9$var$Gg","a123","$c108a9d717b309f9$var$Kg","a124","_reactInternals","a125","$c108a9d717b309f9$var$Hg","$c108a9d717b309f9$var$Ig","$c108a9d717b309f9$var$Jg","a126","a127","$c108a9d717b309f9$var$Lg","a128","shouldComponentUpdate","$c108a9d717b309f9$var$Mg","a129","contextType","state","$c108a9d717b309f9$var$Ng","a130","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","$c108a9d717b309f9$var$Og","a131","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","$c108a9d717b309f9$var$Pg","$c108a9d717b309f9$var$Qg","a132","b3","_stringRef","a133","$c108a9d717b309f9$var$Rg","a134","$c108a9d717b309f9$var$Sg","a135","b4","lastEffect","nextEffect","firstEffect","c1","d2","a136","index","e2","a137","$c108a9d717b309f9$var$Tg","f1","g1","h1","a138","$c108a9d717b309f9$var$Ug","mode","k1","a139","elementType","$c108a9d717b309f9$var$Vg","l1","a140","implementation","$c108a9d717b309f9$var$Wg","n1","a141","$c108a9d717b309f9$var$Xg","a142","a143","a144","a147","a145","a146","w1","$c108a9d717b309f9$var$Yg","$c108a9d717b309f9$var$Zg","$c108a9d717b309f9$var$$g","$c108a9d717b309f9$var$ah","$c108a9d717b309f9$var$bh","$c108a9d717b309f9$var$ch","$c108a9d717b309f9$var$dh","a148","$c108a9d717b309f9$var$eh","a149","documentElement","tagName","$c108a9d717b309f9$var$fh","$c108a9d717b309f9$var$gh","a150","$c108a9d717b309f9$var$hh","a151","$c108a9d717b309f9$var$P","$c108a9d717b309f9$var$ih","a152","memoizedProps","revealOrder","$c108a9d717b309f9$var$jh","$c108a9d717b309f9$var$kh","$c108a9d717b309f9$var$lh","$c108a9d717b309f9$var$mh","a153","$c108a9d717b309f9$var$nh","$c108a9d717b309f9$var$oh","a154","pendingProps","$c108a9d717b309f9$var$ph","a155","$c108a9d717b309f9$var$qh","a156","$c108a9d717b309f9$var$rh","a157","$c108a9d717b309f9$var$sh","$c108a9d717b309f9$var$th","$c108a9d717b309f9$var$uh","a158","_workInProgressVersionPrimary","$c108a9d717b309f9$var$vh","$c108a9d717b309f9$var$wh","$c108a9d717b309f9$var$xh","$c108a9d717b309f9$var$R","$c108a9d717b309f9$var$S","$c108a9d717b309f9$var$T","$c108a9d717b309f9$var$yh","$c108a9d717b309f9$var$zh","$c108a9d717b309f9$var$Ah","$c108a9d717b309f9$var$Bh","a159","$c108a9d717b309f9$var$Ch","a160","$c108a9d717b309f9$var$Dh","$c108a9d717b309f9$var$Eh","$c108a9d717b309f9$var$Fh","$c108a9d717b309f9$var$Gh","$c108a9d717b309f9$var$Hh","a161","baseQueue","queue","$c108a9d717b309f9$var$Ih","a162","$c108a9d717b309f9$var$Jh","a163","$c108a9d717b309f9$var$Kh","a164","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","$c108a9d717b309f9$var$Lh","a165","$c108a9d717b309f9$var$Mh","a166","_getVersion","_source","mutableReadLanes","$c108a9d717b309f9$var$Nh","a167","c2","d3","$c108a9d717b309f9$var$U","h2","k2","getSnapshot","subscribe","setSnapshot","a168","a169","$c108a9d717b309f9$var$Oh","$c108a9d717b309f9$var$Ph","a170","$c108a9d717b309f9$var$Qh","a171","$c108a9d717b309f9$var$Rh","a172","create","destroy","deps","$c108a9d717b309f9$var$Sh","a173","$c108a9d717b309f9$var$Th","$c108a9d717b309f9$var$Uh","a174","$c108a9d717b309f9$var$Vh","a175","$c108a9d717b309f9$var$Wh","a176","$c108a9d717b309f9$var$Xh","a177","$c108a9d717b309f9$var$Yh","a178","$c108a9d717b309f9$var$Zh","a179","$c108a9d717b309f9$var$$h","a180","$c108a9d717b309f9$var$ai","$c108a9d717b309f9$var$bi","a181","$c108a9d717b309f9$var$ci","a182","$c108a9d717b309f9$var$di","a183","c3","a184","readContext","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","a185","a186","a187","a188","a189","a190","b5","a191","a192","a193","a92","a194","b6","a195","a196","b7","a197","$c108a9d717b309f9$var$ei","$c108a9d717b309f9$var$fi","a198","$c108a9d717b309f9$var$gi","a199","$c108a9d717b309f9$var$hi","$c108a9d717b309f9$var$ii","a200","$c108a9d717b309f9$var$ji","$c108a9d717b309f9$var$ki","a201","$c108a9d717b309f9$var$li","$c108a9d717b309f9$var$mi","a202","baseLanes","$c108a9d717b309f9$var$ni","$c108a9d717b309f9$var$oi","a203","a204","$c108a9d717b309f9$var$pi","a205","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","$c108a9d717b309f9$var$qi","a206","getDerivedStateFromError","$c108a9d717b309f9$var$ri","a207","pendingContext","$c108a9d717b309f9$var$Bi","$c108a9d717b309f9$var$Di","$c108a9d717b309f9$var$Ei","$c108a9d717b309f9$var$si","retryLane","$c108a9d717b309f9$var$ti","a208","fallback","unstable_avoidThisFallback","$c108a9d717b309f9$var$ui","unstable_expectedLoadTime","$c108a9d717b309f9$var$vi","$c108a9d717b309f9$var$wi","$c108a9d717b309f9$var$xi","a209","a210","a211","$c108a9d717b309f9$var$yi","a212","$c108a9d717b309f9$var$zi","a213","isBackwards","rendering","renderingStartTime","last","tail","tailMode","$c108a9d717b309f9$var$Ai","a214","a215","$c108a9d717b309f9$var$Fi","a218","$c108a9d717b309f9$var$Gi","a219","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","$c108a9d717b309f9$var$V","$c108a9d717b309f9$var$Hi","$c108a9d717b309f9$var$Ii","$c108a9d717b309f9$var$W","$c108a9d717b309f9$var$Ji","$c108a9d717b309f9$var$Ki","$c108a9d717b309f9$var$Li","a220","$c108a9d717b309f9$var$Mi","a221","message","$c108a9d717b309f9$var$Ni","console","error","a216","a217","$c108a9d717b309f9$var$Oi","WeakMap","$c108a9d717b309f9$var$Pi","a222","element","$c108a9d717b309f9$var$Qi","$c108a9d717b309f9$var$Ri","$c108a9d717b309f9$var$Si","a223","c4","componentDidCatch","$c108a9d717b309f9$var$Ti","componentStack","$c108a9d717b309f9$var$Ui","WeakSet","$c108a9d717b309f9$var$Vi","a224","$c108a9d717b309f9$var$Wi","$c108a9d717b309f9$var$Xi","a225","__reactInternalSnapshotBeforeUpdate","$c108a9d717b309f9$var$Yi","a226","$c108a9d717b309f9$var$Zi","$c108a9d717b309f9$var$$i","focus","$c108a9d717b309f9$var$aj","a227","display","$c108a9d717b309f9$var$bj","a228","onCommitFiberUnmount","componentWillUnmount","f2","$c108a9d717b309f9$var$cj","$c108a9d717b309f9$var$dj","a229","$c108a9d717b309f9$var$ej","a230","$c108a9d717b309f9$var$fj","a231","$c108a9d717b309f9$var$gj","$c108a9d717b309f9$var$hj","a232","insertBefore","_reactRootContainer","a233","a234","$c108a9d717b309f9$var$ij","a235","$c108a9d717b309f9$var$jj","$c108a9d717b309f9$var$kj","a236","b8","$c108a9d717b309f9$var$lj","$c108a9d717b309f9$var$mj","a237","$c108a9d717b309f9$var$nj","ceil","$c108a9d717b309f9$var$oj","$c108a9d717b309f9$var$pj","$c108a9d717b309f9$var$X","$c108a9d717b309f9$var$Y","$c108a9d717b309f9$var$qj","$c108a9d717b309f9$var$rj","$c108a9d717b309f9$var$sj","$c108a9d717b309f9$var$tj","$c108a9d717b309f9$var$uj","$c108a9d717b309f9$var$vj","Infinity","$c108a9d717b309f9$var$wj","$c108a9d717b309f9$var$ck","$c108a9d717b309f9$var$Z","$c108a9d717b309f9$var$xj","$c108a9d717b309f9$var$yj","$c108a9d717b309f9$var$zj","$c108a9d717b309f9$var$Aj","$c108a9d717b309f9$var$Bj","$c108a9d717b309f9$var$Cj","$c108a9d717b309f9$var$Dj","$c108a9d717b309f9$var$Ej","$c108a9d717b309f9$var$Fj","$c108a9d717b309f9$var$Gj","$c108a9d717b309f9$var$Hj","$c108a9d717b309f9$var$Ij","$c108a9d717b309f9$var$Jj","a238","a24","$c108a9d717b309f9$var$Sc","a239","$c108a9d717b309f9$var$Kj","$c108a9d717b309f9$var$Lj","$c108a9d717b309f9$var$Mj","a240","a241","callbackNode","expirationTimes","callbackPriority","a25","$c108a9d717b309f9$var$Tc","$c108a9d717b309f9$var$Nj","a242","$c108a9d717b309f9$var$Oj","$c108a9d717b309f9$var$Pj","$c108a9d717b309f9$var$Qj","$c108a9d717b309f9$var$Rj","$c108a9d717b309f9$var$Sj","$c108a9d717b309f9$var$Tj","finishedWork","finishedLanes","$c108a9d717b309f9$var$Uj","timeoutHandle","a243","a244","$c108a9d717b309f9$var$Wj","a247","$c108a9d717b309f9$var$Xj","a248","a249","a250","pingCache","$c108a9d717b309f9$var$Yj","$c108a9d717b309f9$var$Zj","va","a251","a252","$c108a9d717b309f9$var$ak","$c108a9d717b309f9$var$bk","a253","a254","a255","$c108a9d717b309f9$var$dk","a256","rangeCount","focusedElem","selectionRange","$c108a9d717b309f9$var$ek","va1","min","extend","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","va2","onCommitFiberRoot","a257","a258","$c108a9d717b309f9$var$fk","a259","a260","a261","$c108a9d717b309f9$var$gk","a262","a263","a264","a265","$c108a9d717b309f9$var$ik","a267","a268","a269","a271","a272","a273","a274","a275","a276","pendingChildren","$c108a9d717b309f9$var$jk","a277","mutableSourceEagerHydrationData","$c108a9d717b309f9$var$kk","a278","$c108a9d717b309f9$var$lk","a279","$c108a9d717b309f9$var$mk","a280","$c108a9d717b309f9$var$nk","a281","$c108a9d717b309f9$var$ok","a282","$c108a9d717b309f9$var$qk","a283","hydrationOptions","mutableSources","_internalRoot","$c108a9d717b309f9$var$rk","a286","$c108a9d717b309f9$var$tk","a288","a289","a287","hasAttribute","$c108a9d717b309f9$var$sk","a290","$c108a9d717b309f9$var$uk","a297","a266","a270","$c108a9d717b309f9$var$hk","unstable_observedBits","a284","unmount","a285","a291","a292","a293","a294","querySelectorAll","JSON","stringify","form","a295","a245","a246","$c108a9d717b309f9$var$Vj","a296","$c108a9d717b309f9$var$vk","Events","$c108a9d717b309f9$var$wk","findFiberByHostInstance","bundleType","version","rendererPackageName","$c108a9d717b309f9$var$xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","a298","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","$c108a9d717b309f9$var$yk","isDisabled","supportsFiber","inject","a299","a300","a301","a302","a303","a304","a305","$434e52336bd0700c$export$c4744153514ff05d","$434e52336bd0700c$export$b5836b71941fa3ed","$434e52336bd0700c$export$d66a1c1c77bd778b","$434e52336bd0700c$export$3e506c1ccc9cc1a7","$434e52336bd0700c$export$e26fe2ed2fa76875","$434e52336bd0700c$export$502329bbf4b505b1","$434e52336bd0700c$export$6e3807111c4874c4","$434e52336bd0700c$export$c27134553091fb3a","$434e52336bd0700c$export$33ee1acdc04fd2a2","$434e52336bd0700c$export$b00a404bbd5edef2","$434e52336bd0700c$export$8352ce38b91d0c62","$434e52336bd0700c$export$d3dfb8e4810cb555","$434e52336bd0700c$export$839f9183b0465a69","$434e52336bd0700c$export$72fdf0e06517287b","$434e52336bd0700c$export$4b844e58a3e414b4","$434e52336bd0700c$export$816d2913ae6b83b1","$434e52336bd0700c$export$61bcfe829111a1d0","$434e52336bd0700c$export$7ee8c9beb337bc3f","$434e52336bd0700c$export$cf845f2c119da08a","$434e52336bd0700c$var$f","$434e52336bd0700c$var$g","$434e52336bd0700c$var$h","$434e52336bd0700c$var$k","performance","$434e52336bd0700c$var$l","$434e52336bd0700c$var$p","$434e52336bd0700c$var$q","MessageChannel","$434e52336bd0700c$var$t","$434e52336bd0700c$var$u","$434e52336bd0700c$var$w","$434e52336bd0700c$var$x","$434e52336bd0700c$var$y","$434e52336bd0700c$var$z","cancelAnimationFrame","requestAnimationFrame","$434e52336bd0700c$var$A","$434e52336bd0700c$var$B","$434e52336bd0700c$var$C","$434e52336bd0700c$var$D","$434e52336bd0700c$var$E","floor","$434e52336bd0700c$var$F","$434e52336bd0700c$var$G","port2","port1","onmessage","postMessage","$434e52336bd0700c$var$H","$434e52336bd0700c$var$I","$434e52336bd0700c$var$J","$434e52336bd0700c$var$K","pop","r","sortIndex","$434e52336bd0700c$var$L","$434e52336bd0700c$var$M","$434e52336bd0700c$var$N","$434e52336bd0700c$var$O","$434e52336bd0700c$var$P","$434e52336bd0700c$var$Q","$434e52336bd0700c$var$R","$434e52336bd0700c$var$S","$434e52336bd0700c$var$T","startTime","expirationTime","$434e52336bd0700c$var$U","$434e52336bd0700c$var$V","priorityLevel","delay","Buffer","$5437e2482504fb44$var$Diagnose","$5woD9","createTag","tagNumber","createInt","super","createInt32","createInt64","g2","createInt32Neg","createInt64Neg","createTrue","createFalse","createFloat","fl","$B5ZQr","isNegativeZero","createFloatSingle","createFloatDouble","createByteString","raw","len","createByteStringFromHeap","$5437e2482504fb44$require$Buffer","createInfinity","createInfinityNeg","createNaN","createNaNNeg","createNull","createUndefined","createSimpleUnassigned","createArray","arr","createMap","list","reduce","$5437e2482504fb44$var$collectObject","createObject","obj","createUtf8String","createUtf8StringFromHeap","static","enc","decodeFirst","acc","$c2eefd2ec4b7261c$export$a143d493d941bafc","$c2eefd2ec4b7261c$export$f99ded8fe4b79145","$c2eefd2ec4b7261c$var$customInspectSymbol","$c2eefd2ec4b7261c$var$Buffer","$c2eefd2ec4b7261c$var$K_MAX_LENGTH","$c2eefd2ec4b7261c$var$createBuffer","RangeError","buf","Uint8Array","setPrototypeOf","arg","encodingOrOffset","$c2eefd2ec4b7261c$var$allocUnsafe","$c2eefd2ec4b7261c$var$from","string","encoding","isEncoding","$c2eefd2ec4b7261c$var$byteLength","actual","write","$c2eefd2ec4b7261c$var$fromString","ArrayBuffer","isView","arrayView","$c2eefd2ec4b7261c$var$isInstance","copy","$c2eefd2ec4b7261c$var$fromArrayBuffer","buffer","byteOffset","byteLength","$c2eefd2ec4b7261c$var$fromArrayLike","$c2eefd2ec4b7261c$var$fromArrayView","SharedArrayBuffer","isBuffer","$c2eefd2ec4b7261c$var$checked","undefined","$c2eefd2ec4b7261c$var$numberIsNaN","$c2eefd2ec4b7261c$var$fromObject","toPrimitive","$c2eefd2ec4b7261c$var$assertSize","array","mustMatch","loweredCase","$c2eefd2ec4b7261c$var$utf8ToBytes","$c2eefd2ec4b7261c$var$base64ToBytes","$c2eefd2ec4b7261c$var$slowToString","$c2eefd2ec4b7261c$var$hexSlice","$c2eefd2ec4b7261c$var$utf8Slice","$c2eefd2ec4b7261c$var$asciiSlice","$c2eefd2ec4b7261c$var$latin1Slice","$c2eefd2ec4b7261c$var$base64Slice","$c2eefd2ec4b7261c$var$utf16leSlice","$c2eefd2ec4b7261c$var$swap","$c2eefd2ec4b7261c$var$bidirectionalIndexOf","dir","$c2eefd2ec4b7261c$var$arrayIndexOf","lastIndexOf","i1","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","$c2eefd2ec4b7261c$var$hexWrite","Number","remaining","strLen","parsed","parseInt","substr","$c2eefd2ec4b7261c$var$utf8Write","$c2eefd2ec4b7261c$var$blitBuffer","$c2eefd2ec4b7261c$var$asciiWrite","str","byteArray","charCodeAt","$c2eefd2ec4b7261c$var$asciiToBytes","$c2eefd2ec4b7261c$var$base64Write","$c2eefd2ec4b7261c$var$ucs2Write","units","hi","lo","$c2eefd2ec4b7261c$var$utf16leToBytes","$2bLp2","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","$c2eefd2ec4b7261c$var$MAX_ARGUMENTS_LENGTH","$c2eefd2ec4b7261c$var$decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","$c2eefd2ec4b7261c$var$typedArraySupport","poolSize","alloc","fill","$c2eefd2ec4b7261c$var$alloc","allocUnsafe","allocUnsafeSlow","_isBuffer","y","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","$c2eefd2ec4b7261c$var$hexSliceLookupTable","bytes","$c2eefd2ec4b7261c$var$checkOffset","ext","$c2eefd2ec4b7261c$var$checkInt","$c2eefd2ec4b7261c$var$checkIEEE754","$c2eefd2ec4b7261c$var$writeFloat","littleEndian","noAssert","$75Bzw","$c2eefd2ec4b7261c$var$writeDouble","newBuf","subarray","readUintLE","readUIntLE","byteLength1","mul","readUintBE","readUIntBE","byteLength2","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","byteLength3","pow","readIntBE","byteLength4","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","byteLength5","writeUintBE","writeUIntBE","byteLength6","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","byteLength7","limit","sub","writeIntBE","byteLength8","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","$c2eefd2ec4b7261c$var$INVALID_BASE64_RE","leadSurrogate","toByteArray","$c2eefd2ec4b7261c$var$base64clean","src","dst","alphabet","table","i16","$1981610f0ad87cfc$export$d622b2ad8d90c771","$1981610f0ad87cfc$export$6100ba28696e12de","b64","tmp","lens","$1981610f0ad87cfc$var$getLens","validLen","placeHoldersLen","$1981610f0ad87cfc$var$Arr","$1981610f0ad87cfc$var$_byteLength","curByte","len2","$1981610f0ad87cfc$var$revLookup","uint8","len3","extraBytes","parts","maxChunkLength","i3","$1981610f0ad87cfc$var$encodeChunk","$1981610f0ad87cfc$var$lookup","$1981610f0ad87cfc$var$code","$1981610f0ad87cfc$var$i","$1981610f0ad87cfc$var$len","len1","num","output","i2","$52962503fd688034$export$aafa59e2e03f2942","$52962503fd688034$export$68d8715fc104d294","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","BigNumber","URL","$40530c049aa8219b$var$Decoder","_depth","_parents","_currentParent","_ref","_closeParent","$Y9YPW","PARENT","TAG","_push","BYTE_STRING","UTF8_STRING","MAP","values","OBJECT","ARRAY","_dec","hasChildren","tmpKey","buildMap","_createParent","_reset","_res","typ","_knownTags","$gSaTY","$40530c049aa8219b$require$Buffer","_heap","buildInt32","buildInt64","MAX_SAFE_HIGH","NEG_ONE","minus","$40530c049aa8219b$require$Bignumber","times","SHIFT32","plus","_buffer","$iii8b","pushInt","pushInt32","pushInt64","pushFloat","pushFloatSingle","pushFloatDouble","pushInt32Neg","pushInt64Neg","pushTrue","pushFalse","pushNull","pushUndefined","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","_createArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","len4","pushObjectStart","_createObjectStartFixed","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteStringStart","pushByteString","pushUtf8StringStart","pushUtf8String","pushSimpleUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushTagUnassigned","pushBreak","_decode","_heap8","parser","parse","decodeAll","opts","nextPowerOf2","arrayBufferToBignumber","TEN","TWO","$40530c049aa8219b$require$URL","RegExp","tags","$eGT4B","$parcel$global","decode","globalObject","BigNumber1","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","clone","configObject","div","convertBase","parseNumeric","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","caseChanged","isNum","_isBigNumber","MAX_EXP","MIN_EXP","intCheck","ALPHABET","round","DECIMAL_PLACES","ROUNDING_MODE","DEBUG","rm","ne","TO_EXP_NEG","TO_EXP_POS","toExponential","toFixedPoint","c0","args","method","sd","ni","rd","xc","pows10","POWS_TEN","coeffToString","MAX","crypto","getRandomValues","randomBytes","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","maximum","maxOrMin","lt","minimum","gt","pow2_53","dp","rand","ONE","Uint32Array","random53bitInt","splice","sum","toBaseOut","baseIn","baseOut","arrL","reverse","sign","callerIsToString","decimal","xhi","carry","klo","SQRT_BASE","khi","aL","bL","cmp","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","yc","bitFloor","multiply","subtract","basePrefix","p1","p2","compare1","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","isOdd","mod","eq","gte","lte","xLTy","xe","ye","xcL","xlo","ycL","ylo","yhi","zc","sqrtBase","normalise","negated","stdlib","foreign","heap","inputLength","jumpTable","checkOffset","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","UINT_N_32","UINT_N_64","step","BYTE_STRING_8","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","exp","mant","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","BREAK","$06f81b9887d19f7c$export$ed2be0a56f226dba","$06f81b9887d19f7c$export$31584258476b5bbb","$06f81b9887d19f7c$export$aec0013fff0cbd08","$06f81b9887d19f7c$export$befc1455dc7e71e4","$06f81b9887d19f7c$export$8d7804d0e24b0cc2","$06f81b9887d19f7c$export$9855177f9c288bac","$06f81b9887d19f7c$export$c2e1983305cbbc72","$06f81b9887d19f7c$export$dc0a61f4a9121f92","$06f81b9887d19f7c$export$6cf3d2e39c53bc6f","$06f81b9887d19f7c$var$SHIFT32","$06f81b9887d19f7c$var$SHIFT16","SHIFT16","$06f81b9887d19f7c$require$Bignumber","u32","$06f81b9887d19f7c$require$Buffer","s16","lenA","lenB","$0b4d5894173d9bdd$export$b900a375df2ae552","$0b4d5894173d9bdd$export$2680f340d0781853","$0b4d5894173d9bdd$export$2b9f6403defb7b78","$0b4d5894173d9bdd$export$aca095bc476d426f","$0b4d5894173d9bdd$export$b7500b6b7d475dd5","$0b4d5894173d9bdd$export$c073376b058039e9","$0b4d5894173d9bdd$export$5ffbcb19cd666af8","$0b4d5894173d9bdd$export$97f7e051a809ce91","$0b4d5894173d9bdd$export$e5b31325dd05546c","$0b4d5894173d9bdd$export$119bd8bf66781cd5","$0b4d5894173d9bdd$export$945fffcb875fcc6c","$0b4d5894173d9bdd$export$e0dfb65d1047c53c","POS_INT","NEG_INT","SIMPLE_FLOAT","DATE_STRING","DATE_EPOCH","POS_BIGINT","NEG_BIGINT","DECIMAL_FRAC","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","URI","BASE64URL","BASE64","REGEXP","MIME","ZERO","FOUR","EIGHT","INDEFINITE","FALSE","TRUE","NULL","UNDEFINED","STREAM","$0b4d5894173d9bdd$require$Bignumber","$d517f8deb3e563d6$var$MT","MT","$d517f8deb3e563d6$var$SIMPLE","SIMPLE","$d517f8deb3e563d6$var$SYMS","SYMS","$d517f8deb3e563d6$var$Simple","encodeCBOR","gen","_pushInt","hasParent","$c48a255ff06ca232$var$Tagged","_pushTag","pushAny","convert","converters","er","$8VlrD","URLWithLegacySupport","format","URLSearchParams","defaultBase","$ca7b1154cd750f63$require$URLWithLegacySupport","$iHBjn","$67f448170f59512f$var$defaultBase","self","protocol","host","$67f448170f59512f$var$URL","hash","hostname","origin","pathname","port","searchParams","username","createObjectURL","o","revokeObjectURL","path","auth","query","startsWith","userPass","protocolMap","defaultProtocol","urlParsed","$d9d92f6bae7ebdaf$require$URLWithLegacySupport","$d9d92f6bae7ebdaf$require$format","$87aa05bb683a4784$var$MT","$87aa05bb683a4784$var$NUMBYTES","NUMBYTES","$87aa05bb683a4784$var$SHIFT32","$87aa05bb683a4784$var$SYMS","$87aa05bb683a4784$var$TAG","$87aa05bb683a4784$var$HALF","$87aa05bb683a4784$var$FLOAT","$87aa05bb683a4784$var$DOUBLE","$87aa05bb683a4784$var$TRUE","$87aa05bb683a4784$var$FALSE","$87aa05bb683a4784$var$UNDEFINED","$87aa05bb683a4784$var$NULL","$87aa05bb683a4784$var$MAXINT_BN","$87aa05bb683a4784$require$Bignumber","$87aa05bb683a4784$var$BUF_NAN","$87aa05bb683a4784$require$Buffer","$87aa05bb683a4784$var$BUF_INF_NEG","$87aa05bb683a4784$var$BUF_INF_POS","$87aa05bb683a4784$var$Encoder","addSemanticType","fun","semanticTypes","old","result","resultMethod","resultLength","streaming","onData","finalize","pushWrite","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","_pushFloat","writeHalf","parseHalf","mt","orig","_pushIntNum","_pushNumber","_pushString","_pushBoolean","_pushUndefined","_pushArray","_pushDate","_pushBuffer","_pushNoFilter","_pushRegexp","_pushSet","_pushUrl","_pushBigint","isNegative","_pushBigNumber","dec","decimalPlaces","slide","multipliedBy","isLessThan","toNumber","_pushMap","_pushRawMap","_pushObject","keyLength","encode","sort","keySorter","$87aa05bb683a4784$var$toType","stream","addTypes","genTypes","$b6358719c4011d19$var$cbor","$b6358719c4011d19$var$__importStar","$b6358719c4011d19$var$BufferClasses","Uint16Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","$b6358719c4011d19$var$JsonDefaultCborEncoder","undefined_","bool","doubleFloat","null_","_serializer","serializeValue","find","item","entries","_stable","JsonDefaultCborEncoder","$b6358719c4011d19$var$ToCborEncoder","toCBOR","ToCborEncoder","$b6358719c4011d19$var$CborSerializer","stable","addEncoder","removeEncoder","encoder","_encoders","getEncoderFor","chosenEncoder","serialize","CborSerializer","SelfDescribeCborSerializer","$63af7a2b33a400ed$var$_concat","newBuffer","$63af7a2b33a400ed$var$_serializeValue","major","minor","padStart","bytes1","byte","$63af7a2b33a400ed$var$_serializeNumber","$63af7a2b33a400ed$var$_serializeString","utf8","charcode","$63af7a2b33a400ed$var$raw","bytes3","$63af7a2b33a400ed$var$uSmall","$63af7a2b33a400ed$var$u8","u81","radix","$63af7a2b33a400ed$var$u16","u161","$63af7a2b33a400ed$var$u32","u321","$63af7a2b33a400ed$var$u64","u641","$63af7a2b33a400ed$var$iSmall","$63af7a2b33a400ed$var$i8","i81","$63af7a2b33a400ed$var$i16","i161","$63af7a2b33a400ed$var$i32","i321","$63af7a2b33a400ed$var$i64","i641","newI64","reduceRight","$63af7a2b33a400ed$var$true_","$63af7a2b33a400ed$var$false_","tagged","bytes2","uSmall","u8","u16","u64","iSmall","i8","i32","i64","bytes6","items","keyA","keyB","localeCompare","singleFloat","single","true_","false_","$4oYm7","$98e20e05cd7ee563$export$b5fe3f66a567bec0","async","agent","paths","canisterId","Principal","uniquePaths","encodedPaths","$98e20e05cd7ee563$export$20c03ce31e68a433","status","promises","path1","response","readState","cert1","$5WHGc","Certificate","certificate","rootKey","lookup","cert","$98e20e05cd7ee563$export$c6c8a1e41d1a7bad","lookupResultToBuffer","path2","data1","$d5oj0","decodeTime","$98e20e05cd7ee563$var$decodeControllers","$98e20e05cd7ee563$var$decodeHex","TextDecoder","decodeStrategy","decodeLeb128","$98e20e05cd7ee563$var$decodeCbor","$98e20e05cd7ee563$var$decodeUtf8","warn","_a","$iVgFj","AgentError","group","groupEnd","Promise","all","root_key","_isPrincipal","$iUReI","tree","subnetId","delegation","subnet_id","fromUint8Array","selfAuthenticating","fromText","toUint8Array","check_canister_ranges","nodeTree","lookup_path","nodeForks","flatten_forks","nodeKeys","fork","getPrototypeOf","node_id","toText","derEncodedPublicKey","TextEncoder","DataView","canisterBuffer","metaPath","encoded","$f7kw2","toHex","buf1","$88fzF","$334838b7ae50a8b6$export$8f4e8d960676d476","$334838b7ae50a8b6$export$2a090e978417937f","fromHex","publicKey","sha","$gn98h","sha224","other","hex","maybePrincipal","canisterIdNoDash","principal","isAnonymous","checksumArrayBuf","setUint32","$c176a","getCrc32","checksum","matches","compareTo","ltEq","gtEq","$5ebb26cdf98b127b$var$alphabet","$5ebb26cdf98b127b$var$lookupTable","$5ebb26cdf98b127b$export$c564cdbbe6da493","skip","bits","$5ebb26cdf98b127b$export$2f872c0f2117be69","decodeChar","$8bfb15a08e3a4664$var$lookUpTable","$8bfb15a08e3a4664$export$fdc7f3cd39130f9","crc","$25ZvB","$beb5e0e147ba973f$export$97b70509d4e397ea","update","digest","$186bc2c43f46181d$var$Maj","$186bc2c43f46181d$var$SHA256_K","$186bc2c43f46181d$var$IV","$186bc2c43f46181d$var$SHA256_W","$186bc2c43f46181d$var$SHA256","$bXxq1","SHA2","B","D","E","F","G","H","process","getUint32","W15","W2","s0","$fhybr","rotr","s1","T1","T2","roundClean","$186bc2c43f46181d$var$SHA224","outputLen","sha256","wrapConstructor","$8b4f20a5756f227b$var$SHA2","Hash","$lUkNI","exists","blockLen","toBytes","take","dataView","createView","digestInto","finished","padOffset","setBigUint64","_32n","BigInt","_u32_max","wh","wl","$8b4f20a5756f227b$var$setBigUint64","oview","outLen","_cloneInto","destroyed","$ff2ef68a080e1fb0$var$number","isSafeInteger","$ff2ef68a080e1fb0$var$bool","$ff2ef68a080e1fb0$var$bytes","lengths","$ff2ef68a080e1fb0$var$hash","hash1","$ff2ef68a080e1fb0$var$exists","checkFinished","$ff2ef68a080e1fb0$var$output","$ff2ef68a080e1fb0$var$assert","$b202f5b0ce264f1b$var$isBytes","word","$b202f5b0ce264f1b$var$hexes","_","bytesToHex","$b202f5b0ce264f1b$var$asciis","$b202f5b0ce264f1b$var$asciiToBase16","hexToBytes","hl","al","ai","n2","$b202f5b0ce264f1b$var$utf8ToBytes","$b202f5b0ce264f1b$var$toBytes","nextTick","asyncLoop","iters","tick","cb","ts","diff","utf8ToBytes","concatBytes","arrays","pad","$b202f5b0ce264f1b$var$toStr","checkOpts","defaults","hashCons","hashC","msg","wrapConstructorWithOpts","wrapXOFConstructorWithOpts","bytesLength","$53JXF","globalThis","$dc6a7a3f682d5396$export$483a1033bf00f1d4","$45444062603d4b46$export$9405c0e75b001e12","reason","$45444062603d4b46$export$b7e645b7b1b92816","$45444062603d4b46$var$isBufferEqual","$45444062603d4b46$export$ca20b3ed1788c40a","createUnverified","verify","blsVerify","$4K7O1","maxAgeInMinutes","$45444062603d4b46$export$36bf10c755e5f9d2","$45444062603d4b46$export$651ac7bd4c4f10b0","lookup_label","label","rootHash","$45444062603d4b46$export$9fe62f28d3eb0504","derKey","_checkDelegationAndGetKey","sig","signature","expectedLength","$45444062603d4b46$var$DER_PREFIX","prefix","$45444062603d4b46$var$extractDER","$45444062603d4b46$var$domain_sep","sigVer","lookupTime","MAX_AGE_IN_MSEC","_maxAgeInMinutes","earliestCertificateTime","fiveMinutesFromNow","certTime","getTime","toISOString","_blsVerify","_rootKey","_canisterId","$45444062603d4b46$export$1949ff7914767e6","publicKeyLookup","$6DXZ7","trees","$45444062603d4b46$var$find_label","$45444062603d4b46$export$f82c95f848fa0d10","params","rangeLookup","some","$34C9d","$dc56c09982de08fa$var$serializer","$gE3RL","withDefaultEncoders","$dc56c09982de08fa$export$9f9e67967f7981c2","CborTag1","$dc56c09982de08fa$export$c564cdbbe6da493","$dc56c09982de08fa$var$decodePositiveBigInt","$dc56c09982de08fa$var$Uint8ArrayDecoder","$parcel$interopDefault","Decoder","$dc56c09982de08fa$export$2f872c0f2117be69","Semantic","$23cf5620cc3d415a$export$375efb8a82ecd494","$23cf5620cc3d415a$export$f9de6ca0bc043724","$23cf5620cc3d415a$export$a50aceb0e02a00aa","$23cf5620cc3d415a$export$f3818faa9fce9618","$23cf5620cc3d415a$export$b40ff0778ec92ebb","$23cf5620cc3d415a$export$8a9205c99a56856a","$23cf5620cc3d415a$export$dc3a1ecd16fbdfa8","$23cf5620cc3d415a$export$8e3f146d70c42742","$23cf5620cc3d415a$export$c564cdbbe6da493","$23cf5620cc3d415a$export$2f872c0f2117be69","$23cf5620cc3d415a$export$5d66615a4a91890c","diagnose","$c1e361811a1a28bc$var$__export","$c1e361811a1a28bc$var$value","$c1e361811a1a28bc$var$__importStar","$b0176c7c561c4e6e$export$ee1b3e54f0441b22","buffers","curr","$b0176c7c561c4e6e$export$7ea66e3774a60b67","$b0176c7c561c4e6e$var$hexRe","$b0176c7c561c4e6e$export$1a8ceedbd5845648","$b0176c7c561c4e6e$export$398604a469f7de9a","u1","u2","$b0176c7c561c4e6e$export$c5b027a5f1c9a378","$b0176c7c561c4e6e$export$d32235361ed6787c","$3R9ag","$4d64ea4da724c54e$export$d6af199866bfb566","uint8ToBuf","$4d64ea4da724c54e$export$59e65e16bffe99ef","Tagged","$4d64ea4da724c54e$var$hashString","lebEncode","vals","toHash","$4d64ea4da724c54e$export$c47667ad13600518","$4d64ea4da724c54e$export$34f95c8387577648","request","sorted","filter","$c32a7a7adb9245df$var$magicNumber","$c32a7a7adb9245df$var$zipWith","xs","ys","$c32a7a7adb9245df$var$TypeTable","_idx","idx","_typs","merge","knot","knotIdx","$9v5Xl","typeName","slebEncode","$c32a7a7adb9245df$export$9d54d4ec2dd4b364","visitType","visitPrimitive","visitEmpty","visitBool","visitNull","visitReserved","visitText","visitNumber","visitInt","visitNat","visitFloat","visitFixedInt","visitFixedNat","visitPrincipal","visitConstruct","visitVec","ty","visitOpt","visitRecord","fields","visitTuple","components","visitVariant","visitRec","visitFunc","visitService","$c32a7a7adb9245df$export$92738401e1603719","valueToString","$c32a7a7adb9245df$var$toReadableString","buildTypeTable","typeTable","_buildTypeTableImpl","$c32a7a7adb9245df$export$4f2b155b34bcab5c","checkType","$c32a7a7adb9245df$export$2ca504bf8f9aeb47","$c32a7a7adb9245df$export$5e9ecb2e406d1431","getType","encodeType","$c32a7a7adb9245df$export$d16d697e3f9c0fad","accept","covariant","encodeValue","decodeValue","$c32a7a7adb9245df$export$44c70ec7347b8154","typeFunc","decodedValue","writable","$c32a7a7adb9245df$export$ed69b8599296f13","safeReadUint8","$c32a7a7adb9245df$export$99bd2901cdbacf04","$c32a7a7adb9245df$export$db8a6031e1f8a315","$c32a7a7adb9245df$export$73230accad85228f","lebDecode","safeRead","fatal","$c32a7a7adb9245df$export$71ead48106d0129f","slebDecode","$c32a7a7adb9245df$export$be94c2b31890b852","$c32a7a7adb9245df$export$b0b8fca16d0d583e","_bits","setFloat32","setFloat64","opcode","getFloat32","getFloat64","$c32a7a7adb9245df$export$35d4e80dc79355b1","$3COMW","iexp2","ok","log2","$c32a7a7adb9245df$export$b10daf4f00319f85","$c32a7a7adb9245df$export$4276ff626a23ff7e","_type","BYTES_PER_ELEMENT","every","_blobOptimization","PipeArrayBuffer","opCode","vec","BigUint64Array","BigInt64Array","rets","$c32a7a7adb9245df$export$292aab97de6ea16d","opt","$c32a7a7adb9245df$export$f106af05dc4604cf","_fields","tryAsTuple","bufs","T","$f12CF","idlLabelToId","record","expectedRecordIdx","actualRecordIdx","expectKey","expectType","expectedId","actualId","$c32a7a7adb9245df$export$acb0785220934321","_components","tuple","wireType","$c32a7a7adb9245df$export$5bde82c0fbe714ea","variant","wireHash","_id","_counter","$c32a7a7adb9245df$var$decodePrincipalId","$c32a7a7adb9245df$export$fc05b1dbf3dd1b7c","$c32a7a7adb9245df$export$8b80aff2aa9b6a2d","types","methodName","canister","methodLen","argTypes","retTypes","argLen","retLen","annLen","annotations","anns","encodeAnnotation","ann","$c32a7a7adb9245df$export$6cf4fa6bba7e4ef0","func","meths","labelBuf","labelLen","_key","$c32a7a7adb9245df$var$toReadableString_max","$c32a7a7adb9245df$export$c564cdbbe6da493","magic","typs","$c32a7a7adb9245df$export$2f872c0f2117be69","magicBuffer","rawTable","rawTypes","pipe","prevHash","objectLength","argLength","returnValues","returnValuesLength","annotationLength","servLength","methods","nameLength","funcName","funcType","rawList","readTypeTable","$c32a7a7adb9245df$export$1cc6ae90bbfb3e91","$c32a7a7adb9245df$export$26c9c3a80cd996ae","$c32a7a7adb9245df$export$6e6298e1abe0d5b","$c32a7a7adb9245df$export$39cb9d2b5a061c63","$c32a7a7adb9245df$export$fdd676b64b72b00","$c32a7a7adb9245df$export$d19abda546b24e34","$c32a7a7adb9245df$export$f67a6eecce766720","$c32a7a7adb9245df$export$57f4c23c2368a13c","$c32a7a7adb9245df$export$fad7de7a3a4755df","$c32a7a7adb9245df$export$2174b49024d7a91f","$c32a7a7adb9245df$export$840a40d2c6db4b78","$c32a7a7adb9245df$export$493726e231866ac3","$c32a7a7adb9245df$export$8a5e19712a0a5deb","$c32a7a7adb9245df$export$d2ee3fd19968539e","$c32a7a7adb9245df$export$42429e12507a49a2","$c32a7a7adb9245df$export$5f1af8db9871e1d6","$c32a7a7adb9245df$export$da9b5fe187a9aa1","$c32a7a7adb9245df$export$1f74963c34e8bfec","$c32a7a7adb9245df$export$2a090e978417937f","buildType","entry","$c32a7a7adb9245df$export$e947a0f742cf021e","$c32a7a7adb9245df$export$a76800b3cc430f35","$c32a7a7adb9245df$export$5b163c6d120341e7","$c32a7a7adb9245df$export$1908877435b1d5e9","$c32a7a7adb9245df$export$585dc7a4228aacca","$c32a7a7adb9245df$export$ec92bc6e28aa998e","rec","typeRef","$c32a7a7adb9245df$export$8b2af884909d32a5","ind","$c32a7a7adb9245df$export$c8e691818f5132e2","$6eaba11779af8d9e$export$ee1b3e54f0441b22","$6eaba11779af8d9e$export$b931899b704868cb","$6eaba11779af8d9e$export$6454f3389b4b40a8","_view","amount","bufLike","$aee8fbd7cb21bed3$export$4fb923f906a35596","$aee8fbd7cb21bed3$var$idlHash","$2ced6e361f31be7f$var$eob","$2ced6e361f31be7f$export$d5b7865898e5f05a","$2ced6e361f31be7f$export$1a50b0ed04070534","$2ced6e361f31be7f$export$9304a150c89b19ae","$2ced6e361f31be7f$export$5de14e61e9f2c0c1","weight","$2ced6e361f31be7f$export$fb0faefbe92cf27e","isNeg","getLowerBytes","$2ced6e361f31be7f$export$97b049faa5dc8305","pipeView","$2ced6e361f31be7f$export$6a2c7dfda6480cab","$2ced6e361f31be7f$export$7a3ec858024f938e","$2ced6e361f31be7f$export$bb14fda0e1fb548e","$2ced6e361f31be7f$export$5eb28bdfba04b63d","$2a3c5139cc7e53f3$export$69659557c7b1d859","nBig","$gKRxX","Visitor","$c3ef8359d6d8cebf$export$5ac7b85d728a3568","isRejected","config","ui","idl","classList","dom","container","innerText","className","remove","$c3ef8359d6d8cebf$export$8838525a05948ab","renderForm","open","oldContainer","nextElementSibling","generateForm","$c3ef8359d6d8cebf$export$15aea9dd115ab8e6","labelMap","$c3ef8359d6d8cebf$export$e603895c6d2b3bfc","$c3ef8359d6d8cebf$export$10ac37e97ed67aea","selectedIndex","select","$c3ef8359d6d8cebf$export$3c094d5f91cf7ed2","$c3ef8359d6d8cebf$export$a5bd3c0413a67616","$bYSaY","$3741835a33223940$export$532244b5b8b0b4b6","$3741835a33223940$export$c0ed24476a7c7da6","pk","bls_init","pk1","sig1","msg1","bls_verify","$7Sll2","$8b8f528b6f323b1f$var$wasm","$8b8f528b6f323b1f$var$wasmBytes","$lJnEo","wasmBytesBase64","$8b8f528b6f323b1f$export$c228e3c2ba8571cb","$8b8f528b6f323b1f$var$cachegetUint8Memory0","$8b8f528b6f323b1f$var$passArray8ToWasm0","malloc","ptr","memory","$8b8f528b6f323b1f$export$ee6aa3de53cf51e1","ptr0","len0","__wbindgen_malloc","ptr1","ptr2","$8b8f528b6f323b1f$export$2e2bcd8739ae039","$8b8f528b6f323b1f$var$init","imports","Response","arrayBuffer","WebAssembly","instantiate","Instance","$8b8f528b6f323b1f$var$load","__wbindgen_wasm_module","$5bbe20e947701d77$export$2f872c0f2117be69","chars","arraybuffer","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","$fd202576d90689e1$export$8e92c6283438b5f8","$986e988be0cabedd$export$160a338b08419417","$986e988be0cabedd$export$76a67a2fca092822","decoded","register","$a9b4110042941859$exports","$4091c7a12785fee6$var$checkDCE","checkDCE","$4091c7a12785fee6$exports","$f5c8ea72bfd01b0f$exports","resolve","import","$49eeb11308237507$exports","$5a55e4922693c4a9$exports","$97a550b42a2b6ebc$export$6a7bafd13efe8d80","ReplicaRejectCode1","$04cb68326dc13d3b$export$e9ec227e0ef39113","getPrincipal","anonymous","content","$4d987242a729e677$export$19fa182fb736e81a","randomInt","$e749d80ccde67f29$export$4a681f9c3eed7c03","$e749d80ccde67f29$export$4844cfffc43d936c","rand1","rand2","rand3","rand4","$5bc64a3b30fd0358$var$NANOSECONDS_PER_MILLISECONDS","$5bc64a3b30fd0358$export$6cb4a447c07e9c12","_value","deltaInMSec","rounded_down_nanos","$5bc64a3b30fd0358$export$12d405ee9670902a","nonceFn","headers","endpoint","nonce","$5bc64a3b30fd0358$export$ce36993a80ef9df","headerFields","$0598b860182b3285$export$d606ad8d00616321","$9cdb4e496657aa9e$var$U32_MASK64","$9cdb4e496657aa9e$var$_32n","$9cdb4e496657aa9e$var$fromBig","le","$9cdb4e496657aa9e$var$split","lst","Ah","Al","$9cdb4e496657aa9e$exports","fromBig","$9cdb4e496657aa9e$var$toBig","toBig","$9cdb4e496657aa9e$var$shrSH","_l","shrSH","$9cdb4e496657aa9e$var$shrSL","shrSL","$9cdb4e496657aa9e$var$rotrSH","rotrSH","$9cdb4e496657aa9e$var$rotrSL","rotrSL","$9cdb4e496657aa9e$var$rotrBH","rotrBH","$9cdb4e496657aa9e$var$rotrBL","rotrBL","$9cdb4e496657aa9e$var$rotr32H","_h","rotr32H","$9cdb4e496657aa9e$var$rotr32L","rotr32L","$9cdb4e496657aa9e$var$rotlSH","rotlSH","$9cdb4e496657aa9e$var$rotlSL","rotlSL","$9cdb4e496657aa9e$var$rotlBH","rotlBH","$9cdb4e496657aa9e$var$rotlBL","$9cdb4e496657aa9e$var$add","Bh","Bl","rotlBL","$9cdb4e496657aa9e$var$add3L","Cl","add3L","$9cdb4e496657aa9e$var$add3H","low","Ch","add3H","$9cdb4e496657aa9e$var$add4L","Dl","add4L","$9cdb4e496657aa9e$var$add4H","Dh","add4H","$9cdb4e496657aa9e$var$add5L","El","add5L","$9cdb4e496657aa9e$var$add5H","Eh","add5H","$9cdb4e496657aa9e$var$u64","$33eadc60311a6826$var$SHA512_Kh","$33eadc60311a6826$var$SHA512_Kl","$33eadc60311a6826$var$SHA512_W_H","$33eadc60311a6826$var$SHA512_W_L","$33eadc60311a6826$var$SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","$33eadc60311a6826$exports","SHA512","$33eadc60311a6826$var$SHA512_224","$33eadc60311a6826$var$SHA512_256","$33eadc60311a6826$var$SHA384","sha512","sha512_224","sha512_256","sha384","$aee9da0b598ae935$var$_0n","$aee9da0b598ae935$var$_1n","$aee9da0b598ae935$var$_2n","$aee9da0b598ae935$var$isBytes","$aee9da0b598ae935$exports","isBytes","$aee9da0b598ae935$var$hexes","$aee9da0b598ae935$var$bytesToHex","$aee9da0b598ae935$var$numberToHexUnpadded","$aee9da0b598ae935$var$hexToNumber","numberToHexUnpadded","hexToNumber","$aee9da0b598ae935$var$asciis","$aee9da0b598ae935$var$asciiToBase16","$aee9da0b598ae935$var$hexToBytes","$aee9da0b598ae935$var$numberToBytesBE","$aee9da0b598ae935$var$concatBytes","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","numberToVarBytesBE","ensureBytes","title","equalBytes","bitLen","bitGet","bitSet","bitMask","$aee9da0b598ae935$var$u8n","$aee9da0b598ae935$var$u8fr","createHmacDrbg","hashLen","qByteLen","hmacFn","reset","reseed","seed","sl","pred","$aee9da0b598ae935$var$validatorFns","bigint","function","boolean","stringOrUint8Array","field","object","Fp","isValid","validateObject","validators","optValidators","checkField","fieldName","isOptional","checkVal","fieldName2","type2","fieldName1","type1","$79cb7bbbfdecfdcf$var$_0n","$79cb7bbbfdecfdcf$var$_1n","$79cb7bbbfdecfdcf$var$_2n","$79cb7bbbfdecfdcf$var$_3n","$79cb7bbbfdecfdcf$var$_4n","$79cb7bbbfdecfdcf$var$_5n","$79cb7bbbfdecfdcf$var$_8n","$79cb7bbbfdecfdcf$var$mod","$79cb7bbbfdecfdcf$var$pow","power","modulo","$79cb7bbbfdecfdcf$var$invert","$79cb7bbbfdecfdcf$var$tonelliShanks","legendreC","S","Z","p1div4","root","eql","sqr","Q1div2","neg","t2","ge","$79cb7bbbfdecfdcf$var$FpSqrt","nv","$79cb7bbbfdecfdcf$exports","pow2","invert","tonelliShanks","FpSqrt","isNegativeLE","$79cb7bbbfdecfdcf$var$FIELD_FIELDS","$79cb7bbbfdecfdcf$var$FpPow","$79cb7bbbfdecfdcf$var$FpInvertBatch","nums","lastMultiplied","is0","inverted","inv","$79cb7bbbfdecfdcf$var$nLength","nBitLength","_nBitLength","$79cb7bbbfdecfdcf$var$getFieldBytesLength","fieldOrder","bitLength","$79cb7bbbfdecfdcf$var$getMinHashLength","validateField","ORDER","MASK","BYTES","BITS","FpPow","FpInvertBatch","FpDiv","lhs","rhs","FpIsSquare","legendreConst","nLength","Field","redef","nByteLength","sqrtP","freeze","sqrN","addN","subN","mulN","sqrt","invertBatch","cmov","fromBytes","FpSqrtOdd","elm","FpSqrtEven","hashToPrivateScalar","groupOrder","minLen","getFieldBytesLength","getMinHashLength","mapHashToField","fieldLen","reduced","$1822a1d6a75360ac$var$_0n","$1822a1d6a75360ac$var$_1n","$1822a1d6a75360ac$exports","wNAF","constTimeNegate","condition","negate","W","unsafeLadder","double","precomputeWindow","windows","windowSize","points","precomputes","mask","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","wNAFCached","precomputesMap","transform","_WINDOW_SIZE","comp","validateBasic","curve","Gx","Gy","$688b788e0d1b1ae2$var$_0n","$688b788e0d1b1ae2$var$_1n","$688b788e0d1b1ae2$var$_2n","$688b788e0d1b1ae2$var$_8n","$688b788e0d1b1ae2$var$VERIFY_DEFAULT","zip215","$688b788e0d1b1ae2$exports","twistedEdwards","curveDef","CURVE","adjustScalarBytes","domain","uvRatio","mapToCurve","$688b788e0d1b1ae2$var$validateOpts","CURVE_ORDER","prehash","cHash","cofactor1","modP","ctx","phflag","inBig","inRange","in0MaskRange","assertInRange","assertGE0","pointPrecomputes","isPoint","Point","toAffine","toInv","ez","fromAffine","_setWindowSize","assertValidity","ex","X","ey","Y","et","X2","Y2","Z2","Z4","aX2","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","X3","Y3","T3","Z3","wnaf","normalizeZ","scalar","multiplyUnsafe","I","G1","isSmallOrder","isTorsionFree","iz","ax","ay","zz","clearCofactor","cofactor","normed","lastByte","y2","isXOdd","isLastByteOdd","privKey","getExtendedPublicKey","point","toRawBytes","modN","modN_LE","hashed","head","pointBytes","hashDomainToScalar","msgs","verifyOpts","R","SB","ExtendedPoint","randomPrivateKey","precompute","$b93fa3e30f8c7f2f$var$_0n","$b93fa3e30f8c7f2f$var$_1n","$b93fa3e30f8c7f2f$exports","montgomery","montgomeryBits","powPminus2","Gu","montgomeryBytes","cswap","swap","x_2","x_3","dummy","assertFieldElement","encodeUCoordinate","scalarMult","pointU","uEnc","decodeUCoordinate","pu","x_1","sw","z_2","z_3","k_t","AA","BB","DA","CB","dacb","da_cb","z2","montgomeryLadder","decodeScalar","GuBytes","scalarMultBase","getSharedSecret","privateKey","getPublicKey","utils","$c1e554a37b8d3950$var$os2ip","$c1e554a37b8d3950$var$i2osp","$c1e554a37b8d3950$var$strxor","$c1e554a37b8d3950$var$abytes","$c1e554a37b8d3950$var$isNum","$c1e554a37b8d3950$var$expand_message_xmd","DST","lenInBytes","b_in_bytes","r_in_bytes","ell","DST_prime","Z_pad","l_i_b_str","b_0","$c1e554a37b8d3950$var$expand_message_xof","dkLen","$c1e554a37b8d3950$var$hash_to_field","expand","_DST","$c1e554a37b8d3950$var$validateDST","log2p","len_in_bytes","prb","elm_offset","tv","$c1e554a37b8d3950$exports","expand_message_xmd","expand_message_xof","hash_to_field","isogenyMap","COEFF","xNum","xDen","yNum","yDen","createHasher","def","hashToCurve","u0","encodeToCurve","encodeDST","$2eb4b98c96cd8c6a$var$ED25519_P","$2eb4b98c96cd8c6a$var$ED25519_SQRT_M1","$2eb4b98c96cd8c6a$var$_0n","$2eb4b98c96cd8c6a$var$_1n","$2eb4b98c96cd8c6a$var$_2n","$2eb4b98c96cd8c6a$var$_5n","$2eb4b98c96cd8c6a$var$_10n","$2eb4b98c96cd8c6a$var$_20n","$2eb4b98c96cd8c6a$var$_40n","$2eb4b98c96cd8c6a$var$_80n","$2eb4b98c96cd8c6a$var$ed25519_pow_2_252_3","b10","b20","b40","b80","b160","b240","b250","$2eb4b98c96cd8c6a$var$adjustScalarBytes","$2eb4b98c96cd8c6a$var$uvRatio","v3","pow_p_5_8","vx2","root1","root2","useRoot1","useRoot2","noRoot","$2eb4b98c96cd8c6a$exports","ED25519_TORSION_SUBGROUP","$2eb4b98c96cd8c6a$var$Fp","$2eb4b98c96cd8c6a$var$ed25519Defaults","$2eb4b98c96cd8c6a$var$ed25519_domain","$2eb4b98c96cd8c6a$var$edwardsToMontgomeryPub","edwardsPub","ed25519","_1n1","ed25519ctx","ed25519ph","x25519","edwardsToMontgomeryPub","edwardsToMontgomery","edwardsToMontgomeryPriv","edwardsPriv","$2eb4b98c96cd8c6a$var$ELL2_C1","$2eb4b98c96cd8c6a$var$ELL2_C2","$2eb4b98c96cd8c6a$var$ELL2_C3","$2eb4b98c96cd8c6a$var$ELL2_C4","$2eb4b98c96cd8c6a$var$ELL2_J","$2eb4b98c96cd8c6a$var$ELL2_C1_EDWARDS","$2eb4b98c96cd8c6a$var$map_to_curve_elligator2_edwards25519","xMn","xMd","yMn","yMd","tv1","xd","x1n","tv2","gxd","gx1","tv3","y11","y12","y1","x2n","y21","y22","gx2","e3","xn","e4","$2eb4b98c96cd8c6a$var$map_to_curve_elligator2_curve25519","yn","yd","$2eb4b98c96cd8c6a$var$htf","scalars","$2eb4b98c96cd8c6a$var$assertRstPoint","$2eb4b98c96cd8c6a$var$RistPoint","$2eb4b98c96cd8c6a$var$SQRT_M1","$2eb4b98c96cd8c6a$var$SQRT_AD_MINUS_ONE","$2eb4b98c96cd8c6a$var$INVSQRT_A_MINUS_D","$2eb4b98c96cd8c6a$var$ONE_MINUS_D_SQ","$2eb4b98c96cd8c6a$var$D_MINUS_ONE_SQ","$2eb4b98c96cd8c6a$var$invertSqrt","$2eb4b98c96cd8c6a$var$MAX_255B","$2eb4b98c96cd8c6a$var$bytes255ToNumberLE","$2eb4b98c96cd8c6a$var$calcElligatorRistrettoMap","r0","Ns","Ns_D_is_sq","s_","Nt","s2","W0","W1","W3","ap","R1","R2","emsg","u1_2","u2_2","Dx","Dy","ep","u2sq","invsqrt","D1","D2","zInv","_x","_y","one","two","RistrettoPoint","hashToRistretto255","uniform_bytes","hash_to_ristretto255","$0f515ab21b72e263$export$801ec78da0f28988","prune","currentTime","$0f515ab21b72e263$var$__classPrivateFieldGet","$0f515ab21b72e263$var$_ExpirableMap_inner","timestamp","$0f515ab21b72e263$var$_ExpirableMap_expirationTime","clear","generator","callbackfn","thisArg","$0f515ab21b72e263$var$_a","$0f515ab21b72e263$var$_b","$0f515ab21b72e263$var$__classPrivateFieldSet","toStringTag","$86667e60d68dfb4f$export$fce8b28f6aad8eb5","$86667e60d68dfb4f$export$6715f976ddb8b569","$86667e60d68dfb4f$export$a994e0877d701c3d","$86667e60d68dfb4f$export$f02ce94b931c909b","$86667e60d68dfb4f$export$afd4bdc0871f6d19","oid","bitStringHeaderLength","$86667e60d68dfb4f$export$d2bd2481d6b0cfaf","derEncoded","expect","bufEquals","payloadLen","lenBytes","$86667e60d68dfb4f$export$153336a114cb84ae","$aab33de23b9b21d0$export$8406e34c787f119a","fromDer","toDer","rawKey","derDecode","unwrapped","RAW_KEY_LENGTH","$aab33de23b9b21d0$var$__classPrivateFieldGet","$aab33de23b9b21d0$var$_Ed25519PublicKey_rawKey","$aab33de23b9b21d0$var$_Ed25519PublicKey_derKey","toRaw","$aab33de23b9b21d0$var$__classPrivateFieldSet","derEncode","$7883c8cf2b6ae906$export$77cea355fa80b5f4","Function","observers","unsubscribe","observer","notify","Proxy","$7883c8cf2b6ae906$var$__classPrivateFieldGet","$7883c8cf2b6ae906$var$_Observable_instances","$7883c8cf2b6ae906$var$_Observable_call","$7883c8cf2b6ae906$export$b48105c18e420aa1","level","$7883c8cf2b6ae906$var$_ObservableLog_instances","$7883c8cf2b6ae906$var$_ObservableLog_call","$ca65328ab2ffdb8f$export$a83c5571d9993e3f","RequestStatusResponseStatus1","$ca65328ab2ffdb8f$var$HttpDefaultFetchError","$ca65328ab2ffdb8f$export$8712168fb5bbd446","$ca65328ab2ffdb8f$export$ae7a4ef3df78c893","isLocal","_host","endsWith","addTransform","fn","$ca65328ab2ffdb8f$var$__classPrivateFieldGet","$ca65328ab2ffdb8f$var$_HttpAgent_updatePipeline","findIndex","$ca65328ab2ffdb8f$var$_HttpAgent_queryPipeline","_identity","identity","ecid","effectiveCanisterId","sender","ingress_expiry","_timeDiffMsecs","submit","request_type","Call","canister_id","method_name","transformedRequest","_transform","_credentials","Authorization","btoa","transformRequest","request1","_requestAndRetry","_fetch","_callOptions","requestId","requestIdOf","responseBuffer","responseBody","statusText","request2","tries","_retryTimes","responseText","errorMessage","subnetStatus1","request3","_fetchOptions","queryResponse","httpDetails","makeQuery","$ca65328ab2ffdb8f$var$_HttpAgent_verifyQuerySignatures","subnetStatus","$ca65328ab2ffdb8f$var$_HttpAgent_subnetKeys","fetchSubnetKeys","getSubnetStatus","$ca65328ab2ffdb8f$var$_HttpAgent_verifyQueryResponse","updatedSubnetStatus","CertificateVerificationError","request4","createReadStateRequest","CanisterStatus","callTime","replicaTime","_rootKeyFetched","invalidateIdentity","replaceIdentity","subnetResponse","$d7N9n","request5","r2","fn1","_isAgent","$7883c8cf2b6ae906$exports","ObservableLog","$0f515ab21b72e263$exports","ExpirableMap","signatures","domainSeparator","nodeId","reply","hashOfMap","request_id","reject_code","reject_message","error_code","separatorWithHash","pubKey","$aab33de23b9b21d0$exports","Ed25519PublicKey","fetch","defaultFetch","$ca65328ab2ffdb8f$var$getDefaultFetch","fetchOptions","callOptions","knownHosts","remoteHosts","knownHost","verifyQuerySignatures","$ca65328ab2ffdb8f$var$__classPrivateFieldSet","retryTimes","credentials","$04cb68326dc13d3b$exports","AnonymousIdentity","useQueryNonces","logToConsole","$4a34427992f6753a$export$cdef8a416b9f2fd7","ProxyMessageKind1","$2f2863b0e25729f5$export$4430d10c2e71ce6c","ic","$ab8f3306d375335c$export$4277c1abc8f864f","$ab8f3306d375335c$export$e08e3b67e392101e","$ab8f3306d375335c$export$257d545960e87a27","$ab8f3306d375335c$export$d2de3aaeafa91619","$ab8f3306d375335c$export$562bc4a862c31607","$ab8f3306d375335c$export$83e74882c5df8fe1","first","timeInMsec","$ab8f3306d375335c$export$1115855944bfc702","attempts","$ab8f3306d375335c$export$de363e709c412c8a","throttleInMsec","startingThrottleInMsec","backoffFactor","currentThrottling","strategies","$b15521821bab78dc$export$9239e55bfea0134f","strategy","currentRequest","maybeBuf","$ca65328ab2ffdb8f$exports","RequestStatusResponseStatus","Unknown","Replied","Received","Processing","Rejected","rejectCode","rejectMessage","Done","$0abea477b45015e1$export$a143d493d941bafc","$0abea477b45015e1$var$customInspectSymbol","$0abea477b45015e1$var$Buffer","$0abea477b45015e1$var$createBuffer","$0abea477b45015e1$var$allocUnsafe","$0abea477b45015e1$var$from","$0abea477b45015e1$var$byteLength","$0abea477b45015e1$var$fromString","$0abea477b45015e1$var$isInstance","$0abea477b45015e1$var$fromArrayBuffer","$0abea477b45015e1$var$fromArrayLike","$0abea477b45015e1$var$fromArrayView","$0abea477b45015e1$var$checked","$0abea477b45015e1$var$numberIsNaN","$0abea477b45015e1$var$fromObject","$0abea477b45015e1$var$assertSize","$0abea477b45015e1$var$utf8ToBytes","$0abea477b45015e1$var$base64ToBytes","$0abea477b45015e1$var$slowToString","$0abea477b45015e1$var$hexSlice","$0abea477b45015e1$var$utf8Slice","$0abea477b45015e1$var$asciiSlice","$0abea477b45015e1$var$latin1Slice","$0abea477b45015e1$var$base64Slice","$0abea477b45015e1$var$utf16leSlice","$0abea477b45015e1$var$swap","$0abea477b45015e1$var$bidirectionalIndexOf","$0abea477b45015e1$var$arrayIndexOf","$0abea477b45015e1$var$hexWrite","$0abea477b45015e1$var$utf8Write","$0abea477b45015e1$var$blitBuffer","$0abea477b45015e1$var$asciiWrite","$0abea477b45015e1$var$asciiToBytes","$0abea477b45015e1$var$base64Write","$0abea477b45015e1$var$ucs2Write","$0abea477b45015e1$var$utf16leToBytes","$0abea477b45015e1$var$decodeCodePointsArray","$0abea477b45015e1$var$typedArraySupport","$0abea477b45015e1$var$alloc","$0abea477b45015e1$var$hexSliceLookupTable","$0abea477b45015e1$var$checkOffset","$0abea477b45015e1$var$checkInt","$0abea477b45015e1$var$wrtBigUInt64LE","$0abea477b45015e1$var$checkIntBI","$0abea477b45015e1$var$wrtBigUInt64BE","$0abea477b45015e1$var$checkIEEE754","$0abea477b45015e1$var$writeFloat","$0abea477b45015e1$var$writeDouble","readBigUInt64LE","$0abea477b45015e1$var$defineBigIntMethod","$0abea477b45015e1$var$validateNumber","$0abea477b45015e1$var$boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","$0abea477b45015e1$var$errors","$0abea477b45015e1$var$E","sym","getMessage","Base","$0abea477b45015e1$var$addNumericalSeparator","byteLength10","ERR_OUT_OF_RANGE","byteLength9","$0abea477b45015e1$var$checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","$0abea477b45015e1$var$INVALID_BASE64_RE","$0abea477b45015e1$var$base64clean","$0abea477b45015e1$var$BufferBigIntNotDefined","$4d2a4c596c5a1445$export$2e2bcd8739ae039","IDL","bitcoin_network","Variant","mainnet","Null","testnet","bitcoin_address","Text","get_balance_request","Record","network","address","min_confirmations","Opt","Nat32","satoshi","Nat64","get_current_fee_percentiles_request","millisatoshi_per_byte","get_utxos_request","page","Vec","Nat8","block_hash","outpoint","txid","vout","utxo","get_utxos_response","next_page","tip_height","tip_block_hash","utxos","send_transaction_request","transaction","change_origin","from_user","user_id","from_canister","canister_version","change_details","creation","controllers","code_deployment","reinstall","upgrade","install","module_hash","controllers_change","code_uninstall","change","timestamp_nanos","details","definite_canister_settings","freezing_threshold","Nat","memory_allocation","compute_allocation","canister_settings","ecdsa_curve","secp256k1","http_header","http_response","chunk_hash","wasm_module","node_metrics","num_block_failures_total","num_blocks_total","Service","bitcoin_get_balance","Func","bitcoin_get_balance_query","bitcoin_get_current_fee_percentiles","bitcoin_get_utxos","bitcoin_get_utxos_query","bitcoin_send_transaction","canister_info","num_requested_changes","recent_changes","total_num_changes","canister_status","stopped","stopping","running","memory_size","cycles","settings","idle_cycles_burned_per_day","clear_chunk_store","create_canister","sender_canister_version","delete_canister","deposit_cycles","ecdsa_public_key","key_id","derivation_path","public_key","chain_code","http_request","post","max_response_bytes","install_chunked_code","wasm_module_hash","skip_pre_upgrade","Bool","chunk_hashes_list","target_canister","storage_canister","install_code","node_metrics_history","start_at_timestamp_nanos","provisional_create_canister_with_cycles","specified_id","provisional_top_up_canister","raw_rand","sign_with_ecdsa","message_hash","start_canister","stop_canister","stored_chunks","uninstall_code","update_settings","upload_chunk","chunk","$76c761df61e2b19b$export$99bc7577478b08b9","$76c761df61e2b19b$export$3b67ef98a83dd1e2","Status","Code","Message","$76c761df61e2b19b$export$c771b2ea2a8b041b","$76c761df61e2b19b$var$metadataSymbol","$76c761df61e2b19b$export$f73d3eb6fd876d80","actor","service","wasmModule","$76c761df61e2b19b$export$d4a84758eb61b36e","settings1","interfaceFactory","createCanister","createActor","$76c761df61e2b19b$var$DEFAULT_ACTOR_CONFIG","$76c761df61e2b19b$export$691b3d8b8e862e82","$76c761df61e2b19b$var$_createActorMethod","configuration","createActorClass","metadata","$76c761df61e2b19b$var$decodeReturnValue","pollingStrategyFactory","$ab8f3306d375335c$exports","defaultStrategy","caller","_b","queryTransform","cid","callTransform","pollStrategy","responseBytes","shouldIncludeHttpDetails","handler","withOptions","_methodName","$8151bfecbeae2a22$export$b2034e2ea8897403","GameStatus","Finalized","Active","Complete","Nonexistent","QueueEntry","player","GameQueue","QueueValidation","Invalid","ValidReady","ValidNotReady","LobbyQueueJoinResult","validity","playerID","gameID","LobbyLoginResult","credits","deposit","gameStatus","getQueue","joinQueue","login","$c1f82e3815cd1497$export$cea5b5500b00007f","canisterId1","HttpAgent","agentOptions","actorOptions","$c1f82e3815cd1497$export$cb2bc87933ecfd63","$afa62e909930b9a7$exports","$b96363d8795180c9$exports","$7ac4ea4e917f4ef6$exports","$a1a9cd0d3e8f6a73$exports","$e92c6818d0edb350$var$characters","$e92c6818d0edb350$export$2e2bcd8739ae039","handleGameStart","queue1","setQueue","playerName","setPlayerName","setPlayerID","setGameID","isJoiningQueue","setIsJoiningQueue","pollLobby","newQueue","intervalId","setInterval","clearInterval","jsxs","jsx","alt","onChange","queueJoinResult","class","$c78ce9c3b69a1682$export$b2034e2ea8897403","GameSessionResult","balances","GameObjectType","Bomb","Ship","Velocity","Float64","Acceleration","Position","InertialState","velocity","mass","acceleration","position","PhysicalPresence","inertialState","radius","GameObject","cleanup","physicalPresence","BDBView","dataValues","objects","dataKeys","Vector","InputCommandTypes","Fire","None","Thrust","InputCommand","vector","commandType","Result","Ok","Err","QueueJoinResult","gameSessionResult","getGameView","getScores","getTick","startGame","testGame","validateQueue","$b9d67504161ec17a$export$5cb5e45196e80e3a","$b9d67504161ec17a$export$cb2bc87933ecfd63","$60ec1ef8acd9f3ad$exports","$d6cbe7c594af8def$exports","$415217a55388b4cc$exports","$492a4e36a07485cb$exports","$7af059c48eace940$exports","$1a5e067e9747cac8$exports","$a3e54ee3bc2eab2d$exports","$9b3900c7155506ac$exports","$3924ec14df179449$var$assets","ships","characters","bombs","$3924ec14df179449$export$2e2bcd8739ae039","playerID1","handleGameEnd","isDragging","startPoint","lastTimestamp","gos","names","setNames","scores1","setScores","svgRef","deltaTime","resizeSvg","innerWidth","innerHeight","aspectRatio","svgElement","star","blowUp","bomb","launchedBy","blastRadius","explosion","explosionColors","getElementById","createExplosion","newScores","goType","ship","health","score","healthbar","svg","getAttribute","go","defaultDegrees","background","healthBar","createShip","rotate","createBomb","refresh","canisterTick","natData","localGo","goid","removeObject","v1","v2","interpolatedPosition","degrees","atan2","PI","rotation","scores","fetchScores","handleMouseDown","getBoundingClientRect","svgPoint","createSVGPoint","matrixTransform","getScreenCTM","inverse","handleMouseUp","endPoint","dx","dy","swipeLength","normalizedVector","targetPoint","handleMouseLeave","xmlns","viewBox","$c6f9c96d56a8e760$export$2e2bcd8739ae039","setContext","gameID1"],"version":3,"file":"index.fa82552e.js.map"}