hive-p2p 1.0.63 → 1.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/arbiter.mjs
CHANGED
|
@@ -115,7 +115,7 @@ export class Arbiter {
|
|
|
115
115
|
try {
|
|
116
116
|
const { pubkey, signature, signatureStart } = message;
|
|
117
117
|
const signedData = serialized.subarray(0, signatureStart);
|
|
118
|
-
const signatureValid = await this.cryptoCodex.verifySignature(pubkey,
|
|
118
|
+
const signatureValid = await this.cryptoCodex.verifySignature(pubkey, signedData, signature);
|
|
119
119
|
if (!signatureValid) throw new Error('Gossip signature invalid');
|
|
120
120
|
this.adjustTrust(from, TRUST_VALUES.VALID_SIGNATURE, 'Gossip signature valid');
|
|
121
121
|
return true;
|
package/core/crypto-codex.mjs
CHANGED
|
@@ -170,7 +170,7 @@ export class CryptoCodex {
|
|
|
170
170
|
/** @param {Uint8Array} publicKey @param {Uint8Array} dataToVerify @param {Uint8Array} signature */
|
|
171
171
|
async verifySignature(publicKey, dataToVerify, signature) {
|
|
172
172
|
if (this.AVOID_CRYPTO) return true;
|
|
173
|
-
return ed25519.verifyAsync(
|
|
173
|
+
return ed25519.verifyAsync(signature, dataToVerify, publicKey);
|
|
174
174
|
}
|
|
175
175
|
/** @param {Uint8Array} bufferView */
|
|
176
176
|
readBufferHeader(bufferView, readAssociatedId = true) {
|
package/core/node-services.mjs
CHANGED
|
@@ -68,7 +68,7 @@ export class NodeServices {
|
|
|
68
68
|
|
|
69
69
|
const { signatureStart, pubkey, signature } = message;
|
|
70
70
|
const signedData = d.subarray(0, signatureStart);
|
|
71
|
-
if (!await this.cryptoCodex.verifySignature(pubkey,
|
|
71
|
+
if (!await this.cryptoCodex.verifySignature(pubkey, signedData, signature)) return;
|
|
72
72
|
|
|
73
73
|
remoteId = route[0];
|
|
74
74
|
this.peerStore.digestPeerNeighbors(remoteId, neighborsList); // Update known store
|
package/core/topologist.mjs
CHANGED
|
@@ -187,7 +187,7 @@ export class Topologist {
|
|
|
187
187
|
|
|
188
188
|
const { signatureStart, pubkey, signature } = message;
|
|
189
189
|
const signedData = d.subarray(0, signatureStart);
|
|
190
|
-
if (!await this.cryptoCodex.verifySignature(pubkey,
|
|
190
|
+
if (!await this.cryptoCodex.verifySignature(pubkey, signedData, signature)) return;
|
|
191
191
|
|
|
192
192
|
remoteId = route[0];
|
|
193
193
|
this.peerStore.digestPeerNeighbors(remoteId, neighborsList); // Update known store
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var ni=Object.create;var Ze=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var ii=Object.getOwnPropertyNames;var si=Object.getPrototypeOf,Ai=Object.prototype.hasOwnProperty;var le=(c=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(c,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):c)(function(c){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+c+'" is not supported')});var Xt=(c,t)=>()=>(c&&(t=c(c=0)),t);var oi=(c,t)=>()=>(t||c((t={exports:{}}).exports,t),t.exports),Be=(c,t)=>{for(var e in t)Ze(c,e,{get:t[e],enumerable:!0})},ai=(c,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ii(t))!Ai.call(c,s)&&s!==e&&Ze(c,s,{get:()=>t[s],enumerable:!(r=ri(t,s))||r.enumerable});return c};var ci=(c,t,e)=>(e=c!=null?ni(si(c)):{},ai(t||!c||!c.__esModule?Ze(e,"default",{value:c,enumerable:!0}):e,c));var hi={};var Pn=Xt(()=>{(function(c){if(typeof exports=="object"&&typeof module<"u")module.exports=c();else if(typeof define=="function"&&define.amd)define([],c);else{var t;t=typeof window>"u"?typeof global>"u"?typeof self>"u"?this:self:global:window,t.SimplePeer=c()}})(function(){var c=Math.floor,t=Math.abs,e=Math.pow;return(function(){function r(s,A,a){function g(f,I){if(!A[f]){if(!s[f]){var u=typeof le=="function"&≤if(!I&&u)return u(f,!0);if(E)return E(f,!0);var p=new Error("Cannot find module '"+f+"'");throw p.code="MODULE_NOT_FOUND",p}var y=A[f]={exports:{}};s[f][0].call(y.exports,function(m){var v=s[f][1][m];return g(v||m)},y,y.exports,r,s,A,a)}return A[f].exports}for(var E=typeof le=="function"&&le,o=0;o<a.length;o++)g(a[o]);return g}return r})()({1:[function(r,s,A){"use strict";function a(C){var B=C.length;if(0<B%4)throw new Error("Invalid string. Length must be a multiple of 4");var S=C.indexOf("=");S===-1&&(S=B);var b=S===B?0:4-S%4;return[S,b]}function g(C,B,S){return 3*(B+S)/4-S}function E(C){var B,S,b=a(C),_=b[0],F=b[1],w=new y(g(C,_,F)),R=0,M=0<F?_-4:_;for(S=0;S<M;S+=4)B=p[C.charCodeAt(S)]<<18|p[C.charCodeAt(S+1)]<<12|p[C.charCodeAt(S+2)]<<6|p[C.charCodeAt(S+3)],w[R++]=255&B>>16,w[R++]=255&B>>8,w[R++]=255&B;return F===2&&(B=p[C.charCodeAt(S)]<<2|p[C.charCodeAt(S+1)]>>4,w[R++]=255&B),F===1&&(B=p[C.charCodeAt(S)]<<10|p[C.charCodeAt(S+1)]<<4|p[C.charCodeAt(S+2)]>>2,w[R++]=255&B>>8,w[R++]=255&B),w}function o(C){return u[63&C>>18]+u[63&C>>12]+u[63&C>>6]+u[63&C]}function f(C,B,S){for(var b,_=[],F=B;F<S;F+=3)b=(16711680&C[F]<<16)+(65280&C[F+1]<<8)+(255&C[F+2]),_.push(o(b));return _.join("")}function I(C){for(var B,S=C.length,b=S%3,_=[],F=16383,w=0,R=S-b;w<R;w+=F)_.push(f(C,w,w+F>R?R:w+F));return b===1?(B=C[S-1],_.push(u[B>>2]+u[63&B<<4]+"==")):b===2&&(B=(C[S-2]<<8)+C[S-1],_.push(u[B>>10]+u[63&B>>4]+u[63&B<<2]+"=")),_.join("")}A.byteLength=function(C){var B=a(C),S=B[0],b=B[1];return 3*(S+b)/4-b},A.toByteArray=E,A.fromByteArray=I;for(var u=[],p=[],y=typeof Uint8Array>"u"?Array:Uint8Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,l=m.length;v<l;++v)u[v]=m[v],p[m.charCodeAt(v)]=v;p[45]=62,p[95]=63},{}],2:[function(){},{}],3:[function(r,s,A){(function(){(function(){"use strict";var a=String.fromCharCode,g=Math.min;function E(n){if(2147483647<n)throw new RangeError('The value "'+n+'" is invalid for option "size"');var i=new Uint8Array(n);return i.__proto__=o.prototype,i}function o(n,i,h){if(typeof n=="number"){if(typeof i=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return p(n)}return f(n,i,h)}function f(n,i,h){if(typeof n=="string")return y(n,i);if(ArrayBuffer.isView(n))return m(n);if(n==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof n);if(N(n,ArrayBuffer)||n&&N(n.buffer,ArrayBuffer))return v(n,i,h);if(typeof n=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var Q=n.valueOf&&n.valueOf();if(Q!=null&&Q!==n)return o.from(Q,i,h);var D=l(n);if(D)return D;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof n[Symbol.toPrimitive]=="function")return o.from(n[Symbol.toPrimitive]("string"),i,h);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof n)}function I(n){if(typeof n!="number")throw new TypeError('"size" argument must be of type number');if(0>n)throw new RangeError('The value "'+n+'" is invalid for option "size"')}function u(n,i,h){return I(n),0>=n||i===void 0?E(n):typeof h=="string"?E(n).fill(i,h):E(n).fill(i)}function p(n){return I(n),E(0>n?0:0|C(n))}function y(n,i){if((typeof i!="string"||i==="")&&(i="utf8"),!o.isEncoding(i))throw new TypeError("Unknown encoding: "+i);var h=0|B(n,i),Q=E(h),D=Q.write(n,i);return D!==h&&(Q=Q.slice(0,D)),Q}function m(n){for(var i=0>n.length?0:0|C(n.length),h=E(i),Q=0;Q<i;Q+=1)h[Q]=255&n[Q];return h}function v(n,i,h){if(0>i||n.byteLength<i)throw new RangeError('"offset" is outside of buffer bounds');if(n.byteLength<i+(h||0))throw new RangeError('"length" is outside of buffer bounds');var Q;return Q=i===void 0&&h===void 0?new Uint8Array(n):h===void 0?new Uint8Array(n,i):new Uint8Array(n,i,h),Q.__proto__=o.prototype,Q}function l(n){if(o.isBuffer(n)){var i=0|C(n.length),h=E(i);return h.length===0||n.copy(h,0,0,i),h}return n.length===void 0?n.type==="Buffer"&&Array.isArray(n.data)?m(n.data):void 0:typeof n.length!="number"||x(n.length)?E(0):m(n)}function C(n){if(n>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|n}function B(n,i){if(o.isBuffer(n))return n.length;if(ArrayBuffer.isView(n)||N(n,ArrayBuffer))return n.byteLength;if(typeof n!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof n);var h=n.length,Q=2<arguments.length&&arguments[2]===!0;if(!Q&&h===0)return 0;for(var D=!1;;)switch(i){case"ascii":case"latin1":case"binary":return h;case"utf8":case"utf-8":return St(n).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*h;case"hex":return h>>>1;case"base64":return Ct(n).length;default:if(D)return Q?-1:St(n).length;i=(""+i).toLowerCase(),D=!0}}function S(n,i,h){var Q=!1;if((i===void 0||0>i)&&(i=0),i>this.length||((h===void 0||h>this.length)&&(h=this.length),0>=h)||(h>>>=0,i>>>=0,h<=i))return"";for(n||(n="utf8");;)switch(n){case"hex":return at(this,i,h);case"utf8":case"utf-8":return $(this,i,h);case"ascii":return J(this,i,h);case"latin1":case"binary":return Rt(this,i,h);case"base64":return q(this,i,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ut(this,i,h);default:if(Q)throw new TypeError("Unknown encoding: "+n);n=(n+"").toLowerCase(),Q=!0}}function b(n,i,h){var Q=n[i];n[i]=n[h],n[h]=Q}function _(n,i,h,Q,D){if(n.length===0)return-1;if(typeof h=="string"?(Q=h,h=0):2147483647<h?h=2147483647:-2147483648>h&&(h=-2147483648),h=+h,x(h)&&(h=D?0:n.length-1),0>h&&(h=n.length+h),h>=n.length){if(D)return-1;h=n.length-1}else if(0>h)if(D)h=0;else return-1;if(typeof i=="string"&&(i=o.from(i,Q)),o.isBuffer(i))return i.length===0?-1:F(n,i,h,Q,D);if(typeof i=="number")return i&=255,typeof Uint8Array.prototype.indexOf=="function"?D?Uint8Array.prototype.indexOf.call(n,i,h):Uint8Array.prototype.lastIndexOf.call(n,i,h):F(n,[i],h,Q,D);throw new TypeError("val must be string, number or Buffer")}function F(n,i,h,Q,D){function T(ue,re){return L===1?ue[re]:ue.readUInt16BE(re*L)}var L=1,W=n.length,rt=i.length;if(Q!==void 0&&(Q=(Q+"").toLowerCase(),Q==="ucs2"||Q==="ucs-2"||Q==="utf16le"||Q==="utf-16le")){if(2>n.length||2>i.length)return-1;L=2,W/=2,rt/=2,h/=2}var Z;if(D){var z=-1;for(Z=h;Z<W;Z++)if(T(n,Z)!==T(i,z===-1?0:Z-z))z!==-1&&(Z-=Z-z),z=-1;else if(z===-1&&(z=Z),Z-z+1===rt)return z*L}else for(h+rt>W&&(h=W-rt),Z=h;0<=Z;Z--){for(var tt=!0,ne=0;ne<rt;ne++)if(T(n,Z+ne)!==T(i,ne)){tt=!1;break}if(tt)return Z}return-1}function w(n,i,h,Q){h=+h||0;var D=n.length-h;Q?(Q=+Q,Q>D&&(Q=D)):Q=D;var T=i.length;Q>T/2&&(Q=T/2);for(var L,W=0;W<Q;++W){if(L=parseInt(i.substr(2*W,2),16),x(L))return W;n[h+W]=L}return W}function R(n,i,h,Q){return mt(St(i,n.length-h),n,h,Q)}function M(n,i,h,Q){return mt(jt(i),n,h,Q)}function U(n,i,h,Q){return M(n,i,h,Q)}function H(n,i,h,Q){return mt(Ct(i),n,h,Q)}function K(n,i,h,Q){return mt(Tt(i,n.length-h),n,h,Q)}function q(n,i,h){return i===0&&h===n.length?O.fromByteArray(n):O.fromByteArray(n.slice(i,h))}function $(n,i,h){h=g(n.length,h);for(var Q=[],D=i;D<h;){var T=n[D],L=null,W=239<T?4:223<T?3:191<T?2:1;if(D+W<=h){var rt,Z,z,tt;W===1?128>T&&(L=T):W===2?(rt=n[D+1],(192&rt)==128&&(tt=(31&T)<<6|63&rt,127<tt&&(L=tt))):W===3?(rt=n[D+1],Z=n[D+2],(192&rt)==128&&(192&Z)==128&&(tt=(15&T)<<12|(63&rt)<<6|63&Z,2047<tt&&(55296>tt||57343<tt)&&(L=tt))):W===4&&(rt=n[D+1],Z=n[D+2],z=n[D+3],(192&rt)==128&&(192&Z)==128&&(192&z)==128&&(tt=(15&T)<<18|(63&rt)<<12|(63&Z)<<6|63&z,65535<tt&&1114112>tt&&(L=tt)))}L===null?(L=65533,W=1):65535<L&&(L-=65536,Q.push(55296|1023&L>>>10),L=56320|1023&L),Q.push(L),D+=W}return st(Q)}function st(n){var i=n.length;if(i<=4096)return a.apply(String,n);for(var h="",Q=0;Q<i;)h+=a.apply(String,n.slice(Q,Q+=4096));return h}function J(n,i,h){var Q="";h=g(n.length,h);for(var D=i;D<h;++D)Q+=a(127&n[D]);return Q}function Rt(n,i,h){var Q="";h=g(n.length,h);for(var D=i;D<h;++D)Q+=a(n[D]);return Q}function at(n,i,h){var Q=n.length;(!i||0>i)&&(i=0),(!h||0>h||h>Q)&&(h=Q);for(var D="",T=i;T<h;++T)D+=vt(n[T]);return D}function ut(n,i,h){for(var Q=n.slice(i,h),D="",T=0;T<Q.length;T+=2)D+=a(Q[T]+256*Q[T+1]);return D}function j(n,i,h){if(n%1!=0||0>n)throw new RangeError("offset is not uint");if(n+i>h)throw new RangeError("Trying to access beyond buffer length")}function X(n,i,h,Q,D,T){if(!o.isBuffer(n))throw new TypeError('"buffer" argument must be a Buffer instance');if(i>D||i<T)throw new RangeError('"value" argument is out of bounds');if(h+Q>n.length)throw new RangeError("Index out of range")}function Et(n,i,h,Q){if(h+Q>n.length)throw new RangeError("Index out of range");if(0>h)throw new RangeError("Index out of range")}function At(n,i,h,Q,D){return i=+i,h>>>=0,D||Et(n,i,h,4,34028234663852886e22,-34028234663852886e22),k.write(n,i,h,Q,23,4),h+4}function wt(n,i,h,Q,D){return i=+i,h>>>=0,D||Et(n,i,h,8,17976931348623157e292,-17976931348623157e292),k.write(n,i,h,Q,52,8),h+8}function nt(n){if(n=n.split("=")[0],n=n.trim().replace(G,""),2>n.length)return"";for(;n.length%4!=0;)n+="=";return n}function vt(n){return 16>n?"0"+n.toString(16):n.toString(16)}function St(n,i){i=i||1/0;for(var h,Q=n.length,D=null,T=[],L=0;L<Q;++L){if(h=n.charCodeAt(L),55295<h&&57344>h){if(!D){if(56319<h){-1<(i-=3)&&T.push(239,191,189);continue}else if(L+1===Q){-1<(i-=3)&&T.push(239,191,189);continue}D=h;continue}if(56320>h){-1<(i-=3)&&T.push(239,191,189),D=h;continue}h=(D-55296<<10|h-56320)+65536}else D&&-1<(i-=3)&&T.push(239,191,189);if(D=null,128>h){if(0>(i-=1))break;T.push(h)}else if(2048>h){if(0>(i-=2))break;T.push(192|h>>6,128|63&h)}else if(65536>h){if(0>(i-=3))break;T.push(224|h>>12,128|63&h>>6,128|63&h)}else if(1114112>h){if(0>(i-=4))break;T.push(240|h>>18,128|63&h>>12,128|63&h>>6,128|63&h)}else throw new Error("Invalid code point")}return T}function jt(n){for(var i=[],h=0;h<n.length;++h)i.push(255&n.charCodeAt(h));return i}function Tt(n,i){for(var h,Q,D,T=[],L=0;L<n.length&&!(0>(i-=2));++L)h=n.charCodeAt(L),Q=h>>8,D=h%256,T.push(D),T.push(Q);return T}function Ct(n){return O.toByteArray(nt(n))}function mt(n,i,h,Q){for(var D=0;D<Q&&!(D+h>=i.length||D>=n.length);++D)i[D+h]=n[D];return D}function N(n,i){return n instanceof i||n!=null&&n.constructor!=null&&n.constructor.name!=null&&n.constructor.name===i.name}function x(n){return n!==n}var O=r("base64-js"),k=r("ieee754");A.Buffer=o,A.SlowBuffer=function(n){return+n!=n&&(n=0),o.alloc(+n)},A.INSPECT_MAX_BYTES=50,A.kMaxLength=2147483647,o.TYPED_ARRAY_SUPPORT=(function(){try{var n=new Uint8Array(1);return n.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},n.foo()===42}catch{return!1}})(),o.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){return o.isBuffer(this)?this.buffer:void 0}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){return o.isBuffer(this)?this.byteOffset:void 0}}),typeof Symbol<"u"&&Symbol.species!=null&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(n,i,h){return f(n,i,h)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(n,i,h){return u(n,i,h)},o.allocUnsafe=function(n){return p(n)},o.allocUnsafeSlow=function(n){return p(n)},o.isBuffer=function(n){return n!=null&&n._isBuffer===!0&&n!==o.prototype},o.compare=function(n,i){if(N(n,Uint8Array)&&(n=o.from(n,n.offset,n.byteLength)),N(i,Uint8Array)&&(i=o.from(i,i.offset,i.byteLength)),!o.isBuffer(n)||!o.isBuffer(i))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(n===i)return 0;for(var h=n.length,Q=i.length,D=0,T=g(h,Q);D<T;++D)if(n[D]!==i[D]){h=n[D],Q=i[D];break}return h<Q?-1:Q<h?1:0},o.isEncoding=function(n){switch((n+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(n,i){if(!Array.isArray(n))throw new TypeError('"list" argument must be an Array of Buffers');if(n.length===0)return o.alloc(0);var h;if(i===void 0)for(i=0,h=0;h<n.length;++h)i+=n[h].length;var Q=o.allocUnsafe(i),D=0;for(h=0;h<n.length;++h){var T=n[h];if(N(T,Uint8Array)&&(T=o.from(T)),!o.isBuffer(T))throw new TypeError('"list" argument must be an Array of Buffers');T.copy(Q,D),D+=T.length}return Q},o.byteLength=B,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var n=this.length;if(n%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var i=0;i<n;i+=2)b(this,i,i+1);return this},o.prototype.swap32=function(){var n=this.length;if(n%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var i=0;i<n;i+=4)b(this,i,i+3),b(this,i+1,i+2);return this},o.prototype.swap64=function(){var n=this.length;if(n%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var i=0;i<n;i+=8)b(this,i,i+7),b(this,i+1,i+6),b(this,i+2,i+5),b(this,i+3,i+4);return this},o.prototype.toString=function(){var n=this.length;return n===0?"":arguments.length===0?$(this,0,n):S.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(n){if(!o.isBuffer(n))throw new TypeError("Argument must be a Buffer");return this===n||o.compare(this,n)===0},o.prototype.inspect=function(){var n="",i=A.INSPECT_MAX_BYTES;return n=this.toString("hex",0,i).replace(/(.{2})/g,"$1 ").trim(),this.length>i&&(n+=" ... "),"<Buffer "+n+">"},o.prototype.compare=function(n,i,h,Q,D){if(N(n,Uint8Array)&&(n=o.from(n,n.offset,n.byteLength)),!o.isBuffer(n))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof n);if(i===void 0&&(i=0),h===void 0&&(h=n?n.length:0),Q===void 0&&(Q=0),D===void 0&&(D=this.length),0>i||h>n.length||0>Q||D>this.length)throw new RangeError("out of range index");if(Q>=D&&i>=h)return 0;if(Q>=D)return-1;if(i>=h)return 1;if(i>>>=0,h>>>=0,Q>>>=0,D>>>=0,this===n)return 0;for(var T=D-Q,L=h-i,W=g(T,L),rt=this.slice(Q,D),Z=n.slice(i,h),z=0;z<W;++z)if(rt[z]!==Z[z]){T=rt[z],L=Z[z];break}return T<L?-1:L<T?1:0},o.prototype.includes=function(n,i,h){return this.indexOf(n,i,h)!==-1},o.prototype.indexOf=function(n,i,h){return _(this,n,i,h,!0)},o.prototype.lastIndexOf=function(n,i,h){return _(this,n,i,h,!1)},o.prototype.write=function(n,i,h,Q){if(i===void 0)Q="utf8",h=this.length,i=0;else if(h===void 0&&typeof i=="string")Q=i,h=this.length,i=0;else if(isFinite(i))i>>>=0,isFinite(h)?(h>>>=0,Q===void 0&&(Q="utf8")):(Q=h,h=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var D=this.length-i;if((h===void 0||h>D)&&(h=D),0<n.length&&(0>h||0>i)||i>this.length)throw new RangeError("Attempt to write outside buffer bounds");Q||(Q="utf8");for(var T=!1;;)switch(Q){case"hex":return w(this,n,i,h);case"utf8":case"utf-8":return R(this,n,i,h);case"ascii":return M(this,n,i,h);case"latin1":case"binary":return U(this,n,i,h);case"base64":return H(this,n,i,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return K(this,n,i,h);default:if(T)throw new TypeError("Unknown encoding: "+Q);Q=(""+Q).toLowerCase(),T=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},o.prototype.slice=function(n,i){var h=this.length;n=~~n,i=i===void 0?h:~~i,0>n?(n+=h,0>n&&(n=0)):n>h&&(n=h),0>i?(i+=h,0>i&&(i=0)):i>h&&(i=h),i<n&&(i=n);var Q=this.subarray(n,i);return Q.__proto__=o.prototype,Q},o.prototype.readUIntLE=function(n,i,h){n>>>=0,i>>>=0,h||j(n,i,this.length);for(var Q=this[n],D=1,T=0;++T<i&&(D*=256);)Q+=this[n+T]*D;return Q},o.prototype.readUIntBE=function(n,i,h){n>>>=0,i>>>=0,h||j(n,i,this.length);for(var Q=this[n+--i],D=1;0<i&&(D*=256);)Q+=this[n+--i]*D;return Q},o.prototype.readUInt8=function(n,i){return n>>>=0,i||j(n,1,this.length),this[n]},o.prototype.readUInt16LE=function(n,i){return n>>>=0,i||j(n,2,this.length),this[n]|this[n+1]<<8},o.prototype.readUInt16BE=function(n,i){return n>>>=0,i||j(n,2,this.length),this[n]<<8|this[n+1]},o.prototype.readUInt32LE=function(n,i){return n>>>=0,i||j(n,4,this.length),(this[n]|this[n+1]<<8|this[n+2]<<16)+16777216*this[n+3]},o.prototype.readUInt32BE=function(n,i){return n>>>=0,i||j(n,4,this.length),16777216*this[n]+(this[n+1]<<16|this[n+2]<<8|this[n+3])},o.prototype.readIntLE=function(n,i,h){n>>>=0,i>>>=0,h||j(n,i,this.length);for(var Q=this[n],D=1,T=0;++T<i&&(D*=256);)Q+=this[n+T]*D;return D*=128,Q>=D&&(Q-=e(2,8*i)),Q},o.prototype.readIntBE=function(n,i,h){n>>>=0,i>>>=0,h||j(n,i,this.length);for(var Q=i,D=1,T=this[n+--Q];0<Q&&(D*=256);)T+=this[n+--Q]*D;return D*=128,T>=D&&(T-=e(2,8*i)),T},o.prototype.readInt8=function(n,i){return n>>>=0,i||j(n,1,this.length),128&this[n]?-1*(255-this[n]+1):this[n]},o.prototype.readInt16LE=function(n,i){n>>>=0,i||j(n,2,this.length);var h=this[n]|this[n+1]<<8;return 32768&h?4294901760|h:h},o.prototype.readInt16BE=function(n,i){n>>>=0,i||j(n,2,this.length);var h=this[n+1]|this[n]<<8;return 32768&h?4294901760|h:h},o.prototype.readInt32LE=function(n,i){return n>>>=0,i||j(n,4,this.length),this[n]|this[n+1]<<8|this[n+2]<<16|this[n+3]<<24},o.prototype.readInt32BE=function(n,i){return n>>>=0,i||j(n,4,this.length),this[n]<<24|this[n+1]<<16|this[n+2]<<8|this[n+3]},o.prototype.readFloatLE=function(n,i){return n>>>=0,i||j(n,4,this.length),k.read(this,n,!0,23,4)},o.prototype.readFloatBE=function(n,i){return n>>>=0,i||j(n,4,this.length),k.read(this,n,!1,23,4)},o.prototype.readDoubleLE=function(n,i){return n>>>=0,i||j(n,8,this.length),k.read(this,n,!0,52,8)},o.prototype.readDoubleBE=function(n,i){return n>>>=0,i||j(n,8,this.length),k.read(this,n,!1,52,8)},o.prototype.writeUIntLE=function(n,i,h,Q){if(n=+n,i>>>=0,h>>>=0,!Q){var D=e(2,8*h)-1;X(this,n,i,h,D,0)}var T=1,L=0;for(this[i]=255&n;++L<h&&(T*=256);)this[i+L]=255&n/T;return i+h},o.prototype.writeUIntBE=function(n,i,h,Q){if(n=+n,i>>>=0,h>>>=0,!Q){var D=e(2,8*h)-1;X(this,n,i,h,D,0)}var T=h-1,L=1;for(this[i+T]=255&n;0<=--T&&(L*=256);)this[i+T]=255&n/L;return i+h},o.prototype.writeUInt8=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,1,255,0),this[i]=255&n,i+1},o.prototype.writeUInt16LE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,2,65535,0),this[i]=255&n,this[i+1]=n>>>8,i+2},o.prototype.writeUInt16BE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,2,65535,0),this[i]=n>>>8,this[i+1]=255&n,i+2},o.prototype.writeUInt32LE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,4,4294967295,0),this[i+3]=n>>>24,this[i+2]=n>>>16,this[i+1]=n>>>8,this[i]=255&n,i+4},o.prototype.writeUInt32BE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,4,4294967295,0),this[i]=n>>>24,this[i+1]=n>>>16,this[i+2]=n>>>8,this[i+3]=255&n,i+4},o.prototype.writeIntLE=function(n,i,h,Q){if(n=+n,i>>>=0,!Q){var D=e(2,8*h-1);X(this,n,i,h,D-1,-D)}var T=0,L=1,W=0;for(this[i]=255&n;++T<h&&(L*=256);)0>n&&W===0&&this[i+T-1]!==0&&(W=1),this[i+T]=255&(n/L>>0)-W;return i+h},o.prototype.writeIntBE=function(n,i,h,Q){if(n=+n,i>>>=0,!Q){var D=e(2,8*h-1);X(this,n,i,h,D-1,-D)}var T=h-1,L=1,W=0;for(this[i+T]=255&n;0<=--T&&(L*=256);)0>n&&W===0&&this[i+T+1]!==0&&(W=1),this[i+T]=255&(n/L>>0)-W;return i+h},o.prototype.writeInt8=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,1,127,-128),0>n&&(n=255+n+1),this[i]=255&n,i+1},o.prototype.writeInt16LE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,2,32767,-32768),this[i]=255&n,this[i+1]=n>>>8,i+2},o.prototype.writeInt16BE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,2,32767,-32768),this[i]=n>>>8,this[i+1]=255&n,i+2},o.prototype.writeInt32LE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,4,2147483647,-2147483648),this[i]=255&n,this[i+1]=n>>>8,this[i+2]=n>>>16,this[i+3]=n>>>24,i+4},o.prototype.writeInt32BE=function(n,i,h){return n=+n,i>>>=0,h||X(this,n,i,4,2147483647,-2147483648),0>n&&(n=4294967295+n+1),this[i]=n>>>24,this[i+1]=n>>>16,this[i+2]=n>>>8,this[i+3]=255&n,i+4},o.prototype.writeFloatLE=function(n,i,h){return At(this,n,i,!0,h)},o.prototype.writeFloatBE=function(n,i,h){return At(this,n,i,!1,h)},o.prototype.writeDoubleLE=function(n,i,h){return wt(this,n,i,!0,h)},o.prototype.writeDoubleBE=function(n,i,h){return wt(this,n,i,!1,h)},o.prototype.copy=function(n,i,h,Q){if(!o.isBuffer(n))throw new TypeError("argument should be a Buffer");if(h||(h=0),Q||Q===0||(Q=this.length),i>=n.length&&(i=n.length),i||(i=0),0<Q&&Q<h&&(Q=h),Q===h||n.length===0||this.length===0)return 0;if(0>i)throw new RangeError("targetStart out of bounds");if(0>h||h>=this.length)throw new RangeError("Index out of range");if(0>Q)throw new RangeError("sourceEnd out of bounds");Q>this.length&&(Q=this.length),n.length-i<Q-h&&(Q=n.length-i+h);var D=Q-h;if(this===n&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(i,h,Q);else if(this===n&&h<i&&i<Q)for(var T=D-1;0<=T;--T)n[T+i]=this[T+h];else Uint8Array.prototype.set.call(n,this.subarray(h,Q),i);return D},o.prototype.fill=function(n,i,h,Q){if(typeof n=="string"){if(typeof i=="string"?(Q=i,i=0,h=this.length):typeof h=="string"&&(Q=h,h=this.length),Q!==void 0&&typeof Q!="string")throw new TypeError("encoding must be a string");if(typeof Q=="string"&&!o.isEncoding(Q))throw new TypeError("Unknown encoding: "+Q);if(n.length===1){var D=n.charCodeAt(0);(Q==="utf8"&&128>D||Q==="latin1")&&(n=D)}}else typeof n=="number"&&(n&=255);if(0>i||this.length<i||this.length<h)throw new RangeError("Out of range index");if(h<=i)return this;i>>>=0,h=h===void 0?this.length:h>>>0,n||(n=0);var T;if(typeof n=="number")for(T=i;T<h;++T)this[T]=n;else{var L=o.isBuffer(n)?n:o.from(n,Q),W=L.length;if(W===0)throw new TypeError('The value "'+n+'" is invalid for argument "value"');for(T=0;T<h-i;++T)this[T+i]=L[T%W]}return this};var G=/[^+/0-9A-Za-z-_]/g}).call(this)}).call(this,r("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:9}],4:[function(r,s,A){(function(a){(function(){function g(){let o;try{o=A.storage.getItem("debug")}catch{}return!o&&typeof a<"u"&&"env"in a&&(o=a.env.DEBUG),o}A.formatArgs=function(o){if(o[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+o[0]+(this.useColors?"%c ":" ")+"+"+s.exports.humanize(this.diff),!this.useColors)return;let f="color: "+this.color;o.splice(1,0,f,"color: inherit");let I=0,u=0;o[0].replace(/%[a-zA-Z%]/g,p=>{p==="%%"||(I++,p==="%c"&&(u=I))}),o.splice(u,0,f)},A.save=function(o){try{o?A.storage.setItem("debug",o):A.storage.removeItem("debug")}catch{}},A.load=g,A.useColors=function(){return!!(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))||!(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&(typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},A.storage=(function(){try{return localStorage}catch{}})(),A.destroy=(()=>{let o=!1;return()=>{o||(o=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),A.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],A.log=console.debug||console.log||(()=>{}),s.exports=r("./common")(A);let{formatters:E}=s.exports;E.j=function(o){try{return JSON.stringify(o)}catch(f){return"[UnexpectedJSONParseError]: "+f.message}}}).call(this)}).call(this,r("_process"))},{"./common":5,_process:12}],5:[function(r,s){s.exports=function(A){function a(o){function f(...p){if(!f.enabled)return;let y=f,m=+new Date,v=m-(I||m);y.diff=v,y.prev=I,y.curr=m,I=m,p[0]=a.coerce(p[0]),typeof p[0]!="string"&&p.unshift("%O");let l=0;p[0]=p[0].replace(/%([a-zA-Z%])/g,(B,S)=>{if(B==="%%")return"%";l++;let b=a.formatters[S];if(typeof b=="function"){let _=p[l];B=b.call(y,_),p.splice(l,1),l--}return B}),a.formatArgs.call(y,p),(y.log||a.log).apply(y,p)}let I,u=null;return f.namespace=o,f.useColors=a.useColors(),f.color=a.selectColor(o),f.extend=g,f.destroy=a.destroy,Object.defineProperty(f,"enabled",{enumerable:!0,configurable:!1,get:()=>u===null?a.enabled(o):u,set:p=>{u=p}}),typeof a.init=="function"&&a.init(f),f}function g(o,f){let I=a(this.namespace+(typeof f>"u"?":":f)+o);return I.log=this.log,I}function E(o){return o.toString().substring(2,o.toString().length-2).replace(/\.\*\?$/,"*")}return a.debug=a,a.default=a,a.coerce=function(o){return o instanceof Error?o.stack||o.message:o},a.disable=function(){let o=[...a.names.map(E),...a.skips.map(E).map(f=>"-"+f)].join(",");return a.enable(""),o},a.enable=function(o){a.save(o),a.names=[],a.skips=[];let f,I=(typeof o=="string"?o:"").split(/[\s,]+/),u=I.length;for(f=0;f<u;f++)I[f]&&(o=I[f].replace(/\*/g,".*?"),o[0]==="-"?a.skips.push(new RegExp("^"+o.substr(1)+"$")):a.names.push(new RegExp("^"+o+"$")))},a.enabled=function(o){if(o[o.length-1]==="*")return!0;let f,I;for(f=0,I=a.skips.length;f<I;f++)if(a.skips[f].test(o))return!1;for(f=0,I=a.names.length;f<I;f++)if(a.names[f].test(o))return!0;return!1},a.humanize=r("ms"),a.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(A).forEach(o=>{a[o]=A[o]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(o){let f=0;for(let I=0;I<o.length;I++)f=(f<<5)-f+o.charCodeAt(I),f|=0;return a.colors[t(f)%a.colors.length]},a.enable(a.load()),a}},{ms:11}],6:[function(r,s){"use strict";function A(a,g){for(let E in g)Object.defineProperty(a,E,{value:g[E],enumerable:!0,configurable:!0});return a}s.exports=function(a,g,E){if(!a||typeof a=="string")throw new TypeError("Please pass an Error to err-code");E||(E={}),typeof g=="object"&&(E=g,g=""),g&&(E.code=g);try{return A(a,E)}catch{E.message=a.message,E.stack=a.stack;let f=function(){};return f.prototype=Object.create(Object.getPrototypeOf(a)),A(new f,E)}}},{}],7:[function(r,s){"use strict";function A(w){console&&console.warn&&console.warn(w)}function a(){a.init.call(this)}function g(w){if(typeof w!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof w)}function E(w){return w._maxListeners===void 0?a.defaultMaxListeners:w._maxListeners}function o(w,R,M,U){var H,K,q;if(g(M),K=w._events,K===void 0?(K=w._events=Object.create(null),w._eventsCount=0):(K.newListener!==void 0&&(w.emit("newListener",R,M.listener?M.listener:M),K=w._events),q=K[R]),q===void 0)q=K[R]=M,++w._eventsCount;else if(typeof q=="function"?q=K[R]=U?[M,q]:[q,M]:U?q.unshift(M):q.push(M),H=E(w),0<H&&q.length>H&&!q.warned){q.warned=!0;var $=new Error("Possible EventEmitter memory leak detected. "+q.length+" "+(R+" listeners added. Use emitter.setMaxListeners() to increase limit"));$.name="MaxListenersExceededWarning",$.emitter=w,$.type=R,$.count=q.length,A($)}return w}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function I(w,R,M){var U={fired:!1,wrapFn:void 0,target:w,type:R,listener:M},H=f.bind(U);return H.listener=M,U.wrapFn=H,H}function u(w,R,M){var U=w._events;if(U===void 0)return[];var H=U[R];return H===void 0?[]:typeof H=="function"?M?[H.listener||H]:[H]:M?v(H):y(H,H.length)}function p(w){var R=this._events;if(R!==void 0){var M=R[w];if(typeof M=="function")return 1;if(M!==void 0)return M.length}return 0}function y(w,R){for(var M=Array(R),U=0;U<R;++U)M[U]=w[U];return M}function m(w,R){for(;R+1<w.length;R++)w[R]=w[R+1];w.pop()}function v(w){for(var R=Array(w.length),M=0;M<R.length;++M)R[M]=w[M].listener||w[M];return R}function l(w,R,M){typeof w.on=="function"&&C(w,"error",R,M)}function C(w,R,M,U){if(typeof w.on=="function")U.once?w.once(R,M):w.on(R,M);else if(typeof w.addEventListener=="function")w.addEventListener(R,function H(K){U.once&&w.removeEventListener(R,H),M(K)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof w)}var B,S=typeof Reflect=="object"?Reflect:null,b=S&&typeof S.apply=="function"?S.apply:function(w,R,M){return Function.prototype.apply.call(w,R,M)};B=S&&typeof S.ownKeys=="function"?S.ownKeys:Object.getOwnPropertySymbols?function(w){return Object.getOwnPropertyNames(w).concat(Object.getOwnPropertySymbols(w))}:function(w){return Object.getOwnPropertyNames(w)};var _=Number.isNaN||function(w){return w!==w};s.exports=a,s.exports.once=function(w,R){return new Promise(function(M,U){function H(q){w.removeListener(R,K),U(q)}function K(){typeof w.removeListener=="function"&&w.removeListener("error",H),M([].slice.call(arguments))}C(w,R,K,{once:!0}),R!=="error"&&l(w,H,{once:!0})})},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var F=10;Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return F},set:function(w){if(typeof w!="number"||0>w||_(w))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+w+".");F=w}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(w){if(typeof w!="number"||0>w||_(w))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+w+".");return this._maxListeners=w,this},a.prototype.getMaxListeners=function(){return E(this)},a.prototype.emit=function(w){for(var R=[],M=1;M<arguments.length;M++)R.push(arguments[M]);var U=w==="error",H=this._events;if(H!==void 0)U=U&&H.error===void 0;else if(!U)return!1;if(U){var K;if(0<R.length&&(K=R[0]),K instanceof Error)throw K;var q=new Error("Unhandled error."+(K?" ("+K.message+")":""));throw q.context=K,q}var $=H[w];if($===void 0)return!1;if(typeof $=="function")b($,this,R);else for(var st=$.length,J=y($,st),M=0;M<st;++M)b(J[M],this,R);return!0},a.prototype.addListener=function(w,R){return o(this,w,R,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(w,R){return o(this,w,R,!0)},a.prototype.once=function(w,R){return g(R),this.on(w,I(this,w,R)),this},a.prototype.prependOnceListener=function(w,R){return g(R),this.prependListener(w,I(this,w,R)),this},a.prototype.removeListener=function(w,R){var M,U,H,K,q;if(g(R),U=this._events,U===void 0)return this;if(M=U[w],M===void 0)return this;if(M===R||M.listener===R)--this._eventsCount==0?this._events=Object.create(null):(delete U[w],U.removeListener&&this.emit("removeListener",w,M.listener||R));else if(typeof M!="function"){for(H=-1,K=M.length-1;0<=K;K--)if(M[K]===R||M[K].listener===R){q=M[K].listener,H=K;break}if(0>H)return this;H===0?M.shift():m(M,H),M.length===1&&(U[w]=M[0]),U.removeListener!==void 0&&this.emit("removeListener",w,q||R)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(w){var R,M,U;if(M=this._events,M===void 0)return this;if(M.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):M[w]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete M[w]),this;if(arguments.length===0){var H,K=Object.keys(M);for(U=0;U<K.length;++U)H=K[U],H!=="removeListener"&&this.removeAllListeners(H);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(R=M[w],typeof R=="function")this.removeListener(w,R);else if(R!==void 0)for(U=R.length-1;0<=U;U--)this.removeListener(w,R[U]);return this},a.prototype.listeners=function(w){return u(this,w,!0)},a.prototype.rawListeners=function(w){return u(this,w,!1)},a.listenerCount=function(w,R){return typeof w.listenerCount=="function"?w.listenerCount(R):p.call(w,R)},a.prototype.listenerCount=p,a.prototype.eventNames=function(){return 0<this._eventsCount?B(this._events):[]}},{}],8:[function(r,s){s.exports=function(){if(typeof globalThis>"u")return null;var A={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return A.RTCPeerConnection?A:null}},{}],9:[function(r,s,A){A.read=function(a,g,E,o,f){var I,u,p=8*f-o-1,y=(1<<p)-1,m=y>>1,v=-7,l=E?f-1:0,C=E?-1:1,B=a[g+l];for(l+=C,I=B&(1<<-v)-1,B>>=-v,v+=p;0<v;I=256*I+a[g+l],l+=C,v-=8);for(u=I&(1<<-v)-1,I>>=-v,v+=o;0<v;u=256*u+a[g+l],l+=C,v-=8);if(I===0)I=1-m;else{if(I===y)return u?NaN:(B?-1:1)*(1/0);u+=e(2,o),I-=m}return(B?-1:1)*u*e(2,I-o)},A.write=function(a,g,E,o,f,I){var u,p,y,m=Math.LN2,v=Math.log,l=8*I-f-1,C=(1<<l)-1,B=C>>1,S=f===23?e(2,-24)-e(2,-77):0,b=o?0:I-1,_=o?1:-1,F=0>g||g===0&&0>1/g?1:0;for(g=t(g),isNaN(g)||g===1/0?(p=isNaN(g)?1:0,u=C):(u=c(v(g)/m),1>g*(y=e(2,-u))&&(u--,y*=2),g+=1<=u+B?S/y:S*e(2,1-B),2<=g*y&&(u++,y/=2),u+B>=C?(p=0,u=C):1<=u+B?(p=(g*y-1)*e(2,f),u+=B):(p=g*e(2,B-1)*e(2,f),u=0));8<=f;a[E+b]=255&p,b+=_,p/=256,f-=8);for(u=u<<f|p,l+=f;0<l;a[E+b]=255&u,b+=_,u/=256,l-=8);a[E+b-_]|=128*F}},{}],10:[function(r,s){s.exports=typeof Object.create=="function"?function(A,a){a&&(A.super_=a,A.prototype=Object.create(a.prototype,{constructor:{value:A,enumerable:!1,writable:!0,configurable:!0}}))}:function(A,a){if(a){A.super_=a;var g=function(){};g.prototype=a.prototype,A.prototype=new g,A.prototype.constructor=A}}},{}],11:[function(r,s){var A=Math.round;function a(I){if(I+="",!(100<I.length)){var u=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(I);if(u){var p=parseFloat(u[1]),y=(u[2]||"ms").toLowerCase();return y==="years"||y==="year"||y==="yrs"||y==="yr"||y==="y"?315576e5*p:y==="weeks"||y==="week"||y==="w"?6048e5*p:y==="days"||y==="day"||y==="d"?864e5*p:y==="hours"||y==="hour"||y==="hrs"||y==="hr"||y==="h"?36e5*p:y==="minutes"||y==="minute"||y==="mins"||y==="min"||y==="m"?6e4*p:y==="seconds"||y==="second"||y==="secs"||y==="sec"||y==="s"?1e3*p:y==="milliseconds"||y==="millisecond"||y==="msecs"||y==="msec"||y==="ms"?p:void 0}}}function g(I){var u=t(I);return 864e5<=u?A(I/864e5)+"d":36e5<=u?A(I/36e5)+"h":6e4<=u?A(I/6e4)+"m":1e3<=u?A(I/1e3)+"s":I+"ms"}function E(I){var u=t(I);return 864e5<=u?o(I,u,864e5,"day"):36e5<=u?o(I,u,36e5,"hour"):6e4<=u?o(I,u,6e4,"minute"):1e3<=u?o(I,u,1e3,"second"):I+" ms"}function o(I,u,p,y){return A(I/p)+" "+y+(u>=1.5*p?"s":"")}var f=24*(60*6e4);s.exports=function(I,u){u=u||{};var p=typeof I;if(p=="string"&&0<I.length)return a(I);if(p==="number"&&isFinite(I))return u.long?E(I):g(I);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(I))}},{}],12:[function(r,s){function A(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function g(S){if(p===setTimeout)return setTimeout(S,0);if((p===A||!p)&&setTimeout)return p=setTimeout,setTimeout(S,0);try{return p(S,0)}catch{try{return p.call(null,S,0)}catch{return p.call(this,S,0)}}}function E(S){if(y===clearTimeout)return clearTimeout(S);if((y===a||!y)&&clearTimeout)return y=clearTimeout,clearTimeout(S);try{return y(S)}catch{try{return y.call(null,S)}catch{return y.call(this,S)}}}function o(){C&&v&&(C=!1,v.length?l=v.concat(l):B=-1,l.length&&f())}function f(){if(!C){var S=g(o);C=!0;for(var b=l.length;b;){for(v=l,l=[];++B<b;)v&&v[B].run();B=-1,b=l.length}v=null,C=!1,E(S)}}function I(S,b){this.fun=S,this.array=b}function u(){}var p,y,m=s.exports={};(function(){try{p=typeof setTimeout=="function"?setTimeout:A}catch{p=A}try{y=typeof clearTimeout=="function"?clearTimeout:a}catch{y=a}})();var v,l=[],C=!1,B=-1;m.nextTick=function(S){var b=Array(arguments.length-1);if(1<arguments.length)for(var _=1;_<arguments.length;_++)b[_-1]=arguments[_];l.push(new I(S,b)),l.length!==1||C||g(f)},I.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=u,m.addListener=u,m.once=u,m.off=u,m.removeListener=u,m.removeAllListeners=u,m.emit=u,m.prependListener=u,m.prependOnceListener=u,m.listeners=function(){return[]},m.binding=function(){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},{}],13:[function(r,s){(function(A){(function(){let a;s.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window>"u"?A:window):g=>(a||(a=Promise.resolve())).then(g).catch(E=>setTimeout(()=>{throw E},0))}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],14:[function(r,s){(function(A,a){(function(){"use strict";var g=r("safe-buffer").Buffer,E=a.crypto||a.msCrypto;s.exports=E&&E.getRandomValues?function(o,f){if(o>4294967295)throw new RangeError("requested too many random bytes");var I=g.allocUnsafe(o);if(0<o)if(65536<o)for(var u=0;u<o;u+=65536)E.getRandomValues(I.slice(u,u+65536));else E.getRandomValues(I);return typeof f=="function"?A.nextTick(function(){f(null,I)}):I}:function(){throw new Error(`Secure random number generation is not supported by this browser.
|
|
2
2
|
Use Chrome, Firefox or Internet Explorer 11`)}}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{_process:12,"safe-buffer":30}],15:[function(r,s){"use strict";function A(u,p){u.prototype=Object.create(p.prototype),u.prototype.constructor=u,u.__proto__=p}function a(u,p,y){function m(l,C,B){return typeof p=="string"?p:p(l,C,B)}y||(y=Error);var v=(function(l){function C(B,S,b){return l.call(this,m(B,S,b))||this}return A(C,l),C})(y);v.prototype.name=y.name,v.prototype.code=u,I[u]=v}function g(u,p){if(Array.isArray(u)){var y=u.length;return u=u.map(function(m){return m+""}),2<y?"one of ".concat(p," ").concat(u.slice(0,y-1).join(", "),", or ")+u[y-1]:y===2?"one of ".concat(p," ").concat(u[0]," or ").concat(u[1]):"of ".concat(p," ").concat(u[0])}return"of ".concat(p," ").concat(u+"")}function E(u,p,y){return u.substr(!y||0>y?0:+y,p.length)===p}function o(u,p,y){return(y===void 0||y>u.length)&&(y=u.length),u.substring(y-p.length,y)===p}function f(u,p,y){return typeof y!="number"&&(y=0),!(y+p.length>u.length)&&u.indexOf(p,y)!==-1}var I={};a("ERR_INVALID_OPT_VALUE",function(u,p){return'The value "'+p+'" is invalid for option "'+u+'"'},TypeError),a("ERR_INVALID_ARG_TYPE",function(u,p,y){var m;typeof p=="string"&&E(p,"not ")?(m="must not be",p=p.replace(/^not /,"")):m="must be";var v;if(o(u," argument"))v="The ".concat(u," ").concat(m," ").concat(g(p,"type"));else{var l=f(u,".")?"property":"argument";v='The "'.concat(u,'" ').concat(l," ").concat(m," ").concat(g(p,"type"))}return v+=". Received type ".concat(typeof y),v},TypeError),a("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),a("ERR_METHOD_NOT_IMPLEMENTED",function(u){return"The "+u+" method is not implemented"}),a("ERR_STREAM_PREMATURE_CLOSE","Premature close"),a("ERR_STREAM_DESTROYED",function(u){return"Cannot call "+u+" after a stream was destroyed"}),a("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),a("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),a("ERR_STREAM_WRITE_AFTER_END","write after end"),a("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),a("ERR_UNKNOWN_ENCODING",function(u){return"Unknown encoding: "+u},TypeError),a("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),s.exports.codes=I},{}],16:[function(r,s){(function(A){(function(){"use strict";function a(m){return this instanceof a?(f.call(this,m),I.call(this,m),this.allowHalfOpen=!0,void(m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",g))))):new a(m)}function g(){this._writableState.ended||A.nextTick(E,this)}function E(m){m.end()}var o=Object.keys||function(m){var v=[];for(var l in m)v.push(l);return v};s.exports=a;var f=r("./_stream_readable"),I=r("./_stream_writable");r("inherits")(a,f);for(var u,p=o(I.prototype),y=0;y<p.length;y++)u=p[y],a.prototype[u]||(a.prototype[u]=I.prototype[u]);Object.defineProperty(a.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(a.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(a.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(a.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._writableState!==void 0&&this._readableState.destroyed&&this._writableState.destroyed},set:function(m){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=m,this._writableState.destroyed=m)}})}).call(this)}).call(this,r("_process"))},{"./_stream_readable":18,"./_stream_writable":20,_process:12,inherits:10}],17:[function(r,s){"use strict";function A(g){return this instanceof A?void a.call(this,g):new A(g)}s.exports=A;var a=r("./_stream_transform");r("inherits")(A,a),A.prototype._transform=function(g,E,o){o(null,g)}},{"./_stream_transform":19,inherits:10}],18:[function(r,s){(function(A,a){(function(){"use strict";function g(n){return j.from(n)}function E(n){return j.isBuffer(n)||n instanceof X}function o(n,i,h){return typeof n.prependListener=="function"?n.prependListener(i,h):void(n._events&&n._events[i]?Array.isArray(n._events[i])?n._events[i].unshift(h):n._events[i]=[h,n._events[i]]:n.on(i,h))}function f(n,i,h){st=st||r("./_stream_duplex"),n=n||{},typeof h!="boolean"&&(h=i instanceof st),this.objectMode=!!n.objectMode,h&&(this.objectMode=this.objectMode||!!n.readableObjectMode),this.highWaterMark=Tt(this,n,"readableHighWaterMark",h),this.buffer=new vt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=n.emitClose!==!1,this.autoDestroy=!!n.autoDestroy,this.destroyed=!1,this.defaultEncoding=n.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,n.encoding&&(!At&&(At=r("string_decoder/").StringDecoder),this.decoder=new At(n.encoding),this.encoding=n.encoding)}function I(n){if(st=st||r("./_stream_duplex"),!(this instanceof I))return new I(n);var i=this instanceof st;this._readableState=new f(n,this,i),this.readable=!0,n&&(typeof n.read=="function"&&(this._read=n.read),typeof n.destroy=="function"&&(this._destroy=n.destroy)),ut.call(this)}function u(n,i,h,Q,D){J("readableAddChunk",i);var T=n._readableState;if(i===null)T.reading=!1,l(n,T);else{var L;if(D||(L=y(T,i)),L)k(n,L);else if(!(T.objectMode||i&&0<i.length))Q||(T.reading=!1,S(n,T));else if(typeof i=="string"||T.objectMode||Object.getPrototypeOf(i)===j.prototype||(i=g(i)),Q)T.endEmitted?k(n,new O):p(n,T,i,!0);else if(T.ended)k(n,new N);else{if(T.destroyed)return!1;T.reading=!1,T.decoder&&!h?(i=T.decoder.write(i),T.objectMode||i.length!==0?p(n,T,i,!1):S(n,T)):p(n,T,i,!1)}}return!T.ended&&(T.length<T.highWaterMark||T.length===0)}function p(n,i,h,Q){i.flowing&&i.length===0&&!i.sync?(i.awaitDrain=0,n.emit("data",h)):(i.length+=i.objectMode?1:h.length,Q?i.buffer.unshift(h):i.buffer.push(h),i.needReadable&&C(n)),S(n,i)}function y(n,i){var h;return E(i)||typeof i=="string"||i===void 0||n.objectMode||(h=new mt("chunk",["string","Buffer","Uint8Array"],i)),h}function m(n){return 1073741824<=n?n=1073741824:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n}function v(n,i){return 0>=n||i.length===0&&i.ended?0:i.objectMode?1:n===n?(n>i.highWaterMark&&(i.highWaterMark=m(n)),n<=i.length?n:i.ended?i.length:(i.needReadable=!0,0)):i.flowing&&i.length?i.buffer.head.data.length:i.length}function l(n,i){if(J("onEofChunk"),!i.ended){if(i.decoder){var h=i.decoder.end();h&&h.length&&(i.buffer.push(h),i.length+=i.objectMode?1:h.length)}i.ended=!0,i.sync?C(n):(i.needReadable=!1,!i.emittedReadable&&(i.emittedReadable=!0,B(n)))}}function C(n){var i=n._readableState;J("emitReadable",i.needReadable,i.emittedReadable),i.needReadable=!1,i.emittedReadable||(J("emitReadable",i.flowing),i.emittedReadable=!0,A.nextTick(B,n))}function B(n){var i=n._readableState;J("emitReadable_",i.destroyed,i.length,i.ended),!i.destroyed&&(i.length||i.ended)&&(n.emit("readable"),i.emittedReadable=!1),i.needReadable=!i.flowing&&!i.ended&&i.length<=i.highWaterMark,U(n)}function S(n,i){i.readingMore||(i.readingMore=!0,A.nextTick(b,n,i))}function b(n,i){for(;!i.reading&&!i.ended&&(i.length<i.highWaterMark||i.flowing&&i.length===0);){var h=i.length;if(J("maybeReadMore read 0"),n.read(0),h===i.length)break}i.readingMore=!1}function _(n){return function(){var i=n._readableState;J("pipeOnDrain",i.awaitDrain),i.awaitDrain&&i.awaitDrain--,i.awaitDrain===0&&at(n,"data")&&(i.flowing=!0,U(n))}}function F(n){var i=n._readableState;i.readableListening=0<n.listenerCount("readable"),i.resumeScheduled&&!i.paused?i.flowing=!0:0<n.listenerCount("data")&&n.resume()}function w(n){J("readable nexttick read 0"),n.read(0)}function R(n,i){i.resumeScheduled||(i.resumeScheduled=!0,A.nextTick(M,n,i))}function M(n,i){J("resume",i.reading),i.reading||n.read(0),i.resumeScheduled=!1,n.emit("resume"),U(n),i.flowing&&!i.reading&&n.read(0)}function U(n){var i=n._readableState;for(J("flow",i.flowing);i.flowing&&n.read()!==null;);}function H(n,i){if(i.length===0)return null;var h;return i.objectMode?h=i.buffer.shift():!n||n>=i.length?(h=i.decoder?i.buffer.join(""):i.buffer.length===1?i.buffer.first():i.buffer.concat(i.length),i.buffer.clear()):h=i.buffer.consume(n,i.decoder),h}function K(n){var i=n._readableState;J("endReadable",i.endEmitted),i.endEmitted||(i.ended=!0,A.nextTick(q,i,n))}function q(n,i){if(J("endReadableNT",n.endEmitted,n.length),!n.endEmitted&&n.length===0&&(n.endEmitted=!0,i.readable=!1,i.emit("end"),n.autoDestroy)){var h=i._writableState;(!h||h.autoDestroy&&h.finished)&&i.destroy()}}function $(n,i){for(var h=0,Q=n.length;h<Q;h++)if(n[h]===i)return h;return-1}s.exports=I;var st;I.ReadableState=f;var J,Rt=r("events").EventEmitter,at=function(n,i){return n.listeners(i).length},ut=r("./internal/streams/stream"),j=r("buffer").Buffer,X=a.Uint8Array||function(){},Et=r("util");J=Et&&Et.debuglog?Et.debuglog("stream"):function(){};var At,wt,nt,vt=r("./internal/streams/buffer_list"),St=r("./internal/streams/destroy"),jt=r("./internal/streams/state"),Tt=jt.getHighWaterMark,Ct=r("../errors").codes,mt=Ct.ERR_INVALID_ARG_TYPE,N=Ct.ERR_STREAM_PUSH_AFTER_EOF,x=Ct.ERR_METHOD_NOT_IMPLEMENTED,O=Ct.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r("inherits")(I,ut);var k=St.errorOrDestroy,G=["error","close","destroy","pause","resume"];Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._readableState.destroyed},set:function(n){this._readableState&&(this._readableState.destroyed=n)}}),I.prototype.destroy=St.destroy,I.prototype._undestroy=St.undestroy,I.prototype._destroy=function(n,i){i(n)},I.prototype.push=function(n,i){var h,Q=this._readableState;return Q.objectMode?h=!0:typeof n=="string"&&(i=i||Q.defaultEncoding,i!==Q.encoding&&(n=j.from(n,i),i=""),h=!0),u(this,n,i,!1,h)},I.prototype.unshift=function(n){return u(this,n,null,!0,!1)},I.prototype.isPaused=function(){return this._readableState.flowing===!1},I.prototype.setEncoding=function(n){At||(At=r("string_decoder/").StringDecoder);var i=new At(n);this._readableState.decoder=i,this._readableState.encoding=this._readableState.decoder.encoding;for(var h=this._readableState.buffer.head,Q="";h!==null;)Q+=i.write(h.data),h=h.next;return this._readableState.buffer.clear(),Q!==""&&this._readableState.buffer.push(Q),this._readableState.length=Q.length,this},I.prototype.read=function(n){J("read",n),n=parseInt(n,10);var i=this._readableState,h=n;if(n!==0&&(i.emittedReadable=!1),n===0&&i.needReadable&&((i.highWaterMark===0?0<i.length:i.length>=i.highWaterMark)||i.ended))return J("read: emitReadable",i.length,i.ended),i.length===0&&i.ended?K(this):C(this),null;if(n=v(n,i),n===0&&i.ended)return i.length===0&&K(this),null;var Q=i.needReadable;J("need readable",Q),(i.length===0||i.length-n<i.highWaterMark)&&(Q=!0,J("length less than watermark",Q)),i.ended||i.reading?(Q=!1,J("reading or ended",Q)):Q&&(J("do read"),i.reading=!0,i.sync=!0,i.length===0&&(i.needReadable=!0),this._read(i.highWaterMark),i.sync=!1,!i.reading&&(n=v(h,i)));var D;return D=0<n?H(n,i):null,D===null?(i.needReadable=i.length<=i.highWaterMark,n=0):(i.length-=n,i.awaitDrain=0),i.length===0&&(!i.ended&&(i.needReadable=!0),h!==n&&i.ended&&K(this)),D!==null&&this.emit("data",D),D},I.prototype._read=function(){k(this,new x("_read()"))},I.prototype.pipe=function(n,i){function h(ie,se){J("onunpipe"),ie===z&&se&&se.hasUnpiped===!1&&(se.hasUnpiped=!0,D())}function Q(){J("onend"),n.end()}function D(){J("cleanup"),n.removeListener("close",W),n.removeListener("finish",rt),n.removeListener("drain",re),n.removeListener("error",L),n.removeListener("unpipe",h),z.removeListener("end",Q),z.removeListener("end",Z),z.removeListener("data",T),Hn=!0,tt.awaitDrain&&(!n._writableState||n._writableState.needDrain)&&re()}function T(ie){J("ondata");var se=n.write(ie);J("dest.write",se),se===!1&&((tt.pipesCount===1&&tt.pipes===n||1<tt.pipesCount&&$(tt.pipes,n)!==-1)&&!Hn&&(J("false write response, pause",tt.awaitDrain),tt.awaitDrain++),z.pause())}function L(ie){J("onerror",ie),Z(),n.removeListener("error",L),at(n,"error")===0&&k(n,ie)}function W(){n.removeListener("finish",rt),Z()}function rt(){J("onfinish"),n.removeListener("close",W),Z()}function Z(){J("unpipe"),z.unpipe(n)}var z=this,tt=this._readableState;switch(tt.pipesCount){case 0:tt.pipes=n;break;case 1:tt.pipes=[tt.pipes,n];break;default:tt.pipes.push(n)}tt.pipesCount+=1,J("pipe count=%d opts=%j",tt.pipesCount,i);var ne=(!i||i.end!==!1)&&n!==A.stdout&&n!==A.stderr,ue=ne?Q:Z;tt.endEmitted?A.nextTick(ue):z.once("end",ue),n.on("unpipe",h);var re=_(z);n.on("drain",re);var Hn=!1;return z.on("data",T),o(n,"error",L),n.once("close",W),n.once("finish",rt),n.emit("pipe",z),tt.flowing||(J("pipe resume"),z.resume()),n},I.prototype.unpipe=function(n){var i=this._readableState,h={hasUnpiped:!1};if(i.pipesCount===0)return this;if(i.pipesCount===1)return n&&n!==i.pipes?this:(n||(n=i.pipes),i.pipes=null,i.pipesCount=0,i.flowing=!1,n&&n.emit("unpipe",this,h),this);if(!n){var Q=i.pipes,D=i.pipesCount;i.pipes=null,i.pipesCount=0,i.flowing=!1;for(var T=0;T<D;T++)Q[T].emit("unpipe",this,{hasUnpiped:!1});return this}var L=$(i.pipes,n);return L===-1?this:(i.pipes.splice(L,1),i.pipesCount-=1,i.pipesCount===1&&(i.pipes=i.pipes[0]),n.emit("unpipe",this,h),this)},I.prototype.on=function(n,i){var h=ut.prototype.on.call(this,n,i),Q=this._readableState;return n==="data"?(Q.readableListening=0<this.listenerCount("readable"),Q.flowing!==!1&&this.resume()):n=="readable"&&!Q.endEmitted&&!Q.readableListening&&(Q.readableListening=Q.needReadable=!0,Q.flowing=!1,Q.emittedReadable=!1,J("on readable",Q.length,Q.reading),Q.length?C(this):!Q.reading&&A.nextTick(w,this)),h},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(n,i){var h=ut.prototype.removeListener.call(this,n,i);return n==="readable"&&A.nextTick(F,this),h},I.prototype.removeAllListeners=function(n){var i=ut.prototype.removeAllListeners.apply(this,arguments);return(n==="readable"||n===void 0)&&A.nextTick(F,this),i},I.prototype.resume=function(){var n=this._readableState;return n.flowing||(J("resume"),n.flowing=!n.readableListening,R(this,n)),n.paused=!1,this},I.prototype.pause=function(){return J("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(J("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(n){var i=this,h=this._readableState,Q=!1;for(var D in n.on("end",function(){if(J("wrapped end"),h.decoder&&!h.ended){var L=h.decoder.end();L&&L.length&&i.push(L)}i.push(null)}),n.on("data",function(L){if(J("wrapped data"),h.decoder&&(L=h.decoder.write(L)),!(h.objectMode&&L==null)&&(h.objectMode||L&&L.length)){var W=i.push(L);W||(Q=!0,n.pause())}}),n)this[D]===void 0&&typeof n[D]=="function"&&(this[D]=(function(L){return function(){return n[L].apply(n,arguments)}})(D));for(var T=0;T<G.length;T++)n.on(G[T],this.emit.bind(this,G[T]));return this._read=function(L){J("wrapped _read",L),Q&&(Q=!1,n.resume())},this},typeof Symbol=="function"&&(I.prototype[Symbol.asyncIterator]=function(){return wt===void 0&&(wt=r("./internal/streams/async_iterator")),wt(this)}),Object.defineProperty(I.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(I.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(I.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(n){this._readableState&&(this._readableState.flowing=n)}}),I._fromList=H,Object.defineProperty(I.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),typeof Symbol=="function"&&(I.from=function(n,i){return nt===void 0&&(nt=r("./internal/streams/from")),nt(I,n,i)})}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/async_iterator":21,"./internal/streams/buffer_list":22,"./internal/streams/destroy":23,"./internal/streams/from":25,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,events:7,inherits:10,"string_decoder/":31,util:2}],19:[function(r,s){"use strict";function A(m,v){var l=this._transformState;l.transforming=!1;var C=l.writecb;if(C===null)return this.emit("error",new I);l.writechunk=null,l.writecb=null,v!=null&&this.push(v),C(m);var B=this._readableState;B.reading=!1,(B.needReadable||B.length<B.highWaterMark)&&this._read(B.highWaterMark)}function a(m){return this instanceof a?(y.call(this,m),this._transformState={afterTransform:A.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,m&&(typeof m.transform=="function"&&(this._transform=m.transform),typeof m.flush=="function"&&(this._flush=m.flush)),void this.on("prefinish",g)):new a(m)}function g(){var m=this;typeof this._flush!="function"||this._readableState.destroyed?E(this,null,null):this._flush(function(v,l){E(m,v,l)})}function E(m,v,l){if(v)return m.emit("error",v);if(l!=null&&m.push(l),m._writableState.length)throw new p;if(m._transformState.transforming)throw new u;return m.push(null)}s.exports=a;var o=r("../errors").codes,f=o.ERR_METHOD_NOT_IMPLEMENTED,I=o.ERR_MULTIPLE_CALLBACK,u=o.ERR_TRANSFORM_ALREADY_TRANSFORMING,p=o.ERR_TRANSFORM_WITH_LENGTH_0,y=r("./_stream_duplex");r("inherits")(a,y),a.prototype.push=function(m,v){return this._transformState.needTransform=!1,y.prototype.push.call(this,m,v)},a.prototype._transform=function(m,v,l){l(new f("_transform()"))},a.prototype._write=function(m,v,l){var C=this._transformState;if(C.writecb=l,C.writechunk=m,C.writeencoding=v,!C.transforming){var B=this._readableState;(C.needTransform||B.needReadable||B.length<B.highWaterMark)&&this._read(B.highWaterMark)}},a.prototype._read=function(){var m=this._transformState;m.writechunk===null||m.transforming?m.needTransform=!0:(m.transforming=!0,this._transform(m.writechunk,m.writeencoding,m.afterTransform))},a.prototype._destroy=function(m,v){y.prototype._destroy.call(this,m,function(l){v(l)})}},{"../errors":15,"./_stream_duplex":16,inherits:10}],20:[function(r,s){(function(A,a){(function(){"use strict";function g(N){var x=this;this.next=null,this.entry=null,this.finish=function(){K(x,N)}}function E(N){return J.from(N)}function o(N){return J.isBuffer(N)||N instanceof Rt}function f(){}function I(N,x,O){q=q||r("./_stream_duplex"),N=N||{},typeof O!="boolean"&&(O=x instanceof q),this.objectMode=!!N.objectMode,O&&(this.objectMode=this.objectMode||!!N.writableObjectMode),this.highWaterMark=j(this,N,"writableHighWaterMark",O),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var k=N.decodeStrings===!1;this.decodeStrings=!k,this.defaultEncoding=N.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(G){S(x,G)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=N.emitClose!==!1,this.autoDestroy=!!N.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new g(this)}function u(N){q=q||r("./_stream_duplex");var x=this instanceof q;return x||mt.call(u,this)?(this._writableState=new I(N,this,x),this.writable=!0,N&&(typeof N.write=="function"&&(this._write=N.write),typeof N.writev=="function"&&(this._writev=N.writev),typeof N.destroy=="function"&&(this._destroy=N.destroy),typeof N.final=="function"&&(this._final=N.final)),void st.call(this)):new u(N)}function p(N,x){var O=new jt;Ct(N,O),A.nextTick(x,O)}function y(N,x,O,k){var G;return O===null?G=new St:typeof O!="string"&&!x.objectMode&&(G=new Et("chunk",["string","Buffer"],O)),!G||(Ct(N,G),A.nextTick(k,G),!1)}function m(N,x,O){return N.objectMode||N.decodeStrings===!1||typeof x!="string"||(x=J.from(x,O)),x}function v(N,x,O,k,G,n){if(!O){var i=m(x,k,G);k!==i&&(O=!0,G="buffer",k=i)}var h=x.objectMode?1:k.length;x.length+=h;var Q=x.length<x.highWaterMark;if(Q||(x.needDrain=!0),x.writing||x.corked){var D=x.lastBufferedRequest;x.lastBufferedRequest={chunk:k,encoding:G,isBuf:O,callback:n,next:null},D?D.next=x.lastBufferedRequest:x.bufferedRequest=x.lastBufferedRequest,x.bufferedRequestCount+=1}else l(N,x,!1,h,k,G,n);return Q}function l(N,x,O,k,G,n,i){x.writelen=k,x.writecb=i,x.writing=!0,x.sync=!0,x.destroyed?x.onwrite(new vt("write")):O?N._writev(G,x.onwrite):N._write(G,n,x.onwrite),x.sync=!1}function C(N,x,O,k,G){--x.pendingcb,O?(A.nextTick(G,k),A.nextTick(U,N,x),N._writableState.errorEmitted=!0,Ct(N,k)):(G(k),N._writableState.errorEmitted=!0,Ct(N,k),U(N,x))}function B(N){N.writing=!1,N.writecb=null,N.length-=N.writelen,N.writelen=0}function S(N,x){var O=N._writableState,k=O.sync,G=O.writecb;if(typeof G!="function")throw new wt;if(B(O),x)C(N,O,k,x,G);else{var n=w(O)||N.destroyed;n||O.corked||O.bufferProcessing||!O.bufferedRequest||F(N,O),k?A.nextTick(b,N,O,n,G):b(N,O,n,G)}}function b(N,x,O,k){O||_(N,x),x.pendingcb--,k(),U(N,x)}function _(N,x){x.length===0&&x.needDrain&&(x.needDrain=!1,N.emit("drain"))}function F(N,x){x.bufferProcessing=!0;var O=x.bufferedRequest;if(N._writev&&O&&O.next){var k=x.bufferedRequestCount,G=Array(k),n=x.corkedRequestsFree;n.entry=O;for(var i=0,h=!0;O;)G[i]=O,O.isBuf||(h=!1),O=O.next,i+=1;G.allBuffers=h,l(N,x,!0,x.length,G,"",n.finish),x.pendingcb++,x.lastBufferedRequest=null,n.next?(x.corkedRequestsFree=n.next,n.next=null):x.corkedRequestsFree=new g(x),x.bufferedRequestCount=0}else{for(;O;){var Q=O.chunk,D=O.encoding,T=O.callback,L=x.objectMode?1:Q.length;if(l(N,x,!1,L,Q,D,T),O=O.next,x.bufferedRequestCount--,x.writing)break}O===null&&(x.lastBufferedRequest=null)}x.bufferedRequest=O,x.bufferProcessing=!1}function w(N){return N.ending&&N.length===0&&N.bufferedRequest===null&&!N.finished&&!N.writing}function R(N,x){N._final(function(O){x.pendingcb--,O&&Ct(N,O),x.prefinished=!0,N.emit("prefinish"),U(N,x)})}function M(N,x){x.prefinished||x.finalCalled||(typeof N._final!="function"||x.destroyed?(x.prefinished=!0,N.emit("prefinish")):(x.pendingcb++,x.finalCalled=!0,A.nextTick(R,N,x)))}function U(N,x){var O=w(x);if(O&&(M(N,x),x.pendingcb===0&&(x.finished=!0,N.emit("finish"),x.autoDestroy))){var k=N._readableState;(!k||k.autoDestroy&&k.endEmitted)&&N.destroy()}return O}function H(N,x,O){x.ending=!0,U(N,x),O&&(x.finished?A.nextTick(O):N.once("finish",O)),x.ended=!0,N.writable=!1}function K(N,x,O){var k=N.entry;for(N.entry=null;k;){var G=k.callback;x.pendingcb--,G(O),k=k.next}x.corkedRequestsFree.next=N}s.exports=u;var q;u.WritableState=I;var $={deprecate:r("util-deprecate")},st=r("./internal/streams/stream"),J=r("buffer").Buffer,Rt=a.Uint8Array||function(){},at=r("./internal/streams/destroy"),ut=r("./internal/streams/state"),j=ut.getHighWaterMark,X=r("../errors").codes,Et=X.ERR_INVALID_ARG_TYPE,At=X.ERR_METHOD_NOT_IMPLEMENTED,wt=X.ERR_MULTIPLE_CALLBACK,nt=X.ERR_STREAM_CANNOT_PIPE,vt=X.ERR_STREAM_DESTROYED,St=X.ERR_STREAM_NULL_VALUES,jt=X.ERR_STREAM_WRITE_AFTER_END,Tt=X.ERR_UNKNOWN_ENCODING,Ct=at.errorOrDestroy;r("inherits")(u,st),I.prototype.getBuffer=function(){for(var N=this.bufferedRequest,x=[];N;)x.push(N),N=N.next;return x},(function(){try{Object.defineProperty(I.prototype,"buffer",{get:$.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var mt;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(mt=Function.prototype[Symbol.hasInstance],Object.defineProperty(u,Symbol.hasInstance,{value:function(N){return!!mt.call(this,N)||this===u&&N&&N._writableState instanceof I}})):mt=function(N){return N instanceof this},u.prototype.pipe=function(){Ct(this,new nt)},u.prototype.write=function(N,x,O){var k=this._writableState,G=!1,n=!k.objectMode&&o(N);return n&&!J.isBuffer(N)&&(N=E(N)),typeof x=="function"&&(O=x,x=null),n?x="buffer":!x&&(x=k.defaultEncoding),typeof O!="function"&&(O=f),k.ending?p(this,O):(n||y(this,k,N,O))&&(k.pendingcb++,G=v(this,k,n,N,x,O)),G},u.prototype.cork=function(){this._writableState.corked++},u.prototype.uncork=function(){var N=this._writableState;N.corked&&(N.corked--,!N.writing&&!N.corked&&!N.bufferProcessing&&N.bufferedRequest&&F(this,N))},u.prototype.setDefaultEncoding=function(N){if(typeof N=="string"&&(N=N.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((N+"").toLowerCase())))throw new Tt(N);return this._writableState.defaultEncoding=N,this},Object.defineProperty(u.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(u.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),u.prototype._write=function(N,x,O){O(new At("_write()"))},u.prototype._writev=null,u.prototype.end=function(N,x,O){var k=this._writableState;return typeof N=="function"?(O=N,N=null,x=null):typeof x=="function"&&(O=x,x=null),N!=null&&this.write(N,x),k.corked&&(k.corked=1,this.uncork()),k.ending||H(this,k,O),this},Object.defineProperty(u.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(u.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState!==void 0&&this._writableState.destroyed},set:function(N){this._writableState&&(this._writableState.destroyed=N)}}),u.prototype.destroy=at.destroy,u.prototype._undestroy=at.undestroy,u.prototype._destroy=function(N,x){x(N)}}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/destroy":23,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,inherits:10,"util-deprecate":32}],21:[function(r,s){(function(A){(function(){"use strict";function a(_,F,w){return F in _?Object.defineProperty(_,F,{value:w,enumerable:!0,configurable:!0,writable:!0}):_[F]=w,_}function g(_,F){return{value:_,done:F}}function E(_){var F=_[p];if(F!==null){var w=_[B].read();w!==null&&(_[l]=null,_[p]=null,_[y]=null,F(g(w,!1)))}}function o(_){A.nextTick(E,_)}function f(_,F){return function(w,R){_.then(function(){return F[v]?void w(g(void 0,!0)):void F[C](w,R)},R)}}var I,u=r("./end-of-stream"),p=Symbol("lastResolve"),y=Symbol("lastReject"),m=Symbol("error"),v=Symbol("ended"),l=Symbol("lastPromise"),C=Symbol("handlePromise"),B=Symbol("stream"),S=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((I={get stream(){return this[B]},next:function(){var _=this,F=this[m];if(F!==null)return Promise.reject(F);if(this[v])return Promise.resolve(g(void 0,!0));if(this[B].destroyed)return new Promise(function(U,H){A.nextTick(function(){_[m]?H(_[m]):U(g(void 0,!0))})});var w,R=this[l];if(R)w=new Promise(f(R,this));else{var M=this[B].read();if(M!==null)return Promise.resolve(g(M,!1));w=new Promise(this[C])}return this[l]=w,w}},a(I,Symbol.asyncIterator,function(){return this}),a(I,"return",function(){var _=this;return new Promise(function(F,w){_[B].destroy(null,function(R){return R?void w(R):void F(g(void 0,!0))})})}),I),S);s.exports=function(_){var F,w=Object.create(b,(F={},a(F,B,{value:_,writable:!0}),a(F,p,{value:null,writable:!0}),a(F,y,{value:null,writable:!0}),a(F,m,{value:null,writable:!0}),a(F,v,{value:_._readableState.endEmitted,writable:!0}),a(F,C,{value:function(R,M){var U=w[B].read();U?(w[l]=null,w[p]=null,w[y]=null,R(g(U,!1))):(w[p]=R,w[y]=M)},writable:!0}),F));return w[l]=null,u(_,function(R){if(R&&R.code!=="ERR_STREAM_PREMATURE_CLOSE"){var M=w[y];return M!==null&&(w[l]=null,w[p]=null,w[y]=null,M(R)),void(w[m]=R)}var U=w[p];U!==null&&(w[l]=null,w[p]=null,w[y]=null,U(g(void 0,!0))),w[v]=!0}),_.on("readable",o.bind(null,w)),w}}).call(this)}).call(this,r("_process"))},{"./end-of-stream":24,_process:12}],22:[function(r,s){"use strict";function A(l,C){var B=Object.keys(l);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(l);C&&(S=S.filter(function(b){return Object.getOwnPropertyDescriptor(l,b).enumerable})),B.push.apply(B,S)}return B}function a(l){for(var C,B=1;B<arguments.length;B++)C=arguments[B]==null?{}:arguments[B],B%2?A(Object(C),!0).forEach(function(S){g(l,S,C[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(C)):A(Object(C)).forEach(function(S){Object.defineProperty(l,S,Object.getOwnPropertyDescriptor(C,S))});return l}function g(l,C,B){return C in l?Object.defineProperty(l,C,{value:B,enumerable:!0,configurable:!0,writable:!0}):l[C]=B,l}function E(l,C){if(!(l instanceof C))throw new TypeError("Cannot call a class as a function")}function o(l,C){for(var B,S=0;S<C.length;S++)B=C[S],B.enumerable=B.enumerable||!1,B.configurable=!0,"value"in B&&(B.writable=!0),Object.defineProperty(l,B.key,B)}function f(l,C,B){return C&&o(l.prototype,C),B&&o(l,B),l}function I(l,C,B){p.prototype.copy.call(l,C,B)}var u=r("buffer"),p=u.Buffer,y=r("util"),m=y.inspect,v=m&&m.custom||"inspect";s.exports=(function(){function l(){E(this,l),this.head=null,this.tail=null,this.length=0}return f(l,[{key:"push",value:function(C){var B={data:C,next:null};0<this.length?this.tail.next=B:this.head=B,this.tail=B,++this.length}},{key:"unshift",value:function(C){var B={data:C,next:this.head};this.length===0&&(this.tail=B),this.head=B,++this.length}},{key:"shift",value:function(){if(this.length!==0){var C=this.head.data;return this.head=this.length===1?this.tail=null:this.head.next,--this.length,C}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(C){if(this.length===0)return"";for(var B=this.head,S=""+B.data;B=B.next;)S+=C+B.data;return S}},{key:"concat",value:function(C){if(this.length===0)return p.alloc(0);for(var B=p.allocUnsafe(C>>>0),S=this.head,b=0;S;)I(S.data,B,b),b+=S.data.length,S=S.next;return B}},{key:"consume",value:function(C,B){var S;return C<this.head.data.length?(S=this.head.data.slice(0,C),this.head.data=this.head.data.slice(C)):C===this.head.data.length?S=this.shift():S=B?this._getString(C):this._getBuffer(C),S}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(C){var B=this.head,S=1,b=B.data;for(C-=b.length;B=B.next;){var _=B.data,F=C>_.length?_.length:C;if(b+=F===_.length?_:_.slice(0,C),C-=F,C===0){F===_.length?(++S,this.head=B.next?B.next:this.tail=null):(this.head=B,B.data=_.slice(F));break}++S}return this.length-=S,b}},{key:"_getBuffer",value:function(C){var B=p.allocUnsafe(C),S=this.head,b=1;for(S.data.copy(B),C-=S.data.length;S=S.next;){var _=S.data,F=C>_.length?_.length:C;if(_.copy(B,B.length-C,0,F),C-=F,C===0){F===_.length?(++b,this.head=S.next?S.next:this.tail=null):(this.head=S,S.data=_.slice(F));break}++b}return this.length-=b,B}},{key:v,value:function(C,B){return m(this,a({},B,{depth:0,customInspect:!1}))}}]),l})()},{buffer:3,util:2}],23:[function(r,s){(function(A){(function(){"use strict";function a(o,f){E(o,f),g(o)}function g(o){o._writableState&&!o._writableState.emitClose||o._readableState&&!o._readableState.emitClose||o.emit("close")}function E(o,f){o.emit("error",f)}s.exports={destroy:function(o,f){var I=this,u=this._readableState&&this._readableState.destroyed,p=this._writableState&&this._writableState.destroyed;return u||p?(f?f(o):o&&(this._writableState?!this._writableState.errorEmitted&&(this._writableState.errorEmitted=!0,A.nextTick(E,this,o)):A.nextTick(E,this,o)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(o||null,function(y){!f&&y?I._writableState?I._writableState.errorEmitted?A.nextTick(g,I):(I._writableState.errorEmitted=!0,A.nextTick(a,I,y)):A.nextTick(a,I,y):f?(A.nextTick(g,I),f(y)):A.nextTick(g,I)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(o,f){var I=o._readableState,u=o._writableState;I&&I.autoDestroy||u&&u.autoDestroy?o.destroy(f):o.emit("error",f)}}}).call(this)}).call(this,r("_process"))},{_process:12}],24:[function(r,s){"use strict";function A(f){var I=!1;return function(){if(!I){I=!0;for(var u=arguments.length,p=Array(u),y=0;y<u;y++)p[y]=arguments[y];f.apply(this,p)}}}function a(){}function g(f){return f.setHeader&&typeof f.abort=="function"}function E(f,I,u){if(typeof I=="function")return E(f,null,I);I||(I={}),u=A(u||a);var p=I.readable||I.readable!==!1&&f.readable,y=I.writable||I.writable!==!1&&f.writable,m=function(){f.writable||l()},v=f._writableState&&f._writableState.finished,l=function(){y=!1,v=!0,p||u.call(f)},C=f._readableState&&f._readableState.endEmitted,B=function(){p=!1,C=!0,y||u.call(f)},S=function(F){u.call(f,F)},b=function(){var F;return p&&!C?(f._readableState&&f._readableState.ended||(F=new o),u.call(f,F)):y&&!v?(f._writableState&&f._writableState.ended||(F=new o),u.call(f,F)):void 0},_=function(){f.req.on("finish",l)};return g(f)?(f.on("complete",l),f.on("abort",b),f.req?_():f.on("request",_)):y&&!f._writableState&&(f.on("end",m),f.on("close",m)),f.on("end",B),f.on("finish",l),I.error!==!1&&f.on("error",S),f.on("close",b),function(){f.removeListener("complete",l),f.removeListener("abort",b),f.removeListener("request",_),f.req&&f.req.removeListener("finish",l),f.removeListener("end",m),f.removeListener("close",m),f.removeListener("finish",l),f.removeListener("end",B),f.removeListener("error",S),f.removeListener("close",b)}}var o=r("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;s.exports=E},{"../../../errors":15}],25:[function(r,s){s.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],26:[function(r,s){"use strict";function A(v){var l=!1;return function(){l||(l=!0,v.apply(void 0,arguments))}}function a(v){if(v)throw v}function g(v){return v.setHeader&&typeof v.abort=="function"}function E(v,l,C,B){B=A(B);var S=!1;v.on("close",function(){S=!0}),u===void 0&&(u=r("./end-of-stream")),u(v,{readable:l,writable:C},function(_){return _?B(_):(S=!0,void B())});var b=!1;return function(_){if(!S)return b?void 0:(b=!0,g(v)?v.abort():typeof v.destroy=="function"?v.destroy():void B(_||new m("pipe")))}}function o(v){v()}function f(v,l){return v.pipe(l)}function I(v){return v.length&&typeof v[v.length-1]=="function"?v.pop():a}var u,p=r("../../../errors").codes,y=p.ERR_MISSING_ARGS,m=p.ERR_STREAM_DESTROYED;s.exports=function(){for(var v=arguments.length,l=Array(v),C=0;C<v;C++)l[C]=arguments[C];var B=I(l);if(Array.isArray(l[0])&&(l=l[0]),2>l.length)throw new y("streams");var S,b=l.map(function(_,F){var w=F<l.length-1;return E(_,w,0<F,function(R){S||(S=R),R&&b.forEach(o),w||(b.forEach(o),B(S))})});return l.reduce(f)}},{"../../../errors":15,"./end-of-stream":24}],27:[function(r,s){"use strict";function A(g,E,o){return g.highWaterMark==null?E?g[o]:null:g.highWaterMark}var a=r("../../../errors").codes.ERR_INVALID_OPT_VALUE;s.exports={getHighWaterMark:function(g,E,o,f){var I=A(E,f,o);if(I!=null){if(!(isFinite(I)&&c(I)===I)||0>I){var u=f?o:"highWaterMark";throw new a(u,I)}return c(I)}return g.objectMode?16:16384}}},{"../../../errors":15}],28:[function(r,s){s.exports=r("events").EventEmitter},{events:7}],29:[function(r,s,A){A=s.exports=r("./lib/_stream_readable.js"),A.Stream=A,A.Readable=A,A.Writable=r("./lib/_stream_writable.js"),A.Duplex=r("./lib/_stream_duplex.js"),A.Transform=r("./lib/_stream_transform.js"),A.PassThrough=r("./lib/_stream_passthrough.js"),A.finished=r("./lib/internal/streams/end-of-stream.js"),A.pipeline=r("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"./lib/internal/streams/end-of-stream.js":24,"./lib/internal/streams/pipeline.js":26}],30:[function(r,s,A){function a(f,I){for(var u in f)I[u]=f[u]}function g(f,I,u){return o(f,I,u)}var E=r("buffer"),o=E.Buffer;o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?s.exports=E:(a(E,A),A.Buffer=g),g.prototype=Object.create(o.prototype),a(o,g),g.from=function(f,I,u){if(typeof f=="number")throw new TypeError("Argument must not be a number");return o(f,I,u)},g.alloc=function(f,I,u){if(typeof f!="number")throw new TypeError("Argument must be a number");var p=o(f);return I===void 0?p.fill(0):typeof u=="string"?p.fill(I,u):p.fill(I),p},g.allocUnsafe=function(f){if(typeof f!="number")throw new TypeError("Argument must be a number");return o(f)},g.allocUnsafeSlow=function(f){if(typeof f!="number")throw new TypeError("Argument must be a number");return E.SlowBuffer(f)}},{buffer:3}],31:[function(r,s,A){"use strict";function a(b){if(!b)return"utf8";for(var _;;)switch(b){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return b;default:if(_)return;b=(""+b).toLowerCase(),_=!0}}function g(b){var _=a(b);if(typeof _!="string"&&(B.isEncoding===S||!S(b)))throw new Error("Unknown encoding: "+b);return _||b}function E(b){this.encoding=g(b);var _;switch(this.encoding){case"utf16le":this.text=p,this.end=y,_=4;break;case"utf8":this.fillLast=u,_=4;break;case"base64":this.text=m,this.end=v,_=3;break;default:return this.write=l,void(this.end=C)}this.lastNeed=0,this.lastTotal=0,this.lastChar=B.allocUnsafe(_)}function o(b){return 127>=b?0:b>>5==6?2:b>>4==14?3:b>>3==30?4:b>>6==2?-1:-2}function f(b,_,F){var w=_.length-1;if(w<F)return 0;var R=o(_[w]);return 0<=R?(0<R&&(b.lastNeed=R-1),R):--w<F||R===-2?0:(R=o(_[w]),0<=R?(0<R&&(b.lastNeed=R-2),R):--w<F||R===-2?0:(R=o(_[w]),0<=R?(0<R&&(R===2?R=0:b.lastNeed=R-3),R):0))}function I(b,_){if((192&_[0])!=128)return b.lastNeed=0,"\uFFFD";if(1<b.lastNeed&&1<_.length){if((192&_[1])!=128)return b.lastNeed=1,"\uFFFD";if(2<b.lastNeed&&2<_.length&&(192&_[2])!=128)return b.lastNeed=2,"\uFFFD"}}function u(b){var _=this.lastTotal-this.lastNeed,F=I(this,b,_);return F===void 0?this.lastNeed<=b.length?(b.copy(this.lastChar,_,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(b.copy(this.lastChar,_,0,b.length),void(this.lastNeed-=b.length)):F}function p(b,_){if((b.length-_)%2==0){var F=b.toString("utf16le",_);if(F){var w=F.charCodeAt(F.length-1);if(55296<=w&&56319>=w)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=b[b.length-2],this.lastChar[1]=b[b.length-1],F.slice(0,-1)}return F}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=b[b.length-1],b.toString("utf16le",_,b.length-1)}function y(b){var _=b&&b.length?this.write(b):"";if(this.lastNeed){var F=this.lastTotal-this.lastNeed;return _+this.lastChar.toString("utf16le",0,F)}return _}function m(b,_){var F=(b.length-_)%3;return F==0?b.toString("base64",_):(this.lastNeed=3-F,this.lastTotal=3,F==1?this.lastChar[0]=b[b.length-1]:(this.lastChar[0]=b[b.length-2],this.lastChar[1]=b[b.length-1]),b.toString("base64",_,b.length-F))}function v(b){var _=b&&b.length?this.write(b):"";return this.lastNeed?_+this.lastChar.toString("base64",0,3-this.lastNeed):_}function l(b){return b.toString(this.encoding)}function C(b){return b&&b.length?this.write(b):""}var B=r("safe-buffer").Buffer,S=B.isEncoding||function(b){switch(b=""+b,b&&b.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};A.StringDecoder=E,E.prototype.write=function(b){if(b.length===0)return"";var _,F;if(this.lastNeed){if(_=this.fillLast(b),_===void 0)return"";F=this.lastNeed,this.lastNeed=0}else F=0;return F<b.length?_?_+this.text(b,F):this.text(b,F):_||""},E.prototype.end=function(b){var _=b&&b.length?this.write(b):"";return this.lastNeed?_+"\uFFFD":_},E.prototype.text=function(b,_){var F=f(this,b,_);if(!this.lastNeed)return b.toString("utf8",_);this.lastTotal=F;var w=b.length-(F-this.lastNeed);return b.copy(this.lastChar,0,w),b.toString("utf8",_,w)},E.prototype.fillLast=function(b){return this.lastNeed<=b.length?(b.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(b.copy(this.lastChar,this.lastTotal-this.lastNeed,0,b.length),void(this.lastNeed-=b.length))}},{"safe-buffer":30}],32:[function(r,s){(function(A){(function(){function a(g){try{if(!A.localStorage)return!1}catch{return!1}var E=A.localStorage[g];return E!=null&&(E+"").toLowerCase()==="true"}s.exports=function(g,E){function o(){if(!f){if(a("throwDeprecation"))throw new Error(E);a("traceDeprecation")?console.trace(E):console.warn(E),f=!0}return g.apply(this,arguments)}if(a("noDeprecation"))return g;var f=!1;return o}}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],"/":[function(r,s){function A(v){return v.replace(/a=ice-options:trickle\s\n/g,"")}function a(v){console.warn(v)}let g=r("debug")("simple-peer"),E=r("get-browser-rtc"),o=r("randombytes"),f=r("readable-stream"),I=r("queue-microtask"),u=r("err-code"),{Buffer:p}=r("buffer"),y=65536;class m extends f.Duplex{constructor(l){if(l=Object.assign({allowHalfOpen:!1},l),super(l),this._id=o(4).toString("hex").slice(0,7),this._debug("new peer %o",l),this.channelName=l.initiator?l.channelName||o(20).toString("hex"):null,this.initiator=l.initiator||!1,this.channelConfig=l.channelConfig||m.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},m.config,l.config),this.offerOptions=l.offerOptions||{},this.answerOptions=l.answerOptions||{},this.sdpTransform=l.sdpTransform||(C=>C),this.streams=l.streams||(l.stream?[l.stream]:[]),this.trickle=l.trickle===void 0||l.trickle,this.allowHalfTrickle=l.allowHalfTrickle!==void 0&&l.allowHalfTrickle,this.iceCompleteTimeout=l.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=l.wrtc&&typeof l.wrtc=="object"?l.wrtc:E(),!this._wrtc)throw u(typeof window>"u"?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(C){return void this.destroy(u(C,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=C=>{this._onIceCandidate(C)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(C=>{this.destroy(u(C,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=C=>{this._setupData(C)},this.streams&&this.streams.forEach(C=>{this.addStream(C)}),this._pc.ontrack=C=>{this._onTrack(C)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(l){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof l=="string")try{l=JSON.parse(l)}catch{l={}}this._debug("signal()"),l.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),l.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(l.transceiverRequest.kind,l.transceiverRequest.init)),l.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(l.candidate):this._pendingCandidates.push(l.candidate)),l.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(l)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(C=>{this._addIceCandidate(C)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(C=>{this.destroy(u(C,"ERR_SET_REMOTE_DESCRIPTION"))}),l.sdp||l.candidate||l.renegotiate||l.transceiverRequest||this.destroy(u(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(l){let C=new this._wrtc.RTCIceCandidate(l);this._pc.addIceCandidate(C).catch(B=>{!C.address||C.address.endsWith(".local")?a("Ignoring unsupported ICE candidate."):this.destroy(u(B,"ERR_ADD_ICE_CANDIDATE"))})}send(l){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(l)}}addTransceiver(l,C){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(l,C),this._needsNegotiation()}catch(B){this.destroy(u(B,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:l,init:C}})}}addStream(l){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),l.getTracks().forEach(C=>{this.addTrack(C,l)})}}addTrack(l,C){if(this.destroying)return;if(this.destroyed)throw u(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");let B=this._senderMap.get(l)||new Map,S=B.get(C);if(!S)S=this._pc.addTrack(l,C),B.set(C,S),this._senderMap.set(l,B),this._needsNegotiation();else throw S.removed?u(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):u(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(l,C,B){if(this.destroying)return;if(this.destroyed)throw u(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");let S=this._senderMap.get(l),b=S?S.get(B):null;if(!b)throw u(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");C&&this._senderMap.set(C,S),b.replaceTrack==null?this.destroy(u(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK")):b.replaceTrack(C)}removeTrack(l,C){if(this.destroying)return;if(this.destroyed)throw u(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");let B=this._senderMap.get(l),S=B?B.get(C):null;if(!S)throw u(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{S.removed=!0,this._pc.removeTrack(S)}catch(b){b.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(S):this.destroy(u(b,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(l){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),l.getTracks().forEach(C=>{this.removeTrack(C,l)})}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,I(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this.destroying){if(this.destroyed)throw u(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}destroy(l){this._destroy(l,()=>{})}_destroy(l,C){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",l&&(l.message||l)),I(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",l&&(l.message||l)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,l&&this.emit("error",l),this.emit("close"),C()}))}_setupData(l){if(!l.channel)return this.destroy(u(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=l.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=y),this.channelName=this._channel.label,this._channel.onmessage=B=>{this._onChannelMessage(B)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=B=>{let S=B.error instanceof Error?B.error:new Error(`Datachannel error: ${B.message} ${B.filename}:${B.lineno}:${B.colno}`);this.destroy(u(S,"ERR_DATA_CHANNEL"))};let C=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(C&&this._onChannelClose(),C=!0):C=!1},5e3)}_read(){}_write(l,C,B){if(this.destroyed)return B(u(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(l)}catch(S){return this.destroy(u(S,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>y?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=B):B(null)}else this._debug("write before connect"),this._chunk=l,this._cb=B}_onFinish(){if(!this.destroyed){let l=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?l():this.once("connect",l)}}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(l=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(l.sdp=A(l.sdp)),l.sdp=this.sdpTransform(l.sdp);let C=()=>{if(!this.destroyed){let B=this._pc.localDescription||l;this._debug("signal"),this.emit("signal",{type:B.type,sdp:B.sdp})}};this._pc.setLocalDescription(l).then(()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?C():this.once("_iceComplete",C))}).catch(B=>{this.destroy(u(B,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(l=>{this.destroy(u(l,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(l=>{l.mid||!l.sender.track||l.requested||(l.requested=!0,this.addTransceiver(l.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(l=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(l.sdp=A(l.sdp)),l.sdp=this.sdpTransform(l.sdp);let C=()=>{if(!this.destroyed){let B=this._pc.localDescription||l;this._debug("signal"),this.emit("signal",{type:B.type,sdp:B.sdp}),this.initiator||this._requestMissingTransceivers()}};this._pc.setLocalDescription(l).then(()=>{this.destroyed||(this.trickle||this._iceComplete?C():this.once("_iceComplete",C))}).catch(B=>{this.destroy(u(B,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(l=>{this.destroy(u(l,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(u(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;let l=this._pc.iceConnectionState,C=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",l,C),this.emit("iceStateChange",l,C),(l==="connected"||l==="completed")&&(this._pcReady=!0,this._maybeReady()),l==="failed"&&this.destroy(u(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),l==="closed"&&this.destroy(u(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(l){let C=B=>(Object.prototype.toString.call(B.values)==="[object Array]"&&B.values.forEach(S=>{Object.assign(B,S)}),B);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(B=>{let S=[];B.forEach(b=>{S.push(C(b))}),l(null,S)},B=>l(B)):0<this._pc.getStats.length?this._pc.getStats(B=>{if(this.destroyed)return;let S=[];B.result().forEach(b=>{let _={};b.names().forEach(F=>{_[F]=b.stat(F)}),_.id=b.id,_.type=b.type,_.timestamp=b.timestamp,S.push(C(_))}),l(null,S)},B=>l(B)):l(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;let l=()=>{this.destroyed||this.getStats((C,B)=>{if(this.destroyed)return;C&&(B=[]);let S={},b={},_={},F=!1;B.forEach(R=>{(R.type==="remotecandidate"||R.type==="remote-candidate")&&(S[R.id]=R),(R.type==="localcandidate"||R.type==="local-candidate")&&(b[R.id]=R),(R.type==="candidatepair"||R.type==="candidate-pair")&&(_[R.id]=R)});let w=R=>{F=!0;let M=b[R.localCandidateId];M&&(M.ip||M.address)?(this.localAddress=M.ip||M.address,this.localPort=+M.port):M&&M.ipAddress?(this.localAddress=M.ipAddress,this.localPort=+M.portNumber):typeof R.googLocalAddress=="string"&&(M=R.googLocalAddress.split(":"),this.localAddress=M[0],this.localPort=+M[1]),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let U=S[R.remoteCandidateId];U&&(U.ip||U.address)?(this.remoteAddress=U.ip||U.address,this.remotePort=+U.port):U&&U.ipAddress?(this.remoteAddress=U.ipAddress,this.remotePort=+U.portNumber):typeof R.googRemoteAddress=="string"&&(U=R.googRemoteAddress.split(":"),this.remoteAddress=U[0],this.remotePort=+U[1]),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(B.forEach(R=>{R.type==="transport"&&R.selectedCandidatePairId&&w(_[R.selectedCandidatePairId]),(R.type==="googCandidatePair"&&R.googActiveConnection==="true"||(R.type==="candidatepair"||R.type==="candidate-pair")&&R.selected)&&w(R)}),!F&&(!Object.keys(_).length||Object.keys(b).length))return void setTimeout(l,100);if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(M){return this.destroy(u(M,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');let R=this._cb;this._cb=null,R(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};l()}_onInterval(){this._cb&&this._channel&&!(this._channel.bufferedAmount>y)&&this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(l=>{this._pc.removeTrack(l),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(l){this.destroyed||(l.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:l.candidate.candidate,sdpMLineIndex:l.candidate.sdpMLineIndex,sdpMid:l.candidate.sdpMid}}):!l.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),l.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(l){if(this.destroyed)return;let C=l.data;C instanceof ArrayBuffer&&(C=p.from(C)),this.push(C)}_onChannelBufferedAmountLow(){if(!this.destroyed&&this._cb){this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);let l=this._cb;this._cb=null,l(null)}}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(l){this.destroyed||l.streams.forEach(C=>{this._debug("on track"),this.emit("track",l.track,C),this._remoteTracks.push({track:l.track,stream:C}),this._remoteStreams.some(B=>B.id===C.id)||(this._remoteStreams.push(C),I(()=>{this._debug("on stream"),this.emit("stream",C)}))})}_debug(){let l=[].slice.call(arguments);l[0]="["+this._id+"] "+l[0],g.apply(null,l)}}m.WEBRTC_SUPPORT=!!E(),m.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},m.channelConfig={},s.exports=m},{buffer:3,debug:4,"err-code":6,"get-browser-rtc":8,"queue-microtask":13,randombytes:14,"readable-stream":29}]},{},[])("/")})});var Kn=oi((vs,Yn)=>{"use strict";Yn.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var pe,Bt,ct,Ft,V,lt,ot,ht,dt,it,Jn,_t=Xt(async()=>{pe=typeof window>"u";pe||(await Promise.resolve().then(()=>(Pn(),hi))).default;Bt={AVOID_INTERVALS:!1,USE_TEST_TRANSPORTS:!1,ICE_DELAY:{min:250,max:3e3},ICE_OFFER_FAILURE_RATE:.2,ICE_ANSWER_FAILURE_RATE:.15,AVOID_FOLLOWERS_NODES:!1,AUTO_START:!0,PUBLIC_PEERS_COUNT:100,PEERS_COUNT:1860,BOOTSTRAPS_PER_PEER:10,DELAY_BETWEEN_INIT:10,RANDOM_UNICAST_PER_SEC:0,RANDOM_GOSSIP_PER_SEC:0,DIFFUSION_TEST_DELAY:1e4},ct={DEFAULT_VERBOSE:2,CONNECTION_UPGRADE_TIMEOUT:15e3,IS_BROWSER:!pe,MANUAL_BAN_MODE:!1},Ft={PORT:8080,AUTO_KICK_DELAY:6e4,AUTO_KICK_DURATION:3e4,MAX_WS_IN_CONNS:20},V={DIFFICULTY:0,ARGON2_MEM:2**16,ARE_IDS_HEX:!0,PUBLIC_PREFIX:"0",STANDARD_PREFIX:"1",ID_LENGTH:16,PUBKEY_LENGTH:32,PRIVATEKEY_LENGTH:32,SIGNATURE_LENGTH:64},lt={CENTRALIZED_STUN_SERVERS:!1,MAX_SDP_OFFERS:2,ICE_COMPLETE_TIMEOUT:1e3,SIGNAL_CREATION_TIMEOUT:8e3,SDP_OFFER_EXPIRATION:4e4,WS_CLIENT:WebSocket,WS_SERVER:pe?(await Promise.resolve().then(()=>ci(Kn(),1))).WebSocketServer:null,PEER:pe?(await import("simple-peer")).default:window.SimplePeer},ot={PEER_LINK_DELAY:1e4,PEER_LINK_EXPIRATION:6e4,LOOP_DELAY:2500,TARGET_NEIGHBORS_COUNT:5,ON_CONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1,OVER_NEIGHBORED:!0,SHARE_HISTORY:!1},ON_DISCONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1},ON_UNICAST:{DIGEST_TRAVELED_ROUTE:!0}},ht={MAX_HOPS:8,MAX_NODES:256,MAX_ROUTES:5,MARKERS_BYTES:{message:0,0:"message",handshake:1,1:"handshake",signal_answer:2,2:"signal_answer",signal_offer:3,3:"signal_offer"}},dt={EXPIRATION:1e4,CACHE_DURATION:2e4,HOPS:{default:20,signal_offer:6,diffusion_test:100,over_neighbored:6},TRANSMISSION_RATE:{MIN_NEIGHBOURS_TO_APPLY_PONDERATION:2,NEIGHBOURS_PONDERATION:5,Default:1,signal_offer:.618},MARKERS_BYTES:{gossip:128,128:"gossip",signal_offer:129,129:"signal_offer",peer_connected:130,130:"peer_connected",peer_disconnected:131,131:"peer_disconnected",diffusion_test:132,132:"diffusion_test",over_neighbored:133,133:"over_neighbored"}},it={SIMULATOR:"color: yellow; font-weight: bold;",ARBITER:"color: white;",CRYPTO_CODEX:"color: green;",GOSSIP:"color: fuchsia;",UNICAST:"color: cyan;",PEER_STORE:"color: orange;",SERVICE:"color: teal;",PUNISHER:{BAN:"color: red; font-weight: bold;",KICK:"color: darkorange; font-weight: bold;"}},Jn={SIMULATION:Bt,NODE:ct,TRANSPORTS:lt,DISCOVERY:ot,IDENTITY:V,UNICAST:ht,GOSSIP:dt,LOG_CSS:it}});var we,me,Wn=Xt(async()=>{await _t();we=class{sandbox;SIGNAL_OFFER_TIMEOUT=3e4;SIGNAL_ANSWER_TIMEOUT=1e4;PENDING_OFFERS={};PENDING_ANSWERS={};sdpToBuild=[];signalsToDigest=[];constructor(t){this.sandbox=t}tick(){let t=Date.now();this.#e(t);let e=this.sdpToBuild;this.sdpToBuild=[];for(let{transportId:s,type:A,time:a}of e){if(a>t){this.sdpToBuild.push({transportId:s,type:A,time:a});continue}let g=this.sandbox.transportInstances[s];if(!g||g.destroying||g.destroyed)continue;let{success:E,signalData:o,reason:f}=this.#t(s,A);!E||!o?g.dispatchError(f||`Failed to build SDP for peer: ${this.id}`):g.callbacks.signal?.forEach(I=>I(o))}let r=this.signalsToDigest;this.signalsToDigest=[];for(let{signalData:s,receiverId:A}of r){let a=this.sandbox.transportInstances[A];if(!a||a.destroying||a.destroyed)continue;let{success:g,reason:E}=this.#n(s,A);g||a.dispatchError(E||`Failed to digest signal for peer: ${this.id}`)}}#e(t=Date.now()){for(let e in this.PENDING_OFFERS)for(let r in this.PENDING_OFFERS[e])t>this.PENDING_OFFERS[e][r].expiration&&delete this.PENDING_OFFERS[e][r];for(let e in this.PENDING_ANSWERS){let r=this.PENDING_ANSWERS[e];t>r.expiration&&delete this.PENDING_ANSWERS[e]}}#t(t,e){if(e!=="offer"&&e!=="answer")return{success:!1,signalData:null,reason:`Invalid signal type: ${e}.`};if(e==="answer"&&this.PENDING_ANSWERS[t])return{success:!1,signalData:null,reason:`There is already a pending answer for transport ID: ${t}`};let r=e==="offer"?this.SIGNAL_OFFER_TIMEOUT:this.SIGNAL_ANSWER_TIMEOUT||1e4,s=Math.random().toString(36).substring(2),A={transportId:t,expiration:Date.now()+r,type:e,sdp:{id:s,v:"0",o:`- ${Math.random().toString(36).substring(2)} ${Math.floor(Math.random()*1e6)} 2 IN IP4 127.0.0.1\r
|
|
3
|
-
`,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return e==="offer"&&this.PENDING_OFFERS[t]?.[s]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(e==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),e==="offer"&&(this.PENDING_OFFERS[t][s]=A),e==="answer"&&(this.PENDING_ANSWERS[t]=A),{success:!0,signalData:A,reason:"na"})}#n(t,e){let{transportId:r,type:s,sdp:A}=t;if(r===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(s!=="offer"&&s!=="answer")return{success:!1,reason:`Invalid signal type: ${s}.`};if(s==="offer"&&(!this.PENDING_OFFERS[r]||!this.PENDING_OFFERS[r][A.id]))return{success:!1,reason:`No pending offer found for transport ID: ${r} with SDP ID: ${A.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[r]||this.PENDING_ANSWERS[r].sdp.id!==A.id))return{success:!1,reason:`No pending answer found for transport ID: ${r} with SDP ID: ${A.id}`};if(s==="offer"&&Math.random()<Bt.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${r} to ${e}`};if(s==="answer"&&Math.random()<Bt.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${r} to ${e}`};if(s==="offer")return this.buildSDP(e,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[e],delete this.PENDING_ANSWERS[r];let a=this.sandbox.linkInstances(e,r);return{success:!a,reason:a||"na"}}buildSDP(t,e){let r={min:Bt.ICE_DELAY.min,max:Bt.ICE_DELAY.max},s=Math.floor(Math.random()*(r.max-r.min+1))+r.min;this.sdpToBuild.push({transportId:t,type:e,time:Date.now()+s})}digestSignal(t,e){this.signalsToDigest.push({signalData:t,receiverId:e})}},me=class{verbose=ct.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,e){this.publicWsServers[t]=e}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let e=(this.wsGlobalIndex++).toString();t.id=e,this.wsConnections[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,e,r){let s=this.wsConnections[e],A=this.publicWsServers[t];if(!s||!A||A.closing||A.clients.size>=A.maxClients)return;let a=new r(A,e);A.clients.add(a),a.init(s.id),A.callbacks.connection.forEach(g=>g(a)),s.init(a.id)}inscribeInstance(t){let e=(this.tGlobalIndex++).toString();t.id=e,this.transportInstances[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${e}`)}linkInstances(t,e){let[r,s]=[this.transportInstances[t],this.transportInstances[e]];if(!r||!s)return`Missing transport instances: ${t}=>${!!r}, ${e}=>${!!s}`;if(r.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${e}`;if(r.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${r.destroying}, ${e}=>${s.destroying}`;if(r.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${r.destroyed}, ${e}=>${s.destroyed}`;if(r.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${r.remoteId}`;if(s.remoteId)return`Transport instance tB: ${e} is already linked to remoteId: ${s.remoteId}`;r.remoteId=e,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${e}`),r.callbacks.connect.forEach(A=>A()),s.callbacks.connect.forEach(A=>A())}sendData(t,e,r){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(e===void 0)return{success:!1,reason:`Cannot send message to id: ${e}`};let s=this.transportInstances[t];if(!s)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!s.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(s.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${s.id}`};if(s.remoteId!==e)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`};let A=this.transportInstances[e];return A?A.remoteId?A.id!==e?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${e}`}:A.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`}:(this.enqueueTransportData(t,e,r),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${e} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${e}`}}destroyTransportAndAssociatedTransport(t){let e=this.transportInstances[t];if(!e)return;let r=e.remoteId,s=r?this.transportInstances[r]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),e&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${r}`),delete this.transportInstances[r],s.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],e.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let e=this.batchSize;t>this.batchSize*3&&(e=this.batchSize*1.5),t>this.batchSize*5&&(e=this.batchSize*2),t>this.batchSize*10&&(e=this.batchSize*3),t>this.batchSize*20&&(e=this.batchSize*5),e=Math.round(e);let r=Math.min(this.queueIndex+e,t);for(let A=this.queueIndex;A<r;A++){let[a,g,E,o]=this.messageQueueSync[A];a==="transport_data"?this.#e(g,E,o):a==="ws_message"&&this.#t(g,E,o)}if(this.queueIndex=r,this.queueIndex<5e3)return;let s=this.messageQueueSync.length>5e4;s&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),s&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let e=Math.min(t,this.queueCount);for(let r=0;r<e;r++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[A,a,g,E]=s;A==="transport_data"?this.#e(a,g,E):A==="ws_message"&&this.#t(a,g,E)}await new Promise(r=>setTimeout(r,0)),this.queueCount-=e}#e(t,e,r){let[s,A]=[this.transportInstances[t],this.transportInstances[e]];if(!s||!A||s.destroying||A.destroying){s?.close(),A?.close();return}if(s.destroyed){A.close();return}if(A.destroyed){s.close();return}for(let a of A.callbacks.data)a(r)}#t(t,e,r){let[s,A]=[this.wsConnections[t],this.wsConnections[e]];if(!A||!s||A.readyState!==1||s.readyState!==1){A?.close(),s?.close();return}if(A.onmessage)A.onmessage({data:r});else for(let a of A.callbacks.message)a(r)}enqueueTransportDataSync(t,e,r){this.messageQueueSync.push(["transport_data",t,e,r])}enqueueWsMessageSync(t,e,r){this.messageQueueSync.push(["ws_message",t,e,r])}enqueueTransportData(t,e,r){this.messageQueue[this.queueEnd]=["transport_data",t,e,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,e,r){this.messageQueue[this.queueEnd]=["ws_message",t,e,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var Re={};Be(Re,{ICE_CANDIDATE_EMITTER:()=>rn,SANDBOX:()=>pt,TEST_WS_EVENT_MANAGER:()=>Se,TestTransport:()=>nn,TestWsConnection:()=>_e,TestWsServer:()=>en});var tn,_e,en,nn,pt,rn,Se,De=Xt(async()=>{await _t();await Wn();tn=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),e=this.toInit;this.toInit=[];for(let{connId:r,time:s}of e)s>t?this.toInit.push({connId:r,time:s}):this.#e(r)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),e=this.toClose;this.toClose=[];for(let{wsId:r,remoteWsId:s,time:A}of e)A>t?this.toClose.push({wsId:r,remoteWsId:s,time:A}):this.#t(r,s)}cleanerTick(){let t=Date.now();for(let e of Object.values(pt.publicWsServers))for(let r of e.clients)r.readyState===3&&e.clients.delete(r)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),e=this.toError;this.toError=[];for(let{wsId:r,error:s,time:A}of e)A>t?this.toError.push({wsId:r,error:s,time:A}):pt.wsConnections[r]?.dispatchError(s)}#e(t){let e=pt.wsConnections[t];e&&pt.connectToWebSocketServer(e.url,e.id,_e)}#t(t,e){let r=pt.wsConnections[t],s=pt.wsConnections[e];r?.onclose?.(),s?.onclose?.();for(let A of r?.callbacks?.close||[])A();for(let A of s?.callbacks?.close||[])A()}scheduleInit(t,e=500){this.toInit.push({connId:t,time:Date.now()+e})}scheduleClose(t,e,r=100){this.toClose.push({wsId:t,remoteWsId:e,time:Date.now()+r})}scheduleError(t,e,r=100){this.toError.push({wsId:t,error:e,time:Date.now()+r})}},_e=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",e){pt.inscribeWsConnection(this),!e&&(this.url=t,Se.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),Se.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(this.readyState===3)return;this.readyState=3;let t=pt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&Se.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}pt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(e=>e(t)),this.onerror&&this.onerror(t)}},en=class{url;clients=new Set;maxClients=Ft.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,pt.inscribeWebSocketServer(this.url,this)}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(!this.closing){this.closing=!0,pt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},nn=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){pt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&rn.buildSDP(this.id,"offer")}on(t,e){this.callbacks[t]&&this.callbacks[t].push(e)}dispatchError(t){this.callbacks.error.forEach(e=>e(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");rn.digestSignal(t,this.id)}}send(t){let{success:e,reason:r}=pt.sendData(this.id,this.remoteId,t);e||this.destroy(r)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(e=>e()),pt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},pt=new me,rn=new we(pt),Se=new tn});var br={};Be(br,{default:()=>is,ed25519:()=>dn,sha512:()=>rs});function Oi(c){return c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array"}function Qr(c,t,e=""){let r=Oi(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;throw new Error(a+"expected Uint8Array"+g+", got "+E)}return c}function tr(c,t=!0){if(c.destroyed)throw new Error("Hash instance has been destroyed");if(t&&c.finished)throw new Error("Hash#digest() has already been called")}function Hi(c,t){Qr(c,void 0,"digestInto() output");let e=t.outputLen;if(c.length<e)throw new Error('"digestInto() output" expected to be of length >='+e)}function ln(...c){for(let t=0;t<c.length;t++)c[t].fill(0)}function gn(c){return new DataView(c.buffer,c.byteOffset,c.byteLength)}function Pi(c,t={}){let e=(s,A)=>c(A).update(s).digest(),r=c(void 0);return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=s=>c(s),Object.assign(e,t),Object.freeze(e)}function Ji(c,t=!1){return t?{h:Number(c&Ue),l:Number(c>>er&Ue)}:{h:Number(c>>er&Ue)|0,l:Number(c&Ue)|0}}function qi(c,t=!1){let e=c.length,r=new Uint32Array(e),s=new Uint32Array(e);for(let A=0;A<e;A++){let{h:a,l:g}=Ji(c[A],t);[r[A],s[A]]=[a,g]}return[r,s]}function Ht(c,t,e,r){let s=(t>>>0)+(r>>>0);return{h:c+e+(s/2**32|0)|0,l:s|0}}var Ci,Bi,dn,ir,yt,Oe,jn,Xn,an,cn,pi,Mt,Ie,Qi,gt,yi,bi,wi,Dt,Ke,sr,Ar,In,Ot,Vn,En,or,mi,zt,ar,He,$t,P,cr,hr,gr,Si,hn,fn,Jt,qt,ae,fr,Cn,xt,_i,$n,Ri,Pe,Bn,pn,ur,Qn,yn,lr,dr,Ir,Er,Cr,Di,Ni,bn,Br,vi,Ti,Fi,wn,mn,ki,xi,Mi,Ye,Ui,pr,un,Gi,Zn,zn,Li,Yi,Ki,Qt,Ue,er,nr,rr,Ae,oe,Ge,Le,Wi,ji,Xi,Vi,$i,Zi,yr,zi,ts,Yt,Kt,es,ns,rs,is,wr=Xt(()=>{Ci=Object.defineProperty,Bi=(c,t)=>{for(var e in t)Ci(c,e,{get:t[e],enumerable:!0})},dn={};Bi(dn,{Point:()=>Jt,etc:()=>Fi,getPublicKey:()=>dr,getPublicKeyAsync:()=>lr,hash:()=>Si,hashes:()=>wn,keygen:()=>ki,keygenAsync:()=>xi,sign:()=>Ni,signAsync:()=>Di,utils:()=>Mi,verify:()=>Ti,verifyAsync:()=>vi});ir={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:yt,n:Oe,Gx:jn,Gy:Xn,a:an,d:cn,h:pi}=ir,Mt=32,Ie=64,Qi=(...c)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...c)},gt=(c="")=>{let t=new Error(c);throw Qi(t,gt),t},yi=c=>typeof c=="bigint",bi=c=>typeof c=="string",wi=c=>c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array",Dt=(c,t,e="")=>{let r=wi(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;gt(a+"expected Uint8Array"+g+", got "+E)}return c},Ke=c=>new Uint8Array(c),sr=c=>Uint8Array.from(c),Ar=(c,t)=>c.toString(16).padStart(t,"0"),In=c=>Array.from(Dt(c)).map(t=>Ar(t,2)).join(""),Ot={_0:48,_9:57,A:65,F:70,a:97,f:102},Vn=c=>{if(c>=Ot._0&&c<=Ot._9)return c-Ot._0;if(c>=Ot.A&&c<=Ot.F)return c-(Ot.A-10);if(c>=Ot.a&&c<=Ot.f)return c-(Ot.a-10)},En=c=>{let t="hex invalid";if(!bi(c))return gt(t);let e=c.length,r=e/2;if(e%2)return gt(t);let s=Ke(r);for(let A=0,a=0;A<r;A++,a+=2){let g=Vn(c.charCodeAt(a)),E=Vn(c.charCodeAt(a+1));if(g===void 0||E===void 0)return gt(t);s[A]=g*16+E}return s},or=()=>globalThis?.crypto,mi=()=>or()?.subtle??gt("crypto.subtle must be defined, consider polyfill"),zt=(...c)=>{let t=Ke(c.reduce((r,s)=>r+Dt(s).length,0)),e=0;return c.forEach(r=>{t.set(r,e),e+=r.length}),t},ar=(c=Mt)=>or().getRandomValues(Ke(c)),He=BigInt,$t=(c,t,e,r="bad number: out of range")=>yi(c)&&t<=c&&c<e?c:gt(r),P=(c,t=yt)=>{let e=c%t;return e>=0n?e:t+e},cr=c=>P(c,Oe),hr=(c,t)=>{(c===0n||t<=0n)&>("no inverse n="+c+" mod="+t);let e=P(c,t),r=t,s=0n,A=1n,a=1n,g=0n;for(;e!==0n;){let E=r/e,o=r%e,f=s-a*E,I=A-g*E;r=e,e=o,s=a,A=g,a=f,g=I}return r===1n?P(s,t):gt("no inverse")},gr=c=>{let t=wn[c];return typeof t!="function"&>("hashes."+c+" not set"),t},Si=c=>gr("sha512")(c),hn=c=>c instanceof Jt?c:gt("Point expected"),fn=2n**256n,Jt=class Zt{static BASE;static ZERO;X;Y;Z;T;constructor(t,e,r,s){let A=fn;this.X=$t(t,0n,A),this.Y=$t(e,0n,A),this.Z=$t(r,1n,A),this.T=$t(s,0n,A),Object.freeze(this)}static CURVE(){return ir}static fromAffine(t){return new Zt(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,e=!1){let r=cn,s=sr(Dt(t,Mt)),A=t[31];s[31]=A&-129;let a=Cn(s);$t(a,0n,e?fn:yt);let g=P(a*a),E=P(g-1n),o=P(r*g+1n),{isValid:f,value:I}=Ri(E,o);f||gt("bad point: y not sqrt");let u=(I&1n)===1n,p=(A&128)!==0;return!e&&I===0n&&p&>("bad point: x==0, isLastByteOdd"),p!==u&&(I=P(-I)),new Zt(I,a,1n,P(I*a))}static fromHex(t,e){return Zt.fromBytes(En(t),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=an,e=cn,r=this;if(r.is0())return gt("bad point: ZERO");let{X:s,Y:A,Z:a,T:g}=r,E=P(s*s),o=P(A*A),f=P(a*a),I=P(f*f),u=P(E*t),p=P(f*P(u+o)),y=P(I+P(e*P(E*o)));if(p!==y)return gt("bad point: equation left != right (1)");let m=P(s*A),v=P(a*g);return m!==v?gt("bad point: equation left != right (2)"):this}equals(t){let{X:e,Y:r,Z:s}=this,{X:A,Y:a,Z:g}=hn(t),E=P(e*g),o=P(A*s),f=P(r*g),I=P(a*s);return E===o&&f===I}is0(){return this.equals(ae)}negate(){return new Zt(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:e,Z:r}=this,s=an,A=P(t*t),a=P(e*e),g=P(2n*P(r*r)),E=P(s*A),o=t+e,f=P(P(o*o)-A-a),I=E+a,u=I-g,p=E-a,y=P(f*u),m=P(I*p),v=P(f*p),l=P(u*I);return new Zt(y,m,l,v)}add(t){let{X:e,Y:r,Z:s,T:A}=this,{X:a,Y:g,Z:E,T:o}=hn(t),f=an,I=cn,u=P(e*a),p=P(r*g),y=P(A*I*o),m=P(s*E),v=P((e+r)*(a+g)-u-p),l=P(m-y),C=P(m+y),B=P(p-f*u),S=P(v*l),b=P(C*B),_=P(v*B),F=P(l*C);return new Zt(S,b,F,_)}subtract(t){return this.add(hn(t).negate())}multiply(t,e=!0){if(!e&&(t===0n||this.is0()))return ae;if($t(t,1n,Oe),t===1n)return this;if(this.equals(qt))return Li(t).p;let r=ae,s=qt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?r=r.add(A):e&&(s=s.add(A));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:e,Z:r}=this;if(this.equals(ae))return{x:0n,y:1n};let s=hr(r,yt);P(r*s)!==1n&>("invalid inverse");let A=P(t*s),a=P(e*s);return{x:A,y:a}}toBytes(){let{x:t,y:e}=this.assertValidity().toAffine(),r=fr(e);return r[31]|=t&1n?128:0,r}toHex(){return In(this.toBytes())}clearCofactor(){return this.multiply(He(pi),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Oe/2n,!1).double();return Oe%2n&&(t=t.add(this)),t.is0()}},qt=new Jt(jn,Xn,1n,P(jn*Xn)),ae=new Jt(0n,1n,1n,0n);Jt.BASE=qt;Jt.ZERO=ae;fr=c=>En(Ar($t(c,0n,fn),Ie)).reverse(),Cn=c=>He("0x"+In(sr(Dt(c)).reverse())),xt=(c,t)=>{let e=c;for(;t-- >0n;)e*=e,e%=yt;return e},_i=c=>{let t=c*c%yt*c%yt,e=xt(t,2n)*t%yt,r=xt(e,1n)*c%yt,s=xt(r,5n)*r%yt,A=xt(s,10n)*s%yt,a=xt(A,20n)*A%yt,g=xt(a,40n)*a%yt,E=xt(g,80n)*g%yt,o=xt(E,80n)*g%yt,f=xt(o,10n)*s%yt;return{pow_p_5_8:xt(f,2n)*c%yt,b2:t}},$n=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Ri=(c,t)=>{let e=P(t*t*t),r=P(e*e*t),s=_i(c*r).pow_p_5_8,A=P(c*e*s),a=P(t*A*A),g=A,E=P(A*$n),o=a===c,f=a===P(-c),I=a===P(-c*$n);return o&&(A=g),(f||I)&&(A=E),(P(A)&1n)===1n&&(A=P(-A)),{isValid:o||f,value:A}},Pe=c=>cr(Cn(c)),Bn=(...c)=>wn.sha512Async(zt(...c)),pn=(...c)=>gr("sha512")(zt(...c)),ur=c=>{let t=c.slice(0,Mt);t[0]&=248,t[31]&=127,t[31]|=64;let e=c.slice(Mt,Ie),r=Pe(t),s=qt.multiply(r),A=s.toBytes();return{head:t,prefix:e,scalar:r,point:s,pointBytes:A}},Qn=c=>Bn(Dt(c,Mt)).then(ur),yn=c=>ur(pn(Dt(c,Mt))),lr=c=>Qn(c).then(t=>t.pointBytes),dr=c=>yn(c).pointBytes,Ir=c=>Bn(c.hashable).then(c.finish),Er=c=>c.finish(pn(c.hashable)),Cr=(c,t,e)=>{let{pointBytes:r,scalar:s}=c,A=Pe(t),a=qt.multiply(A).toBytes();return{hashable:zt(a,r,e),finish:g=>{let E=cr(A+Pe(g)*s);return Dt(zt(a,fr(E)),Ie)}}},Di=async(c,t)=>{let e=Dt(c),r=await Qn(t),s=await Bn(r.prefix,e);return Ir(Cr(r,s,e))},Ni=(c,t)=>{let e=Dt(c),r=yn(t),s=pn(r.prefix,e);return Er(Cr(r,s,e))},bn={zip215:!0},Br=(c,t,e,r=bn)=>{c=Dt(c,Ie),t=Dt(t),e=Dt(e,Mt);let{zip215:s}=r,A,a,g,E,o=Uint8Array.of();try{A=Jt.fromBytes(e,s),a=Jt.fromBytes(c.slice(0,Mt),s),g=Cn(c.slice(Mt,Ie)),E=qt.multiply(g,!1),o=zt(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:f=>{if(E==null||!s&&A.isSmallOrder())return!1;let I=Pe(f);return a.add(A.multiply(I,!1)).add(E.negate()).clearCofactor().is0()}}},vi=async(c,t,e,r=bn)=>Ir(Br(c,t,e,r)),Ti=(c,t,e,r=bn)=>Er(Br(c,t,e,r)),Fi={bytesToHex:In,hexToBytes:En,concatBytes:zt,mod:P,invert:hr,randomBytes:ar},wn={sha512Async:async c=>{let t=mi(),e=zt(c);return Ke(await t.digest("SHA-512",e.buffer))},sha512:void 0},mn=(c=ar(Mt))=>c,ki=c=>{let t=mn(c),e=dr(t);return{secretKey:t,publicKey:e}},xi=async c=>{let t=mn(c),e=await lr(t);return{secretKey:t,publicKey:e}},Mi={getExtendedPublicKeyAsync:Qn,getExtendedPublicKey:yn,randomSecretKey:mn},Ye=8,Ui=256,pr=Math.ceil(Ui/Ye)+1,un=2**(Ye-1),Gi=()=>{let c=[],t=qt,e=t;for(let r=0;r<pr;r++){e=t,c.push(e);for(let s=1;s<un;s++)e=e.add(t),c.push(e);t=e.double()}return c},zn=(c,t)=>{let e=t.negate();return c?e:t},Li=c=>{let t=Zn||(Zn=Gi()),e=ae,r=qt,s=2**Ye,A=s,a=He(s-1),g=He(Ye);for(let E=0;E<pr;E++){let o=Number(c&a);c>>=g,o>un&&(o-=A,c+=1n);let f=E*un,I=f,u=f+Math.abs(o)-1,p=E%2!==0,y=o<0;o===0?r=r.add(zn(p,t[I])):e=e.add(zn(y,t[u]))}return c!==0n&>("invalid wnaf"),{p:e,f:r}};Yi=c=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,c])}),Ki=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(c,t,e,r){this.blockLen=c,this.outputLen=t,this.padOffset=e,this.isLE=r,this.buffer=new Uint8Array(c),this.view=gn(this.buffer)}update(c){tr(this),Qr(c);let{view:t,buffer:e,blockLen:r}=this,s=c.length;for(let A=0;A<s;){let a=Math.min(r-this.pos,s-A);if(a===r){let g=gn(c);for(;r<=s-A;A+=r)this.process(g,A);continue}e.set(c.subarray(A,A+a),this.pos),this.pos+=a,A+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=c.length,this.roundClean(),this}digestInto(c){tr(this),Hi(c,this),this.finished=!0;let{buffer:t,view:e,blockLen:r,isLE:s}=this,{pos:A}=this;t[A++]=128,ln(this.buffer.subarray(A)),this.padOffset>r-A&&(this.process(e,0),A=0);for(let f=A;f<r;f++)t[f]=0;e.setBigUint64(r-8,BigInt(this.length*8),s),this.process(e,0);let a=gn(c),g=this.outputLen;if(g%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let E=g/4,o=this.get();if(E>o.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<E;f++)a.setUint32(4*f,o[f],s)}digest(){let{buffer:c,outputLen:t}=this;this.digestInto(c);let e=c.slice(0,t);return this.destroy(),e}_cloneInto(c){c||=new this.constructor,c.set(...this.get());let{blockLen:t,buffer:e,length:r,finished:s,destroyed:A,pos:a}=this;return c.destroyed=A,c.finished=s,c.length=r,c.pos=a,r%t&&c.buffer.set(e),c}clone(){return this._cloneInto()}},Qt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Ue=BigInt(4294967295),er=BigInt(32);nr=(c,t,e)=>c>>>e,rr=(c,t,e)=>c<<32-e|t>>>e,Ae=(c,t,e)=>c>>>e|t<<32-e,oe=(c,t,e)=>c<<32-e|t>>>e,Ge=(c,t,e)=>c<<64-e|t>>>e-32,Le=(c,t,e)=>c>>>e-32|t<<64-e;Wi=(c,t,e)=>(c>>>0)+(t>>>0)+(e>>>0),ji=(c,t,e,r)=>t+e+r+(c/2**32|0)|0,Xi=(c,t,e,r)=>(c>>>0)+(t>>>0)+(e>>>0)+(r>>>0),Vi=(c,t,e,r,s)=>t+e+r+s+(c/2**32|0)|0,$i=(c,t,e,r,s)=>(c>>>0)+(t>>>0)+(e>>>0)+(r>>>0)+(s>>>0),Zi=(c,t,e,r,s,A)=>t+e+r+s+A+(c/2**32|0)|0,yr=qi(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(c=>BigInt(c))),zi=yr[0],ts=yr[1],Yt=new Uint32Array(80),Kt=new Uint32Array(80),es=class extends Ki{constructor(c){super(128,c,16,!1)}get(){let{Ah:c,Al:t,Bh:e,Bl:r,Ch:s,Cl:A,Dh:a,Dl:g,Eh:E,El:o,Fh:f,Fl:I,Gh:u,Gl:p,Hh:y,Hl:m}=this;return[c,t,e,r,s,A,a,g,E,o,f,I,u,p,y,m]}set(c,t,e,r,s,A,a,g,E,o,f,I,u,p,y,m){this.Ah=c|0,this.Al=t|0,this.Bh=e|0,this.Bl=r|0,this.Ch=s|0,this.Cl=A|0,this.Dh=a|0,this.Dl=g|0,this.Eh=E|0,this.El=o|0,this.Fh=f|0,this.Fl=I|0,this.Gh=u|0,this.Gl=p|0,this.Hh=y|0,this.Hl=m|0}process(c,t){for(let C=0;C<16;C++,t+=4)Yt[C]=c.getUint32(t),Kt[C]=c.getUint32(t+=4);for(let C=16;C<80;C++){let B=Yt[C-15]|0,S=Kt[C-15]|0,b=Ae(B,S,1)^Ae(B,S,8)^nr(B,S,7),_=oe(B,S,1)^oe(B,S,8)^rr(B,S,7),F=Yt[C-2]|0,w=Kt[C-2]|0,R=Ae(F,w,19)^Ge(F,w,61)^nr(F,w,6),M=oe(F,w,19)^Le(F,w,61)^rr(F,w,6),U=Xi(_,M,Kt[C-7],Kt[C-16]),H=Vi(U,b,R,Yt[C-7],Yt[C-16]);Yt[C]=H|0,Kt[C]=U|0}let{Ah:e,Al:r,Bh:s,Bl:A,Ch:a,Cl:g,Dh:E,Dl:o,Eh:f,El:I,Fh:u,Fl:p,Gh:y,Gl:m,Hh:v,Hl:l}=this;for(let C=0;C<80;C++){let B=Ae(f,I,14)^Ae(f,I,18)^Ge(f,I,41),S=oe(f,I,14)^oe(f,I,18)^Le(f,I,41),b=f&u^~f&y,_=I&p^~I&m,F=$i(l,S,_,ts[C],Kt[C]),w=Zi(F,v,B,b,zi[C],Yt[C]),R=F|0,M=Ae(e,r,28)^Ge(e,r,34)^Ge(e,r,39),U=oe(e,r,28)^Le(e,r,34)^Le(e,r,39),H=e&s^e&a^s&a,K=r&A^r&g^A&g;v=y|0,l=m|0,y=u|0,m=p|0,u=f|0,p=I|0,{h:f,l:I}=Ht(E|0,o|0,w|0,R|0),E=a|0,o=g|0,a=s|0,g=A|0,s=e|0,A=r|0;let q=Wi(R,U,K);e=ji(q,w,M,H),r=q|0}({h:e,l:r}=Ht(this.Ah|0,this.Al|0,e|0,r|0)),{h:s,l:A}=Ht(this.Bh|0,this.Bl|0,s|0,A|0),{h:a,l:g}=Ht(this.Ch|0,this.Cl|0,a|0,g|0),{h:E,l:o}=Ht(this.Dh|0,this.Dl|0,E|0,o|0),{h:f,l:I}=Ht(this.Eh|0,this.El|0,f|0,I|0),{h:u,l:p}=Ht(this.Fh|0,this.Fl|0,u|0,p|0),{h:y,l:m}=Ht(this.Gh|0,this.Gl|0,y|0,m|0),{h:v,l}=Ht(this.Hh|0,this.Hl|0,v|0,l|0),this.set(e,r,s,A,a,g,E,o,f,I,u,p,y,m,v,l)}roundClean(){ln(Yt,Kt)}destroy(){ln(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},ns=class extends es{Ah=Qt[0]|0;Al=Qt[1]|0;Bh=Qt[2]|0;Bl=Qt[3]|0;Ch=Qt[4]|0;Cl=Qt[5]|0;Dh=Qt[6]|0;Dl=Qt[7]|0;Eh=Qt[8]|0;El=Qt[9]|0;Fh=Qt[10]|0;Fl=Qt[11]|0;Gh=Qt[12]|0;Gl=Qt[13]|0;Hh=Qt[14]|0;Hl=Qt[15]|0;constructor(){super(64)}},rs=Pi(()=>new ns,Yi(3)),is=dn;});var jr={};Be(jr,{Point:()=>Lt,etc:()=>Cs,getPublicKey:()=>Pr,getPublicKeyAsync:()=>Hr,hash:()=>gs,hashes:()=>Ln,keygen:()=>Bs,keygenAsync:()=>ps,sign:()=>ds,signAsync:()=>ls,utils:()=>Qs,verify:()=>Es,verifyAsync:()=>Is});var vr,bt,Je,mr,Sr,Sn,_n,ss,Gt,Ee,As,ft,os,as,cs,Nt,Xe,Tr,Fr,vn,Pt,_r,Tn,kr,hs,ee,xr,qe,te,Y,Mr,Ur,Gr,gs,Rn,Dn,Lt,Wt,ce,Lr,Fn,Ut,fs,Rr,us,We,kn,xn,Or,Mn,Un,Hr,Pr,Yr,Kr,Jr,ls,ds,Gn,qr,Is,Es,Cs,Ln,On,Bs,ps,Qs,je,ys,Wr,Nn,bs,Dr,Nr,ws,Xr=Xt(()=>{vr={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:bt,n:Je,Gx:mr,Gy:Sr,a:Sn,d:_n,h:ss}=vr,Gt=32,Ee=64,As=(...c)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...c)},ft=(c="")=>{let t=new Error(c);throw As(t,ft),t},os=c=>typeof c=="bigint",as=c=>typeof c=="string",cs=c=>c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array",Nt=(c,t,e="")=>{let r=cs(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;ft(a+"expected Uint8Array"+g+", got "+E)}return c},Xe=c=>new Uint8Array(c),Tr=c=>Uint8Array.from(c),Fr=(c,t)=>c.toString(16).padStart(t,"0"),vn=c=>Array.from(Nt(c)).map(t=>Fr(t,2)).join(""),Pt={_0:48,_9:57,A:65,F:70,a:97,f:102},_r=c=>{if(c>=Pt._0&&c<=Pt._9)return c-Pt._0;if(c>=Pt.A&&c<=Pt.F)return c-(Pt.A-10);if(c>=Pt.a&&c<=Pt.f)return c-(Pt.a-10)},Tn=c=>{let t="hex invalid";if(!as(c))return ft(t);let e=c.length,r=e/2;if(e%2)return ft(t);let s=Xe(r);for(let A=0,a=0;A<r;A++,a+=2){let g=_r(c.charCodeAt(a)),E=_r(c.charCodeAt(a+1));if(g===void 0||E===void 0)return ft(t);s[A]=g*16+E}return s},kr=()=>globalThis?.crypto,hs=()=>kr()?.subtle??ft("crypto.subtle must be defined, consider polyfill"),ee=(...c)=>{let t=Xe(c.reduce((r,s)=>r+Nt(s).length,0)),e=0;return c.forEach(r=>{t.set(r,e),e+=r.length}),t},xr=(c=Gt)=>kr().getRandomValues(Xe(c)),qe=BigInt,te=(c,t,e,r="bad number: out of range")=>os(c)&&t<=c&&c<e?c:ft(r),Y=(c,t=bt)=>{let e=c%t;return e>=0n?e:t+e},Mr=c=>Y(c,Je),Ur=(c,t)=>{(c===0n||t<=0n)&&ft("no inverse n="+c+" mod="+t);let e=Y(c,t),r=t,s=0n,A=1n,a=1n,g=0n;for(;e!==0n;){let E=r/e,o=r%e,f=s-a*E,I=A-g*E;r=e,e=o,s=a,A=g,a=f,g=I}return r===1n?Y(s,t):ft("no inverse")},Gr=c=>{let t=Ln[c];return typeof t!="function"&&ft("hashes."+c+" not set"),t},gs=c=>Gr("sha512")(c),Rn=c=>c instanceof Lt?c:ft("Point expected"),Dn=2n**256n,Lt=class c{static BASE;static ZERO;X;Y;Z;T;constructor(t,e,r,s){let A=Dn;this.X=te(t,0n,A),this.Y=te(e,0n,A),this.Z=te(r,1n,A),this.T=te(s,0n,A),Object.freeze(this)}static CURVE(){return vr}static fromAffine(t){return new c(t.x,t.y,1n,Y(t.x*t.y))}static fromBytes(t,e=!1){let r=_n,s=Tr(Nt(t,Gt)),A=t[31];s[31]=A&-129;let a=Fn(s);te(a,0n,e?Dn:bt);let E=Y(a*a),o=Y(E-1n),f=Y(r*E+1n),{isValid:I,value:u}=us(o,f);I||ft("bad point: y not sqrt");let p=(u&1n)===1n,y=(A&128)!==0;return!e&&u===0n&&y&&ft("bad point: x==0, isLastByteOdd"),y!==p&&(u=Y(-u)),new c(u,a,1n,Y(u*a))}static fromHex(t,e){return c.fromBytes(Tn(t),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=Sn,e=_n,r=this;if(r.is0())return ft("bad point: ZERO");let{X:s,Y:A,Z:a,T:g}=r,E=Y(s*s),o=Y(A*A),f=Y(a*a),I=Y(f*f),u=Y(E*t),p=Y(f*Y(u+o)),y=Y(I+Y(e*Y(E*o)));if(p!==y)return ft("bad point: equation left != right (1)");let m=Y(s*A),v=Y(a*g);return m!==v?ft("bad point: equation left != right (2)"):this}equals(t){let{X:e,Y:r,Z:s}=this,{X:A,Y:a,Z:g}=Rn(t),E=Y(e*g),o=Y(A*s),f=Y(r*g),I=Y(a*s);return E===o&&f===I}is0(){return this.equals(ce)}negate(){return new c(Y(-this.X),this.Y,this.Z,Y(-this.T))}double(){let{X:t,Y:e,Z:r}=this,s=Sn,A=Y(t*t),a=Y(e*e),g=Y(2n*Y(r*r)),E=Y(s*A),o=t+e,f=Y(Y(o*o)-A-a),I=E+a,u=I-g,p=E-a,y=Y(f*u),m=Y(I*p),v=Y(f*p),l=Y(u*I);return new c(y,m,l,v)}add(t){let{X:e,Y:r,Z:s,T:A}=this,{X:a,Y:g,Z:E,T:o}=Rn(t),f=Sn,I=_n,u=Y(e*a),p=Y(r*g),y=Y(A*I*o),m=Y(s*E),v=Y((e+r)*(a+g)-u-p),l=Y(m-y),C=Y(m+y),B=Y(p-f*u),S=Y(v*l),b=Y(C*B),_=Y(v*B),F=Y(l*C);return new c(S,b,F,_)}subtract(t){return this.add(Rn(t).negate())}multiply(t,e=!0){if(!e&&(t===0n||this.is0()))return ce;if(te(t,1n,Je),t===1n)return this;if(this.equals(Wt))return ws(t).p;let r=ce,s=Wt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?r=r.add(A):e&&(s=s.add(A));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:e,Z:r}=this;if(this.equals(ce))return{x:0n,y:1n};let s=Ur(r,bt);Y(r*s)!==1n&&ft("invalid inverse");let A=Y(t*s),a=Y(e*s);return{x:A,y:a}}toBytes(){let{x:t,y:e}=this.assertValidity().toAffine(),r=Lr(e);return r[31]|=t&1n?128:0,r}toHex(){return vn(this.toBytes())}clearCofactor(){return this.multiply(qe(ss),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Je/2n,!1).double();return Je%2n&&(t=t.add(this)),t.is0()}},Wt=new Lt(mr,Sr,1n,Y(mr*Sr)),ce=new Lt(0n,1n,1n,0n);Lt.BASE=Wt;Lt.ZERO=ce;Lr=c=>Tn(Fr(te(c,0n,Dn),Ee)).reverse(),Fn=c=>qe("0x"+vn(Tr(Nt(c)).reverse())),Ut=(c,t)=>{let e=c;for(;t-- >0n;)e*=e,e%=bt;return e},fs=c=>{let e=c*c%bt*c%bt,r=Ut(e,2n)*e%bt,s=Ut(r,1n)*c%bt,A=Ut(s,5n)*s%bt,a=Ut(A,10n)*A%bt,g=Ut(a,20n)*a%bt,E=Ut(g,40n)*g%bt,o=Ut(E,80n)*E%bt,f=Ut(o,80n)*E%bt,I=Ut(f,10n)*A%bt;return{pow_p_5_8:Ut(I,2n)*c%bt,b2:e}},Rr=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,us=(c,t)=>{let e=Y(t*t*t),r=Y(e*e*t),s=fs(c*r).pow_p_5_8,A=Y(c*e*s),a=Y(t*A*A),g=A,E=Y(A*Rr),o=a===c,f=a===Y(-c),I=a===Y(-c*Rr);return o&&(A=g),(f||I)&&(A=E),(Y(A)&1n)===1n&&(A=Y(-A)),{isValid:o||f,value:A}},We=c=>Mr(Fn(c)),kn=(...c)=>Ln.sha512Async(ee(...c)),xn=(...c)=>Gr("sha512")(ee(...c)),Or=c=>{let t=c.slice(0,Gt);t[0]&=248,t[31]&=127,t[31]|=64;let e=c.slice(Gt,Ee),r=We(t),s=Wt.multiply(r),A=s.toBytes();return{head:t,prefix:e,scalar:r,point:s,pointBytes:A}},Mn=c=>kn(Nt(c,Gt)).then(Or),Un=c=>Or(xn(Nt(c,Gt))),Hr=c=>Mn(c).then(t=>t.pointBytes),Pr=c=>Un(c).pointBytes,Yr=c=>kn(c.hashable).then(c.finish),Kr=c=>c.finish(xn(c.hashable)),Jr=(c,t,e)=>{let{pointBytes:r,scalar:s}=c,A=We(t),a=Wt.multiply(A).toBytes();return{hashable:ee(a,r,e),finish:o=>{let f=Mr(A+We(o)*s);return Nt(ee(a,Lr(f)),Ee)}}},ls=async(c,t)=>{let e=Nt(c),r=await Mn(t),s=await kn(r.prefix,e);return Yr(Jr(r,s,e))},ds=(c,t)=>{let e=Nt(c),r=Un(t),s=xn(r.prefix,e);return Kr(Jr(r,s,e))},Gn={zip215:!0},qr=(c,t,e,r=Gn)=>{c=Nt(c,Ee),t=Nt(t),e=Nt(e,Gt);let{zip215:s}=r,A,a,g,E,o=Uint8Array.of();try{A=Lt.fromBytes(e,s),a=Lt.fromBytes(c.slice(0,Gt),s),g=Fn(c.slice(Gt,Ee)),E=Wt.multiply(g,!1),o=ee(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:I=>{if(E==null||!s&&A.isSmallOrder())return!1;let u=We(I);return a.add(A.multiply(u,!1)).add(E.negate()).clearCofactor().is0()}}},Is=async(c,t,e,r=Gn)=>Yr(qr(c,t,e,r)),Es=(c,t,e,r=Gn)=>Kr(qr(c,t,e,r)),Cs={bytesToHex:vn,hexToBytes:Tn,concatBytes:ee,mod:Y,invert:Ur,randomBytes:xr},Ln={sha512Async:async c=>{let t=hs(),e=ee(c);return Xe(await t.digest("SHA-512",e.buffer))},sha512:void 0},On=(c=xr(Gt))=>c,Bs=c=>{let t=On(c),e=Pr(t);return{secretKey:t,publicKey:e}},ps=async c=>{let t=On(c),e=await Hr(t);return{secretKey:t,publicKey:e}},Qs={getExtendedPublicKeyAsync:Mn,getExtendedPublicKey:Un,randomSecretKey:On},je=8,ys=256,Wr=Math.ceil(ys/je)+1,Nn=2**(je-1),bs=()=>{let c=[],t=Wt,e=t;for(let r=0;r<Wr;r++){e=t,c.push(e);for(let s=1;s<Nn;s++)e=e.add(t),c.push(e);t=e.double()}return c},Nr=(c,t)=>{let e=t.negate();return c?e:t},ws=c=>{let t=Dr||(Dr=bs()),e=ce,r=Wt,s=2**je,A=s,a=qe(s-1),g=qe(je);for(let E=0;E<Wr;E++){let o=Number(c&a);c>>=g,o>Nn&&(o-=A,c+=1n);let f=E*Nn,I=f,u=f+Math.abs(o)-1,p=E%2!==0,y=o<0;o===0?r=r.add(Nr(p,t[I])):e=e.add(Nr(y,t[u]))}return c!==0n&&ft("invalid wnaf"),{p:e,f:r}}});var Vr={};Be(Vr,{default:()=>Ss});var ms,Ss,$r=Xt(()=>{ms=(()=>{var c,t,e={773(A,a,g){var E,o=typeof self<"u"&&self.Module!==void 0?self.Module:{},f={};for(E in o)o.hasOwnProperty(E)&&(f[E]=o[E]);var I,u,p,y,m=[];I=typeof window=="object",u=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!I&&!p&&!u;var v,l,C,B,S,b="";p?(b=u?g(967).dirname(b)+"/":"//",v=function(k,G){return B||(B=g(145)),S||(S=g(967)),k=S.normalize(k),B.readFileSync(k,G?null:"utf8")},C=function(k){var G=v(k,!0);return G.buffer||(G=new Uint8Array(G)),M(G.buffer),G},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),A.exports=o,process.on("uncaughtException",function(k){if(!(k instanceof x))throw k}),process.on("unhandledRejection",X),o.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read<"u"&&(v=function(k){return read(k)}),C=function(k){var G;return typeof readbuffer=="function"?new Uint8Array(readbuffer(k)):(M(typeof(G=read(k,"binary"))=="object"),G)},typeof scriptArgs<"u"?m=scriptArgs:arguments!==void 0&&(m=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(I||u)&&(u?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),b=b.indexOf("blob:")!==0?b.substr(0,b.lastIndexOf("/")+1):"",v=function(k){var G=new XMLHttpRequest;return G.open("GET",k,!1),G.send(null),G.responseText},u&&(C=function(k){var G=new XMLHttpRequest;return G.open("GET",k,!1),G.responseType="arraybuffer",G.send(null),new Uint8Array(G.response)}),l=function(k,G,n){var i=new XMLHttpRequest;i.open("GET",k,!0),i.responseType="arraybuffer",i.onload=function(){i.status==200||i.status==0&&i.response?G(i.response):n()},i.onerror=n,i.send(null)}),o.print||console.log.bind(console);var _,F,w=o.printErr||console.warn.bind(console);for(E in f)f.hasOwnProperty(E)&&(o[E]=f[E]);f=null,o.arguments&&(m=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(_=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&X("no native wasm support detected");var R=!1;function M(k,G){k||X("Assertion failed: "+G)}var U,H,K=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function q(k){U=k,o.HEAP8=new Int8Array(k),o.HEAP16=new Int16Array(k),o.HEAP32=new Int32Array(k),o.HEAPU8=H=new Uint8Array(k),o.HEAPU16=new Uint16Array(k),o.HEAPU32=new Uint32Array(k),o.HEAPF32=new Float32Array(k),o.HEAPF64=new Float64Array(k)}o.INITIAL_MEMORY;var $,st=[],J=[],Rt=[],at=0,ut=null,j=null;function X(k){throw o.onAbort&&o.onAbort(k),w(k+=""),R=!0,k="abort("+k+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(k)}function Et(k){return k.startsWith("data:application/octet-stream;base64,")}function At(k){return k.startsWith("file://")}o.preloadedImages={},o.preloadedAudios={};var wt,nt="argon2.wasm";function vt(k){try{if(k==nt&&_)return new Uint8Array(_);if(C)return C(k);throw"both async and sync fetching of the wasm failed"}catch(G){X(G)}}function St(k){for(;k.length>0;){var G=k.shift();if(typeof G!="function"){var n=G.func;typeof n=="number"?G.arg===void 0?$.get(n)():$.get(n)(G.arg):n(G.arg===void 0?null:G.arg)}else G(o)}}function jt(k){try{return F.grow(k-U.byteLength+65535>>>16),q(F.buffer),1}catch{}}Et(nt)||(wt=nt,nt=o.locateFile?o.locateFile(wt,b):b+wt);var Tt,Ct={a:function(k,G,n){H.copyWithin(k,G,G+n)},b:function(k){var G,n=H.length;if((k>>>=0)>2147418112)return!1;for(var i=1;i<=4;i*=2){var h=n*(1+.2/i);if(h=Math.min(h,k+100663296),jt(Math.min(2147418112,((G=Math.max(k,h))%65536>0&&(G+=65536-G%65536),G))))return!0}return!1}},mt=((function(){var k={a:Ct};function G(h,Q){var D,T=h.exports;o.asm=T,q((F=o.asm.c).buffer),$=o.asm.k,D=o.asm.d,J.unshift(D),(function(L){if(at--,o.monitorRunDependencies&&o.monitorRunDependencies(at),at==0&&(ut!==null&&(clearInterval(ut),ut=null),j)){var W=j;j=null,W()}})()}function n(h){G(h.instance)}function i(h){return(function(){if(!_&&(I||u)){if(typeof fetch=="function"&&!At(nt))return fetch(nt,{credentials:"same-origin"}).then(function(Q){if(!Q.ok)throw"failed to load wasm binary file at '"+nt+"'";return Q.arrayBuffer()}).catch(function(){return vt(nt)});if(l)return new Promise(function(Q,D){l(nt,function(T){Q(new Uint8Array(T))},D)})}return Promise.resolve().then(function(){return vt(nt)})})().then(function(Q){return WebAssembly.instantiate(Q,k)}).then(h,function(Q){w("failed to asynchronously prepare wasm: "+Q),X(Q)})}if(at++,o.monitorRunDependencies&&o.monitorRunDependencies(at),o.instantiateWasm)try{return o.instantiateWasm(k,G)}catch(h){return w("Module.instantiateWasm callback failed with error: "+h),!1}_||typeof WebAssembly.instantiateStreaming!="function"||Et(nt)||At(nt)||typeof fetch!="function"?i(n):fetch(nt,{credentials:"same-origin"}).then(function(h){return WebAssembly.instantiateStreaming(h,k).then(n,function(Q){return w("wasm streaming compile failed: "+Q),w("falling back to ArrayBuffer instantiation"),i(n)})})})(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.d).apply(null,arguments)},o._argon2_hash=function(){return(o._argon2_hash=o.asm.e).apply(null,arguments)},o._malloc=function(){return(mt=o._malloc=o.asm.f).apply(null,arguments)}),N=(o._free=function(){return(o._free=o.asm.g).apply(null,arguments)},o._argon2_verify=function(){return(o._argon2_verify=o.asm.h).apply(null,arguments)},o._argon2_error_message=function(){return(o._argon2_error_message=o.asm.i).apply(null,arguments)},o._argon2_encodedlen=function(){return(o._argon2_encodedlen=o.asm.j).apply(null,arguments)},o._argon2_hash_ext=function(){return(o._argon2_hash_ext=o.asm.l).apply(null,arguments)},o._argon2_verify_ext=function(){return(o._argon2_verify_ext=o.asm.m).apply(null,arguments)},o.stackAlloc=function(){return(N=o.stackAlloc=o.asm.n).apply(null,arguments)});function x(k){this.name="ExitStatus",this.message="Program terminated with exit("+k+")",this.status=k}function O(k){function G(){Tt||(Tt=!0,o.calledRun=!0,R||(St(J),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){var n;if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)n=o.postRun.shift(),Rt.unshift(n);St(Rt)})()))}k=k||m,at>0||((function(){var n;if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)n=o.preRun.shift(),st.unshift(n);St(st)})(),at>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),G()},1)):G()))}if(o.allocate=function(k,G){var n;return n=G==1?N(k.length):mt(k.length),k.subarray||k.slice?H.set(k,n):H.set(new Uint8Array(k),n),n},o.UTF8ToString=function(k,G){return k?(function(n,i,h){for(var Q=i+h,D=i;n[D]&&!(D>=Q);)++D;if(D-i>16&&n.subarray&&K)return K.decode(n.subarray(i,D));for(var T="";i<D;){var L=n[i++];if(128&L){var W=63&n[i++];if((224&L)!=192){var rt=63&n[i++];if((L=(240&L)==224?(15&L)<<12|W<<6|rt:(7&L)<<18|W<<12|rt<<6|63&n[i++])<65536)T+=String.fromCharCode(L);else{var Z=L-65536;T+=String.fromCharCode(55296|Z>>10,56320|1023&Z)}}else T+=String.fromCharCode((31&L)<<6|W)}else T+=String.fromCharCode(L)}return T})(H,k,G):""},o.ALLOC_NORMAL=0,j=function k(){Tt||O(),Tt||(j=k)},o.run=O,o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();O(),A.exports=o,o.unloadRuntime=function(){typeof self<"u"&&delete self.Module,o=F=$=U=H=void 0,delete A.exports}},631:function(A,a,g){var E,o;typeof self<"u",(o=typeof(E=function(){let f=typeof self<"u"?self:this,I={Argon2d:0,Argon2i:1,Argon2id:2};function u(l){if(u._promise)return u._promise;if(u._module)return Promise.resolve(u._module);let C;return C=f.process&&f.process.versions&&f.process.versions.node?p().then(B=>new Promise(S=>{B.postRun=()=>S(B)})):(f.loadArgon2WasmBinary?f.loadArgon2WasmBinary():Promise.resolve(g(721)).then(B=>(function(S){let b=atob(S),_=new Uint8Array(new ArrayBuffer(b.length));for(let F=0;F<b.length;F++)_[F]=b.charCodeAt(F);return _})(B))).then(B=>{var S,b;return S=B,b=l?(function(_){let F=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*_/65536),256)+256,F),maximum:F})})(l):void 0,new Promise(_=>(f.Module={wasmBinary:S,wasmMemory:b,postRun(){_(Module)}},p()))}),u._promise=C,C.then(B=>(u._module=B,delete u._promise,B))}function p(){return f.loadArgon2WasmModule?f.loadArgon2WasmModule():Promise.resolve(g(773))}function y(l,C){return l.allocate(C,"i8",l.ALLOC_NORMAL)}function m(l,C){return y(l,new Uint8Array([...C,0]))}function v(l){if(typeof l!="string")return l;if(typeof TextEncoder=="function")return new TextEncoder().encode(l);if(typeof Buffer=="function")return Buffer.from(l);throw Error("Don't know how to encode UTF8")}return{ArgonType:I,hash:function(l){let C=l.mem||1024;return u(C).then(B=>{let S=l.time||1,b=l.parallelism||1,_=v(l.pass),F=m(B,_),w=_.length,R=v(l.salt),M=m(B,R),U=R.length,H=l.type||I.Argon2d,K=B.allocate(Array(l.hashLen||24),"i8",B.ALLOC_NORMAL),q=l.secret?y(B,l.secret):0,$=l.secret?l.secret.byteLength:0,st=l.ad?y(B,l.ad):0,J=l.ad?l.ad.byteLength:0,Rt=l.hashLen||24,at=B._argon2_encodedlen(S,C,b,U,Rt,H),ut=B.allocate(Array(at+1),"i8",B.ALLOC_NORMAL),j,X,Et;try{X=B._argon2_hash_ext(S,C,b,F,w,M,U,K,Rt,ut,at,H,q,$,st,J,19)}catch(At){j=At}if(X!==0||j){try{j||(j=B.UTF8ToString(B._argon2_error_message(X)))}catch{}Et={message:j,code:X}}else{let At="",wt=new Uint8Array(Rt);for(let nt=0;nt<Rt;nt++){let vt=B.HEAP8[K+nt];wt[nt]=vt,At+=("0"+(255&vt).toString(16)).slice(-2)}Et={hash:wt,hashHex:At,encoded:B.UTF8ToString(ut)}}try{B._free(F),B._free(M),B._free(K),B._free(ut),st&&B._free(st),q&&B._free(q)}catch{}if(j)throw Et;return Et})},verify:function(l){return u().then(C=>{let B=v(l.pass),S=m(C,B),b=B.length,_=l.secret?y(C,l.secret):0,F=l.secret?l.secret.byteLength:0,w=l.ad?y(C,l.ad):0,R=l.ad?l.ad.byteLength:0,M=m(C,v(l.encoded)),U,H,K,q=l.type;if(q===void 0){let $=l.encoded.split("$")[1];$&&(q=I[$=$.replace("a","A")]||I.Argon2d)}try{H=C._argon2_verify_ext(M,S,b,_,F,w,R,q)}catch($){U=$}if(H||U){try{U||(U=C.UTF8ToString(C._argon2_error_message(H)))}catch{}K={message:U,code:H}}try{C._free(S),C._free(M)}catch{}if(U)throw K;return K})},unloadRuntime:function(){u._module&&(u._module.unloadRuntime(),delete u._promise,delete u._module)}}})=="function"?E.apply(a,[]):E)===void 0||(A.exports=o)},721:function(A,a){A.exports="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DwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCARIAw2AiAgESAGNgIcIBEgBTYCGCARIAQ2AhQgESADNgIQIBEgCDYCDCARIBI2AgggESAQNgJAAkAgEUEIaiALEB4iEwRAIBIgCBAEDAELIAcEQCAHIBIgCBAFGgsCQCAJRSAKRXINACAJIAogEUEIaiALECpFDQAgEiAIEAQgCSAKEARBYSETDAELIBIgCBAEQQAhEwsgEhAICyARQdAAaiQAIBMLDQAgAEHwARAEIAAQJQspACAFEB8QCiAAEBRqIAEQFGogAhAUaiADECdqIAQQJ2pBExAUakEQagsfACAAQSNqIgBBI00EQCAAQQJ0QewWaigCAA8LQYsTC74BAQR/IwBB0ABrIgQkAAJAIABFBEBBYCEADAELIAQgABAKIgU2AgwgBCAFNgIcIAQgBRAJIgY2AhggBCAFEAkiBzYCCEEAIQUCQAJAIAZFIAdFcg0AIAQgAjYCFCAEIAE2AhAgBEEIaiAAIAMQLSIADQEgBCgCCCEFIAQgBCgCDBAJIgA2AgggAEUNACAEQQhqIAUgAxAwIQAMAQtBaiEACyAEKAIYEAggBCgCCBAIIAUQCAsgBEHQAGokACAAC4ICAQN/IwBB0ABrIg0kAEF+IQ8CQCAIQQRJDQAgCBAJIg5FBEBBaiEPDAELIA1CADcDKCANQgA3AyAgDSAGNgIcIA0gBTYCGCANIAQ2AhQgDSADNgIQIA0gCDYCDCANIA42AgggDUEANgJMIA1CADcCRCANIAI2AjwgDSACNgI4IA0gATYCNCANIAA2AjAgDSAMNgJAAkAgDUEIaiALEB4iDwRAIA4gCBAEDAELIAcEQCAHIA4gCBAFGgsCQCAJRSAKRXINACAJIAogDUEIaiALECpFDQAgDiAIEAQgCSAKEARBYSEPDAELIA4gCBAEQQAhDwsgDhAICyANQdAAaiQAIA8LYgEDfyABRSAARXIEf0F/BSAAQUBrQQBBsAEQCxogAEGACEHAABAFGgNAIAAgAkEDdCIDaiIEIAEgA2opAAAgBCkDAIU3AwAgAkEBaiICQQhHDQALIAAgAS0AADYC5AFBAAsLC/ISFABBgAgLuQUIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAAA4AAAAKAAAABAAAAAgAAAAJAAAADwAAAA0AAAAGAAAAAQAAAAwAAAAAAAAAAgAAAAsAAAAHAAAABQAAAAMAAAALAAAACAAAAAwAAAAAAAAABQAAAAIAAAAPAAAADQAAAAoAAAAOAAAAAwAAAAYAAAAHAAAAAQAAAAkAAAAEAAAABwAAAAkAAAADAAAAAQAAAA0AAAAMAAAACwAAAA4AAAACAAAABgAAAAUAAAAKAAAABAAAAAAAAAAPAAAACAAAAAkAAAAAAAAABQAAAAcAAAACAAAABAAAAAoAAAAPAAAADgAAAAEAAAALAAAADAAAAAYAAAAIAAAAAwAAAA0AAAACAAAADAAAAAYAAAAKAAAAAAAAAAsAAAAIAAAAAwAAAAQAAAANAAAABwAAAAUAAAAPAAAADgAAAAEAAAAJAAAADAAAAAUAAAABAAAADwAAAA4AAAANAAAABAAAAAoAAAAAAAAABwAAAAYAAAADAAAACQAAAAIAAAAIAAAACwAAAA0AAAALAAAABwAAAA4AAAAMAAAAAQAAAAMAAAAJAAAABQAAAAAAAAAPAAAABAAAAAgAAAAGAAAAAgAAAAoAAAAGAAAADwAAAA4AAAAJAAAACwAAAAMAAAAAAAAACAAAAAwAAAACAAAADQAAAAcAAAABAAAABAAAAAoAAAAFAAAACgAAAAIAAAAIAAAABAAAAAcAAAAGAAAAAQAAAAUAAAAPAAAACwAAAAkAAAAOAAAAAwAAAAwAAAANAEHEDQu5CgEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAAA4AAAAKAAAABAAAAAgAAAAJAAAADwAAAA0AAAAGAAAAAQAAAAwAAAAAAAAAAgAAAAsAAAAHAAAABQAAAAMAAAAtKyAgIDBYMHgAJWx1AE91dHB1dCBpcyB0b28gc2hvcnQAU2FsdCBpcyB0b28gc2hvcnQAU2VjcmV0IGlzIHRvbyBzaG9ydABQYXNzd29yZCBpcyB0b28gc2hvcnQAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBzaG9ydABTb21lIG9mIGVuY29kZWQgcGFyYW1ldGVycyBhcmUgdG9vIGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},r={};function s(A){var a=r[A];if(a!==void 0)return a.exports;var g=r[A]={exports:{}};return e[A].call(g.exports,g,g.exports,s),g.exports}return s(631)})(),Ss=ms});var ze=class c{verbose;mockMode;static#e=null;#t=null;#n=!1;#r=0;#i=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(t=0,e=!1){if(this.verbose=t,this.mockMode=e,c.#e)return c.#e;c.#e=this}static get instance(){return c.#e||new c}static get time(){return c.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(e=>setTimeout(e,50));return this.time}this.#n=!0;try{let e=await this.#s();return e.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#o(e),this.#r=Date.now(),e.length<this.#i.length&&setTimeout(()=>this.#a(),100),this.time)}catch(e){return console.error("[Clock] Sync failed:",e),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#r,age:this.#r?Date.now()-this.#r:null}}async#s(){let t=this.#i.map(s=>this.#A(s)),e=await Promise.allSettled(t),r=[];for(let s of e)s.status==="fulfilled"&&r.push(s.value);return r}async#A(t){let e=new AbortController,r=setTimeout(()=>e.abort(),2e3);try{let s=Date.now(),A=await fetch(`https://${t}`,{method:"HEAD",signal:e.signal,cache:"no-cache"}),a=(Date.now()-s)/2;if(!A.ok)throw new Error(`HTTP ${A.status}`);let g=new Date(A.headers.get("date")).getTime();if(isNaN(g))throw new Error("Invalid date header");return{source:t,serverTime:g+a,localTime:Date.now(),latency:a*2}}finally{clearTimeout(r)}}#o(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((s,A)=>s.latency-A.latency);let e=[];for(let s of t)e.push(s.serverTime-s.localTime);e.sort((s,A)=>s-A);let r=Math.floor(e.length/2);return e.length%2===0?(e[r-1]+e[r])/2:e[r]}async#a(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let e=this.#o(t);Math.abs(e-this.#t)>100&&(this.#t=e)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},et=ze.instance;await _t();await _t();var gi=1e4,fi=1e6,ui=1e5,li=36e5,It={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},Qe=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,e,r=0){this.id=t,this.cryptoCodex=e,this.verbose=r}tick(){for(let t in this.trustBalances){let e=this.trustBalances[t];e!==0&&(e=e<0?Math.min(0,e+1e3):Math.max(0,e-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=gi,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,e){if(It[e])return this.adjustTrust(t,It[e])}adjustTrust(t,e,r="na"){t!==this.id&&(e&&(this.trustBalances[t]=Math.min(li,(this.trustBalances[t]||0)+e)),e&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${e}ms (${r}). Updated: ${this.trustBalances[t]}ms.`,it.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,it.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return ct.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,e,r){this.bytesCounters[r][t]||(this.bytesCounters[r][t]=0),this.bytesCounters[r][t]+=e;let[s,A]=r==="gossip"?[ui,It.GOSSIP_FLOOD]:[fi,It.UNICAST_FLOOD];return this.bytesCounters[r][t]<s?!0:this.adjustTrust(t,A,`Message ${r} flood detected`)}async digestMessage(t,e,r,s=.01){let{senderId:A,pubkey:a,topic:g,expectedEnd:E}=e;if(!(!await this.#e(t,e,r)||!this.#t(t,g?"gossip":"unicast",r,E)||!(g?this.#n(t,e):this.#r(t,e)))&&!(this.isBanished(t)||this.isBanished(A)))return this.trustBalances[A]>It.VALID_POW||Math.random()<s&&await this.#i(A,a),!0}async#e(t,e,r){try{let{pubkey:s,signature:A,signatureStart:a}=e,g=r.subarray(0,a);if(!await this.cryptoCodex.verifySignature(s,A,g))throw new Error("Gossip signature invalid");return this.adjustTrust(t,It.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(s){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${s.stack}`,it.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${e}`,it.ARBITER)}this.adjustTrust(t,It.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,e,r,s){if(!s||r.length===s)return!0;this.adjustTrust(t,It.WRONG_LENGTH,`${e} message length mismatch`)}#n(t,e){if(e.HOPS<=(dt.HOPS[e.topic]||dt.HOPS.default))return!0;this.adjustTrust(t,It.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,e){if(e.route.length<=ht.MAX_HOPS)return!0;this.adjustTrust(t,It.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(t,e){await this.cryptoCodex.pubkeyDifficultyCheck(e)?this.adjustTrust(t,It.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,It.WRONG_POW,"Gossip PoW invalid")}};await _t();var di;function ye(c,t=0){let e=typeof c=="string"?(di??=new TextEncoder).encode(c):c,r=e,s=t+374761393&4294967295,A=0;if(r.length>=16){let g=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],E=e,o=E.length-16,f=0;for(A=0;(A&4294967280)<=o;A+=4){let I=A,u=E[I+0]+(E[I+1]<<8),p=E[I+2]+(E[I+3]<<8),y=u*2246822519+(p*2246822519<<16),m=g[f]+y&4294967295;m=m<<13|m>>>19;let v=m&65535,l=m>>>16;g[f]=v*2654435761+(l*2654435761<<16)&4294967295,f=f+1&3}s=(g[0]<<1|g[0]>>>31)+(g[1]<<7|g[1]>>>25)+(g[2]<<12|g[2]>>>20)+(g[3]<<18|g[3]>>>14)&4294967295}s=s+e.length&4294967295;let a=e.length-4;for(;A<=a;A+=4){let g=A,E=r[g+0]+(r[g+1]<<8),o=r[g+2]+(r[g+3]<<8),f=E*3266489917+(o*3266489917<<16);s=s+f&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;A<r.length;++A){let g=r[A];s=s+g*374761393,s=s<<11|s>>>21,s=(s&65535)*2654435761+((s>>>16)*2654435761<<16)&4294967295}return s=s^s>>>15,s=((s&65535)*2246822519&4294967295)+((s>>>16)*2246822519<<16),s=s^s>>>13,s=((s&65535)*3266489917&4294967295)+((s>>>16)*3266489917<<16),s=s^s>>>16,s<0?s+4294967296:s}async function Ii(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var qn=await Ii(),be=class{id;verbose;stunUrls;constructor(t,e,r=0){this.id=t,this.verbose=r,this.stunUrls=e}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=lt.MAX_SDP_OFFERS;offers={};tick(){let t=et.time;for(let A in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[A];t<A||(a?.destroy(),delete this.offerInstanceByExpiration[A],this.creatingOffer=!1)}for(let A in this.offers){let a=this.offers[A];if(a.offererInstance.destroyed){delete this.offers[A];continue}if(a.isUsed){delete this.offers[A];continue}a.timestamp+lt.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[A])}let e=0;for(let A in this.offers){e++;let a=this.offers[A];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let g=a.answers.filter(f=>!f.used);if(!g.length)continue;let E=g.reduce((f,I)=>f.timestamp>I.timestamp?f:I);if(!E)continue;E.used=!0;let o=t-E.timestamp;o>ct.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(E.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${E.peerId} for offer ${A} (received since ${o} ms)`))}if(this.creatingOffer||e>=this.offersToCreate)return;this.creatingOffer=!0;let r=t+(lt.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(r);this.offerInstanceByExpiration[r]=s}#e(t){let e=lt.ICE_COMPLETE_TIMEOUT||1e3,r=new lt.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:e,wrtc:qn,config:{iceServers:this.stunUrls}});return r.on("error",s=>this.#n(s)),r.on("signal",s=>{let{candidate:A,type:a}=s;if(!s||A)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(s));if(a!=="offer")throw new Error("Unexpected signal type from offerer instance: "+a);delete this.offerInstanceByExpiration[t];let g=ye(JSON.stringify(s));r.on("connect",()=>{this.offers[g]&&(this.offers[g].isUsed=!0),this.onConnect(void 0,r)}),this.offers[g]={timestamp:et.time,sentCounter:0,signal:s,offererInstance:r,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),r}#t(t,e="",r=2,s="includes"){return s[0]==="i"&&!t.message.includes(e)?!1:t.message.startsWith(e)?(this.verbose>=r&&console.info(`%cOfferManager => ${t.message}`,it.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,e=!0){let r=null,s=null,A=null;for(let a in this.offers){let g=this.offers[a],{isUsed:E,sentCounter:o,signal:f,timestamp:I}=g;if(E||o>t)continue;let u=et.time-I;if(!(e&&u>lt.SDP_OFFER_EXPIRATION/2)&&!(A&&u>A)){r=g,s=a,A=u;break}}return{offerHash:s,readyOffer:r,since:A}}addSignalAnswer(t,e,r,s){!e||e.type!=="answer"||!r||!this.offers[r]||this.offers[r].answerers[t]||(this.offers[r].answerers[t]=!0,this.offers[r].answers.push({peerId:t,signal:e,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${r}`))}getTransportInstanceForSignal(t,e,r){try{if(!e||!e.type||!e.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:A}=e;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!A)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!A)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let E=r?this.offers[r]?.offererInstance:null;if(!E)throw new Error("No pending offer found for the given offer hash to accept the answer");return E}let a=lt.ICE_COMPLETE_TIMEOUT||1e3,g=new lt.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:qn,config:{iceServers:this.stunUrls}});return g.on("error",E=>this.#n(E)),g.on("signal",E=>this.onSignalAnswer(t,E,r)),g.on("connect",()=>this.onConnect(t,g)),g}catch(s){if(s.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&s.message.startsWith("No pending offer found"))return console.info(`%c${s.message}`,it.PEER_STORE);this.verbose>0&&console.error(s.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await _t();var{SANDBOX:js,ICE_CANDIDATE_EMITTER:Xs,TEST_WS_EVENT_MANAGER:Vs}=Bt.ENABLED?await De().then(()=>Re):{},sn=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,e=et.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=e}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},Vt=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,e,r,s=!1){this.peerId=t,this.transportInstance=e,this.isWebSocket=s,this.direction=r,this.pendingUntil=et.time+ct.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=et.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?et.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},Ne=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;kick={};callbacks={connect:[(t,e)=>this.#e(t,e)],disconnect:[(t,e)=>this.#t(t,e)],signal:[],data:[]};constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.offerManager=r,this.arbiter=s,this.verbose=A,this.offerManager.onSignalAnswer=(a,g,E)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let o of this.callbacks.signal)o(a,{signal:g,offerHash:E})},this.offerManager.onConnect=(a,g)=>{if(this.isDestroy)return g?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let E=a;if(g.on("close",()=>{if(E)for(let o of this.callbacks.disconnect)o(E,g.initiator?"out":"in")}),g.on("data",o=>{if(E)for(let f of this.callbacks.data)f(E,o);else{let f=new Uint8Array(o);if(f[0]>127)return;let{route:I,type:u,neighborsList:p}=e.readUnicastMessage(f)||{};if(u!=="handshake"||I.length!==2||I[1]!==this.id)return;E=I[0],this.digestPeerNeighbors(E,p);for(let y of this.callbacks.connect)y(E,"out")}}),a)for(let o of this.callbacks.connect)o(a,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,e){if(!this.connecting[t]?.[e])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,it.PEER_STORE):null;let r=this.connecting[t][e];if(this.#n(t,"connecting",e),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,it.PEER_STORE),r.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,it.PEER_STORE),r.close();r.setConnected(),this.connected[t]=r,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,e){this.#n(t,"connected",e)}#n(t,e="both",r="both"){if(!t&&t===this.id)return;let[s,A]=[this.connecting[t],this.connected[t]];if(!s&&!A||(e!=="connecting"&&(A?.direction===r||r==="both")&&(A?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),e==="connected"))return;let a=r==="both"?["out","in"]:[r];for(let g of a)delete s?.[g];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",e="tutu"){for(let r of[t,e])this.known[r]||(this.known[r]=new sn,this.knownCount++),this.known[r].setNeighbor(r===t?e:t)}#i(t="toto",e="tutu"){for(let r of[t,e])this.known[r]&&(this.known[r].unsetNeighbor(r===t?e:t),!(this.known[r].connectionsCount>0)&&(delete this.known[r],this.knownCount--))}cleanupExpired(t=!0){let e=et.time;for(let r of["in","out"])for(let s in this.connecting){if(!this.connecting[s][r])continue;let A=this.connected[s]?1e4:0;this.connecting[s][r].pendingUntil+A>e||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===r&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired (already connected WARNING!).`,"color: white;"),this.connecting[s]?.out?.isWebSocket&&this.connecting[s].out.close(),this.connecting[s]?.in?.close(),this.#n(s,"connecting",r))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,e){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(e)}getUpdatedPeerConnectionsCount(t,e=!0){let r=et.time,s=0,A=this.known[t]?.neighbors||{};for(let a in A){if(a!==this.id&&r-A[a]>ot.PEER_LINK_EXPIRATION){this.#i(t,a);continue}e?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,e,r){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let s=e.type==="offer"?"in":"out";if(this.connecting[t]?.[s])return;let A=this.offerManager.getTransportInstanceForSignal(t,e,r);return A?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new Vt(t,A,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,e,r,s=et.time){let A=this.connecting[t]?.[e.type==="offer"?"in":"out"];try{if(A?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);e.type==="answer"?this.offerManager.addSignalAnswer(t,e,r,s):A.transportInstance.signal(e)}catch(a){console.error(`Error signaling ${e?.type} for ${t}:`,a.stack)}}kickPeer(t,e=6e4,r){e&&(this.kick[t]=et.time+e),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${e/1e3}s. ${r?"| Reason: "+r:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>et.time}digestValidRoute(t=[]){for(let e=1;e<t.length;e++)this.#r(t[e-1],t[e])}digestPeerNeighbors(t,e=[]){if(!(!t||!Array.isArray(e))){for(let r in this.known[t]?.neighbors||{})e.includes(r)||this.#i(t,r);for(let r of e)this.#r(t,r)}}destroy(){this.isDestroy=!0;for(let[t,e]of Object.entries(this.connected))this.#n(t),e.close();for(let[t,e]of Object.entries(this.connecting))this.#n(t),e.in?.close(),e.out?.close();this.offerManager.destroy()}};await _t();var ve=class{cache={};peerStore;constructor(t,e){this.id=t,this.peerStore=e}buildRoutes(t,e=5,r=3,s=1728,A=!0,a=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let g=this.#r(t,r,s,a);if(!g.success)return{routes:[],success:!1,nodesExplored:g.nodesExplored};let o=this.#t(g.paths,A).slice(0,e);return this.cache[t]=o,{routes:o,success:!0,nodesExplored:g.nodesExplored}}#e(t){for(let{path:e}of t)for(let r=1;r<e.length;r++){let s=e[r-1],A=e[r];if(s===this.id){if(!this.peerStore.connected[A])return!1}else if(!this.peerStore.known[s]?.neighbors?.[A])return!1}return!0}#t(t,e){let r=[];for(let s of t)r.push({path:s,hops:s.length-1});return e&&r.sort((s,A)=>s.hops-A.hops),r}#n(t){let e=[],r=this.peerStore.neighborsList,s=[...Array(r.length).keys()].sort(()=>Math.random()-.5);for(let A of s)e.push({path:[this.id,r[A],t],hops:0,score:0});return e.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:e,success:"blind",nodesExplored:e.length}}#r(t,e,r,s){let A=[],a=0,g=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],E=new Map;E.set(this.id,[this.id]);let o=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],f=new Map;f.set(t,[t]);let I=Math.ceil(e/2);for(;(g.length>0||o.length>0)&&a<r;){if(g.length>0){let u=this.#i(g,E,f,I);for(let p of u){let y=this.#s(E.get(p),f.get(p));if(A.push(y),!(y.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}if(o.length>0){let u=this.#i(o,f,E,I);for(let p of u){let y=this.#s(E.get(p),f.get(p));if(A.push(y),!(y.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}}return{success:A.length>0,paths:A,nodesExplored:a}}#i(t,e,r,s){if(t.length===0)return[];let{node:A,path:a,pathSet:g,depth:E}=t.shift();if(E>=s)return[];let o=[];function f(I){if(g.has(I))return;let u=E+1;if(r.has(I)&&o.push(I),e.has(I))return;let p=[...a,I],y=new Set(g).add(I);e.set(I,p),t.push({node:I,path:p,pathSet:y,depth:u})}if(A===this.id)for(let I of this.peerStore.neighborsList)f(I);else for(let I in this.peerStore.known[A]?.neighbors||{})f(I);return o}#s(t,e){let r=t.length+e.length-1,s=new Array(r),A=0;for(let a of t)s[A++]=a;for(let a=e.length-2;a>=0;a--)s[A++]=e[a];return s}};var{SANDBOX:nA,ICE_CANDIDATE_EMITTER:rA,TEST_WS_EVENT_MANAGER:iA}=Bt.ENABLED?await De().then(()=>Re):{},Ei=ve,de=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,r,s,A,a,g,E,o){this.type=t,this.timestamp=e,this.neighborsList=r,this.route=s,this.pubkey=A,this.data=a,this.signature=g,this.signatureStart=E,this.expectedEnd=o}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let e=this.newRoute||this.route,r=[],s=-1;for(let o=0;o<e.length;o++)if(r.push(e[o]),e[o]===t){s=o;break}let A=e[0],a=e[e.length-1],g=s>0?e[s-1]:null,E=s!==-1?e[s+1]:null;return{traveledRoute:r,selfPosition:s,senderId:A,targetId:a,prevId:g,nextId:E,routeLength:e.length}}},Te=class extends de{rerouterPubkey;newRoute;rerouterSignature;constructor(t,e,r,s,A,a,g,E,o){super(t,e,r,s,A,a),this.rerouterPubkey=g,this.newRoute=E,this.rerouterSignature=o}getRerouterId(){return this.newRoute[0]}},Fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=ht.MAX_HOPS;maxRoutes=ht.MAX_ROUTES;maxNodes=ht.MAX_NODES;constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.arbiter=r,this.peerStore=s,this.verbose=A,this.pathFinder=new Ei(this.id,this.peerStore)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}sendUnicast(t,e,r="message",s=1){if(t===this.id)return!1;let A=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!A.success)return!1;let a=A.success==="blind"?1:s;for(let g=0;g<Math.min(a,A.routes.length);g++){let E=A.routes[g].path;if(E.length>ht.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${ht.MAX_HOPS}). BFS incurred.`);continue}let o=this.cryptoCodex.createUnicastMessage(r,e,E,this.peerStore.neighborsList);this.#e(E[1],o)}return!0}#e(t,e){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return r.send(e),{success:!0}}catch(s){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,s.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"unicast"))return;let r=this.cryptoCodex.readUnicastMessage(e);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{traveledRoute:A,selfPosition:a,senderId:g,targetId:E,prevId:o,nextId:f}=r.extractRouteInfo(this.id);if(t===g&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let p of this.callbacks.message_handle||[])p();if(a===-1)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"Self not in route");if(o&&t!==o)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(g===this.id)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(g===t?`(${this.id}) Direct ${r.type} from ${g}: ${r.data}`:`(${this.id}) Direct ${r.type} from ${g} (lastRelay: ${t}): ${r.data}`),this.peerStore.digestPeerNeighbors(g,r.neighborsList),t!==g&&this.arbiter.adjustTrust(t,It.UNICAST_RELAYED,"Relayed unicast message"),ot.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(A),this.id===E){for(let p of this.callbacks[r.type]||[])p(g,r.data);return}let{success:I,reason:u}=this.#e(f,e);if(!I&&!r.rerouterSignature){let p=this.pathFinder.buildRoutes(E,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!p.success)return;let y=p.routes[0].path;if(y.length>ht.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${E} as new route exceeds maxHops (${ht.MAX_HOPS}).`);return}let m=this.cryptoCodex.createReroutedUnicastMessage(e,y),v=y[a+1];this.#e(v,m)}}};await _t();var ke=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,r,s,A,a,g,E,o,f){this.topic=t,this.timestamp=e,this.neighborsList=r,this.HOPS=s,this.senderId=A,this.pubkey=a,this.data=g,this.signature=E,this.signatureStart=o,this.expectedEnd=f}},An=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let e=this.cache.map(r=>({senderId:r.senderId,topic:r.topic,data:r.serializedMessage}));return t==="asc"?e:e.reverse()}addMessage(t){let e=et.time,{marker:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g,associatedId:E}=this.cryptoCodex.readBufferHeader(t);if(e-A>dt.EXPIRATION)return;let o=t.subarray(0,47+s+a),f=ye(o);if(this.xxHash32UsageCount++,this.seenTimeouts[f])return;let I=dt.MARKERS_BYTES[r],u=E,p=e+dt.CACHE_DURATION;return this.cache.push({hash:f,senderId:u,topic:I,serializedMessage:t,timestamp:A,expiration:p}),this.seenTimeouts[f]=p,--this.cleanupIn<=0&&this.#e(e),{hash:f,isNew:!this.seenTimeouts[f]}}#e(t=et.time){let e=-1;for(let r=0;r<this.cache.length;r++)this.cache[r].expiration<=t?delete this.seenTimeouts[this.cache[r].hash]:e===-1&&(e=r);e>0?this.cache=this.cache.slice(e):e===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},xe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.arbiter=r,this.peerStore=s,this.verbose=A,this.bloomFilter=new An(e)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}broadcastToAll(t,e="gossip",r){let s=r||dt.HOPS[e]||dt.HOPS.default,A=this.cryptoCodex.createGossipMessage(e,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(A)){this.verbose>3&&console.log(`(${this.id}) Gossip ${e}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let a of this.peerStore.neighborsList)this.#e(a,A)}}#e(t,e){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{r.send(e)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let e=this.bloomFilter.getGossipHistoryByTime("asc");for(let r of e)this.#e(t,r.data)}async handleGossipMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"gossip"))return;for(let l of this.callbacks.message_handle||[])l(e);if(!this.bloomFilter.addMessage(e))return;let r=this.cryptoCodex.readGossipMessage(e);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{topic:A,timestamp:a,neighborsList:g,HOPS:E,senderId:o,data:f}=r;if(o===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(o===t?`(${this.id}) Gossip ${A} from ${o}: ${f}`:`(${this.id}) Gossip ${A} from ${o} (by: ${t}): ${f}`),this.peerStore.digestPeerNeighbors(o,g);for(let l of this.callbacks[A]||[])l(o,f,E,r);if(E<1)return;let I=this.peerStore.neighborsList.length,u=Math.max(1,I/dt.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),p=dt.TRANSMISSION_RATE[A]||dt.TRANSMISSION_RATE.default,y=Math.pow(p,u),m=I<dt.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,v=this.cryptoCodex.decrementGossipHops(e);for(let l of this.peerStore.neighborsList)if(l!==t){if(!m&&Math.random()>y)continue;this.#e(l,v)}}};await _t();var{SANDBOX:lA,ICE_CANDIDATE_EMITTER:dA,TEST_WS_EVENT_MANAGER:IA}=Bt.ENABLED?await De().then(()=>Re):{},on=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(e=>e.timestamp+t>=et.time)}get bestOfferInfo(){let{senderId:t,overlap:e,neighborsCount:r,data:s,timestamp:A}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:A,value:this.orderingBy==="overlap"?e:r}}pushSortTrim(t,e={min:.2,max:.8}){let{min:r,max:s}=e;Math.random()<Math.min(r,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((A,a)=>this.orderingBy==="overlap"?A.overlap-a.overlap:a.neighborsCount-A.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},Me=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new on;bootstrapsConnectionState=new Map;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=ot.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=ct.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,e,r,s,A,a){this.setNeighborsTarget(ot.TARGET_NEIGHBORS_COUNT),this.id=t,this.cryptoCodex=e,this.gossip=r,this.messager=s,this.peerStore=A;for(let g of a)this.bootstrapsConnectionState.set(g,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:e,isEnough:r,isTooMany:s,isHalfReached:A}=this.#e,a=e>=this.NEIGHBORS_TARGET/3?1:lt.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=r?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;r?Math.random()>.05&&this.#A():this.#A(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,e),this.phase===1&&this.#s(e,A)}handleIncomingSignal(t,e,r){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||e.signal?.type!=="offer"&&e.signal?.type!=="answer")return;let{signal:s,offerHash:A}=e||{},{connected:a,nonPublicNeighborsCount:g,isTooMany:E,isHalfReached:o}=this.#e;if(E||a[t])return;if(s.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,s,A)!==!0)return;let p=Math.abs(g-this.#t(t).nonPublicCount),y=this.maxBonus/this.NEIGHBORS_TARGET,m=Math.round(Math.min(this.maxBonus,p*y));return this.peerStore.assignSignal(t,s,A,et.time+m)}if(!this.automation.incomingOffer||g>this.TWICE_TARGET)return;let{overlap:f,nonPublicCount:I}=this.#t(t);if(I>this.TWICE_TARGET)return;let u={senderId:t,data:e,overlap:f,neighborsCount:I,timestamp:et.time};this.offersQueue.updateOrderingBy(o),this.offersQueue.pushSortTrim(u)}tryConnectNextBootstrap(t=0,e=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let r=t-e,s=0;for(let a in this.peerStore.connecting)s++;if(this.NEIGHBORS_TARGET||t){if(r>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(s+e>this.TWICE_TARGET)return}let A=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(A)||this.#i(A)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let e=this.peerStore.known[t]?.neighbors||{},r={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in e)this.cryptoCodex.isPublicNode(s)||r.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)e[s]&&r.overlap++;return r}#n(t=[]){return t.map(e=>({id:e,...this.#t(e)}))}#r(t){let e=typeof window<"u",s=e&&window.location.protocol==="https:"?"wss://":"ws://",A=t.endsWith("/ws"),a=e&&!A?window.location.host:t;return t.startsWith("ws")?t:`${s}${a}`}#i(t="localhost:8080"){let e=null,r=new lt.WS_CLIENT(this.#r(t));r.binaryType="arraybuffer",r.onerror=s=>console.error("WebSocket error:",s.stack),r.onopen=()=>{this.bootstrapsConnectionState.set(t,!0),r.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let s of this.peerStore.callbacks.disconnect)s(e,"out")},r.onmessage=async s=>{if(e)for(let A of this.peerStore.callbacks.data)A(e,s.data);else{let A=new Uint8Array(s.data);if(A[0]>127)return;let a=this.cryptoCodex.readUnicastMessage(A);if(!a)return;let{route:g,type:E,neighborsList:o}=a;if(E!=="handshake"||g.length!==2)return;let{signatureStart:f,pubkey:I,signature:u}=a,p=A.subarray(0,f);if(!await this.cryptoCodex.verifySignature(I,u,p))return;e=g[0],this.peerStore.digestPeerNeighbors(e,o),this.peerStore.connecting[e]?.in?.close(),this.peerStore.connecting[e]||(this.peerStore.connecting[e]={}),this.peerStore.connecting[e].out=new Vt(e,r,"out",!0);for(let y of this.peerStore.callbacks.connect)y(e,"out")}},r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,e=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,{offerHash:A,readyOffer:a}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!A||!a)return;if(!e&&s<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:a.signal,offerHash:A},"signal_offer"),a.sentCounter++;return}let g=null;for(let y of this.#n(this.peerStore.standardNeighborsList)){let m=y[e?"overlap":"nonPublicCount"];g===null&&(g=m),e&&m<g&&(g=m),!e&&m<=g&&(g=m)}let E=100,o=1e3,f=this.peerStore.knownCount,I=Math.max(Math.min(o/f,f/o),.127),u=[];for(let y in this.peerStore.known){if(Math.random()>I)continue;if(--o<=0)break;if(y===this.id||this.cryptoCodex.isPublicNode(y)||this.peerStore.isKicked(y))continue;if(this.peerStore.connected[y]||this.peerStore.connecting[y])continue;let{overlap:m,nonPublicCount:v}=this.#t(y);if(!(v>this.NEIGHBORS_TARGET)&&(g===null&&(g=e?m:v),!(e&&m>g)&&!(!e&&v<g)&&(u.push(y),--E<=0)))break}if(!u.length)return;let p=new Map;for(let y=0;y<Math.min(u.length,100);y++){let m=u[Math.floor(Math.random()*u.length)];if(!p.has(m)&&(p.size===0&&a.sentCounter++,p.set(m,!0),this.messager.sendUnicast(m,{signal:a.signal,offerHash:A},"signal_offer",1),p.size>=12))break}}#A(){let t=null,e=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(lt.SDP_OFFER_EXPIRATION/2);for(let r=0;r<this.offersQueue.size;r++){let{senderId:s,data:A,timestamp:a,value:g}=this.offersQueue.bestOfferInfo;if(!s||!A||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?g:t,t!==g)break;this.peerStore.addConnectingPeer(s,A.signal,A.offerHash)===!0&&(this.peerStore.assignSignal(s,A.signal,A.offerHash,a),e++)}}}#o(){let e=this.#n(this.peerStore.standardNeighborsList).sort((r,s)=>s.overlap-r.overlap||s.nonPublicCount-r.nonPublicCount);this.peerStore.kickPeer(e[0].id,6e4,"improveTopology")}};await _t();var kt=class c{IS_BROWSER=typeof window<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let e=t.length/2,r=new Uint8Array(e);for(let s=0,A=0;s<e;++s,A+=2)r[s]=(this.hexMap[t[A]]<<4)+this.hexMap[t[A+1]];return r}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let e=atob(t),r=new Uint8Array(e.length);for(let s=0;s<e.length;s++)r[s]=e.charCodeAt(s);return r}bytes2ToNumber(t){for(let e=0;e<2;e++)this.view2.setUint8(e,t[e]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let e=0;e<4;e++)this.view4.setUint8(e,t[e]);return this.view4.getUint32(0,!0)}bytes8ToNumber(t){for(let e=0;e<8;e++)this.view8.setUint8(e,t[e]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,e=0){let r="";for(let s of t)r+=s<16?`0${s.toString(16)}`:s.toString(16);return e>0&&(r=r.padStart(e,"0")),r}bytesToHex(t,e=0){return c.bytesToHex(t,e)}static hexToBits(t="ffffff",e="string"){let r=[];if(e==="arrayOfNumbers")for(let s=0;s<t.length;s++)r.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(A=>parseInt(A,10)));else for(let s=0;s<t.length;s++)r.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return e==="string"?r.join(""):r}static bytesToBits(t,e="string"){return this.hexToBits(this.bytesToHex(t),e)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((e,r)=>(e<<8)+parseInt(r,10),0)}};var Ve=typeof window<"u",[Zr]=await Promise.all([Ve?Promise.resolve().then(()=>(wr(),br)):Promise.resolve().then(()=>(Xr(),jr))]),ge=Zr.default||Zr;var he=class{converter=new kt;argon2;hash=async(t,e,r=2**16,s=1,A=1,a=2,g=32)=>{let E=this.#e(t,e,s,r,A,a,g),o=await this.getArgon2Lib(),f=Ve?await o.hash(E):await o.hash(t,E);if(!f)return!1;let I=f.encoded||f,u=this.#t(I);return u||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Ve)try{let e=await import("argon2");this.argon2=e}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>($r(),Vr));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",e="saltsaltsaltsaltsalt",r=1,s=2**10,A=1,a=2,g=32){let E=e.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:A,time:r,timeCost:r,mem:s,memoryCost:s,hashLen:g,hashLength:g,salt:Ve?E:Buffer.from(E)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let e=t.split("$").pop(),r=this.converter.base64toBytes(e),s=this.converter.bytesToHex(r),A=kt.hexToBits(s,"string");return A?{encoded:t,hash:r,hex:s,bitsString:A}:!1}};var fe=class c{argon2=new he;converter=new kt;AVOID_CRYPTO=!1;verbose=ct.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,e=ct.DEFAULT_VERBOSE){if(this.verbose=e,!t)return;this.AVOID_CRYPTO=!0,this.id=t.padEnd(V.ID_LENGTH," ").slice(0,V.ID_LENGTH),this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0);let r=new TextEncoder().encode(this.id);for(let s=0;s<V.ID_LENGTH;s++)this.publicKey[s]=r[s]}static async createCryptoCodex(t,e){let r=new c(void 0,this.verbose);return await r.generate(t,e),r}static isPublicNode(t){return(V.ARE_IDS_HEX?kt.hexToBits(t[0]):t).startsWith(V.PUBLIC_PREFIX)}get idLength(){return V.ARE_IDS_HEX?V.ID_LENGTH/2:V.ID_LENGTH}isPublicNode(t){return c.isPublicNode(t)}async generate(t,e){if(!this.nodeId&&(await this.#t(e,t),!this.id))throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!V.DIFFICULTY)return!0;let{bitsString:e}=await this.argon2.hash(t,"HiveP2P",V.ARGON2_MEM)||{};if(e&&e.startsWith("0".repeat(V.DIFFICULTY)))return!0}#e(t){return V.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),V.ID_LENGTH):this.converter.bytesToString(t.slice(0,V.ID_LENGTH))}async#t(t,e){let r=2**V.DIFFICULTY*100;for(let s=0;s<r;s++){let{secretKey:A,publicKey:a}=ge.keygen(t),g=this.#e(a);if(!(e&&!this.isPublicNode(g))&&!(!e&&this.isPublicNode(g))&&await this.pubkeyDifficultyCheck(a)){this.id=g,this.privateKey=A,this.publicKey=a,this.verbose>2&&console.log(`%cNode generated id: ${this.id} (isPublic: ${e}, difficulty: ${V.DIFFICULTY}) after ${((s+1)/2).toFixed(1)} iterations`,it.CRYPTO_CODEX);return}}this.verbose>0&&console.log(`%cFAILED to generate id after ${r} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}signBufferViewAndAppendSignature(t,e,r=t.length-V.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,r);t.set(ge.sign(s,e),r)}createGossipMessage(t,e,r=3,s=[],A=et.time){let a=dt.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let g=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(e),f=47+g.length+o.length+V.SIGNATURE_LENGTH+1,I=new ArrayBuffer(f),u=new Uint8Array(I);return this.#i(u,a,E,s.length,A,o,this.publicKey),u.set(g,47),u.set(o,47+g.length),u.set([Math.min(255,r)],f-1),this.signBufferViewAndAppendSignature(u,this.privateKey,f-V.SIGNATURE_LENGTH-1),u}decrementGossipHops(t){let e=new Uint8Array(t),r=t[t.length-1];return e[t.length-1]=Math.max(0,r-1),e}createUnicastMessage(t,e,r,s=[],A=et.time){let a=ht.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(r.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(r.length>ht.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${ht.MAX_HOPS}).`);let g=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(e),f=this.#n(r),I=47+g.length+1+f.length+o.length+V.SIGNATURE_LENGTH,u=new ArrayBuffer(I),p=new Uint8Array(u);this.#i(p,a,E,s.length,A,o,this.publicKey);let y=g.length+o.length;return p.set(g,47),p.set(o,47+g.length),p.set([r.length],47+y),p.set(f,48+y),this.signBufferViewAndAppendSignature(p,this.privateKey,I-V.SIGNATURE_LENGTH),p}createReroutedUnicastMessage(t,e){if(e.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(e.length>ht.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${ht.MAX_HOPS}).`);let r=e.map(g=>this.converter.stringToBytes(g)),s=t.length+32+V.ID_LENGTH*r.length+V.SIGNATURE_LENGTH,A=new ArrayBuffer(s),a=new Uint8Array(A);a.set(t,0),a.set(this.publicKey,t.length);for(let g=0;g<r.length;g++)a.set(r[g],t.length+32+g*V.ID_LENGTH);return this.signBufferViewAndAppendSignature(a,this.privateKey,s-V.SIGNATURE_LENGTH),a}#n(t){return V.ARE_IDS_HEX?this.converter.hexToBytes(t.join(""),V.ID_LENGTH*t.length):this.converter.stringToBytes(t.join(""))}#r(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#i(t,e,r,s,A,a,g){let E=this.converter.numberTo8Bytes(A),o=this.converter.numberTo4Bytes(a.length);t.set([e],0),t.set([r],1),t.set([s],2),t.set(E,3),t.set(o,11),t.set(g,15)}async verifySignature(t,e,r){return this.AVOID_CRYPTO?!0:ge.verifyAsync(e,r,t)}readBufferHeader(t,e=!0){let r=t[0],s=t[1],A=t[2],a=t.slice(3,11),g=t.slice(11,15),E=t.slice(15,47),o=e?this.#e(E):null,f=A*this.idLength,I=this.converter.bytes8ToNumber(a),u=this.converter.bytes4ToNumber(g);return{marker:r,dataCode:s,neighLength:f,timestamp:I,dataLength:u,pubkey:E,associatedId:o}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:e,dataCode:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g,associatedId:E}=this.readBufferHeader(t),o=dt.MARKERS_BYTES[e];if(o===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let f=s+a,I=this.#s(t.slice(47,47+s)),u=this.#A(r,t.slice(47+s,47+f)),p=47+f,y=t.slice(p,p+V.SIGNATURE_LENGTH),m=t[t.length-1],v=p+V.SIGNATURE_LENGTH+1,l=E;return new ke(o,A,I,m,l,g,u,y,p,v)}catch(e){this.verbose>1&&console.warn(`Error deserializing ${topic||"unknown"} gossip message:`,e.stack)}return null}readUnicastMessage(t){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:e,dataCode:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g}=this.readBufferHeader(t,!1),E=ht.MARKERS_BYTES[e];if(E===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let o=s+a,f=this.#s(t.slice(47,47+s)),I=this.#A(r,t.slice(47+s,47+o)),p=t[47+o]*this.idLength,y=47+o+1+p,m=t.slice(47+o+1,y),v=this.#s(m),l=y+V.SIGNATURE_LENGTH,C=t.slice(y,l);if(!(t.length>l))return new de(E,A,f,v,g,I,C,y,l);let S=t.slice(l,l+32),b=this.#s(t.slice(l+32,t.length-V.SIGNATURE_LENGTH)),_=t.slice(t.length-V.SIGNATURE_LENGTH);return new Te(E,A,f,v,g,I,C,S,b,_,t.length)}catch(e){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,e.stack)}return null}#s(t){let e=[],r=this.idLength;if(t.length%r!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/r;s++){let A=t.slice(s*r,(s+1)*r);V.ARE_IDS_HEX?e.push(this.converter.bytesToHex(A,V.ID_LENGTH)):e.push(this.converter.bytesToString(A))}return e}#A(t,e){if(t===1)return this.converter.bytesToString(e);if(t===2)return e;if(t===3)return JSON.parse(this.converter.bytesToString(e));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await _t();var _s=ct.IS_BROWSER?null:await import("dgram"),$e=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,e,r=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=r,this.peerStore=e,this.cryptoCodex=t}start(t="localhost",e=Ft.PORT){this.publicUrl=`ws://${t}:${e}`,this.#e(t,e),Bt.USE_TEST_TRANSPORTS||this.#t(t,e+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-ot.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let e=0,r=Ft.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let A=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>ot.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=ot.TARGET_NEIGHBORS_COUNT)break;continue}if(!(A.getConnectionDuration()<(a>2?r:r*2))&&(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),++e>=t))break}}#e(t="localhost",e=Ft.PORT){this.wsServer=new lt.WS_SERVER({port:e,host:t}),this.wsServer.on("error",r=>console.error(`WebSocket error on Node #${this.id}:`,r)),this.wsServer.on("connection",r=>{r.on("close",()=>{if(s)for(let A of this.peerStore.callbacks.disconnect)A(s,"in")}),r.on("error",A=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,A.stack));let s;r.on("message",async A=>{if(s)for(let a of this.peerStore.callbacks.data)a(s,A);else{let a=new Uint8Array(A);if(a[0]>127)return;let g=this.cryptoCodex.readUnicastMessage(a);if(!g)return;let{route:E,type:o,neighborsList:f}=g;if(o!=="handshake"||E.length!==2)return;let{signatureStart:I,pubkey:u,signature:p}=g,y=a.subarray(0,I);if(!await this.cryptoCodex.verifySignature(u,p,y))return;s=E[0],this.peerStore.digestPeerNeighbors(s,f),this.peerStore.connecting[s]?.out?.close(),this.peerStore.connecting[s]||(this.peerStore.connecting[s]={}),this.peerStore.connecting[s].in=new Vt(s,r,"in",!0);for(let m of this.peerStore.callbacks.connect)m(s,"in")}}),r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",e=Ft.PORT+1){this.stunServer=_s.createSocket("udp4"),this.stunServer.on("message",(r,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${r.toString("hex")}`,it.SERVICE),this.#n(r)&&this.stunServer.send(this.#r(r,s),s.port,s.address)}),this.stunServer.bind(e,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${e}`,it.SERVICE)}#n(t){if(t.length<20)return!1;let e=t.readUInt16BE(0),r=t.readUInt32BE(4);return e===1&&r===554869826}#r(t,e){let r=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),r.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(e.port,26),s.writeUInt32BE(kt.ipToInt(e.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${e.address}:${e.port}`,"color: green;"),s}static deriveSTUNServers(t){let e=[];for(let r of t){if(!r.includes(":")||r.endsWith("/ws")||r.endsWith("/wss"))continue;let s=r.replace("ws://","stun:");s.replace("wss://","stun:"),s.includes("stun:")&&e.push({urls:s})}return lt.CENTRALIZED_STUN_SERVERS&&(e.push({urls:"stun:stun.l.google.com:5349"}),e.push({urls:"stun:stun.l.google.com:19302"}),e.push({urls:"stun:stun1.l.google.com:3478"}),e.push({urls:"stun:stun1.l.google.com:5349"})),e}};async function zr(c={}){let t=c.verbose!==void 0?c.verbose:ct.DEFAULT_VERBOSE,e=c.cryptoCodex||new fe(void 0,t),r=et.sync(t);e.publicKey||await e.generate(!1),await r;let s=new Ce(e,c.bootstraps||[],t);return c.autoStart!==!1&&await s.start(),s}var Ce=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,e=[],r=ct.DEFAULT_VERBOSE){this.verbose=r,this.topologist?.services&&(this.topologist.services.verbose=r),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=$e.deriveSTUNServers(e||[]);this.offerManager=new be(this.id,s,r),this.arbiter=new Qe(this.id,t,r),this.peerStore=new Ne(this.id,this.cryptoCodex,this.offerManager,this.arbiter,r),this.messager=new Fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.gossip=new xe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.topologist=new Me(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,e||[]);let{arbiter:A,peerStore:a,messager:g,gossip:E,topologist:o}=this;a.on("signal",(f,I)=>this.sendMessage(f,I,"signal_answer")),a.on("connect",(f,I)=>this.#e(f,I)),a.on("disconnect",(f,I)=>this.#t(f,I)),a.on("data",(f,I)=>this.#n(f,I)),g.on("signal_answer",(f,I)=>o.handleIncomingSignal(f,I)),g.on("signal_offer",(f,I)=>o.handleIncomingSignal(f,I)),E.on("signal_offer",(f,I,u)=>o.handleIncomingSignal(f,I,u)),r>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,e)=>{let r=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!r&&!this.cryptoCodex.isPublicNode(this.id)||e==="in")&&this.sendMessage(t,this.id,"handshake");let A=this.peerStore.neighborsList.length>=ot.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{ot.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&A&&this.broadcast([],"over_neighbored"),ot.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};ot.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,ot.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,e)=>{if(!this.peerStore.neighborsList.length){for(let A in this.peerStore.connecting)this.peerStore.kickPeer(A,0,"no_neighbors_left");for(let A in this.offerManager.offers)this.offerManager.offers[A].timestamp=0}let r=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,e)=>{let r=new Uint8Array(e);r[0]>127?this.gossip.handleGossipMessage(t,r):this.messager.handleDirectMessage(t,r)};get publicUrl(){return this.services?.publicUrl}get time(){return et.time}async start(){return await et.sync(this.verbose),this.started=!0,Bt.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),ot.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}broadcast(t,e,r){this.gossip.broadcastToAll(t,e,r)}sendMessage(t,e,r,s=1){this.messager.sendUnicast(t,e,r,s)}async tryConnectToPeer(t="toto",e=10){if(!this.peerStore.connected[t])do{let{offerHash:r,readyOffer:s}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!r||!s)await new Promise(A=>setTimeout(A,1e3));else{this.messager.sendUnicast(t,{signal:s.signal,offerHash:r},"signal_offer",1);return}}while(e-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,e="kicked_by_node"){this.peerStore.kickPeer(t,0,e)}banPeer(t,e=6e4,r="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-e,r)}};await _t();function ti(c,t){for(let e in t)t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?(c[e]=c[e]||{},ti(c[e],t[e])):c[e]=t[e]}var ei={CLOCK:et,CONFIG:Jn,mergeConfig:ti,Node:Ce,createNode:zr,CryptoCodex:fe,ed25519:ge,Argon2Unified:he};var Qo=ei;typeof window<"u"&&(window.HiveP2P=ei);export{he as Argon2Unified,et as CLOCK,Jn as CONFIG,fe as CryptoCodex,Ce as Node,zr as createNode,Qo as default,ge as ed25519,ti as mergeConfig};
|
|
3
|
+
`,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return e==="offer"&&this.PENDING_OFFERS[t]?.[s]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(e==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),e==="offer"&&(this.PENDING_OFFERS[t][s]=A),e==="answer"&&(this.PENDING_ANSWERS[t]=A),{success:!0,signalData:A,reason:"na"})}#n(t,e){let{transportId:r,type:s,sdp:A}=t;if(r===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(s!=="offer"&&s!=="answer")return{success:!1,reason:`Invalid signal type: ${s}.`};if(s==="offer"&&(!this.PENDING_OFFERS[r]||!this.PENDING_OFFERS[r][A.id]))return{success:!1,reason:`No pending offer found for transport ID: ${r} with SDP ID: ${A.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[r]||this.PENDING_ANSWERS[r].sdp.id!==A.id))return{success:!1,reason:`No pending answer found for transport ID: ${r} with SDP ID: ${A.id}`};if(s==="offer"&&Math.random()<Bt.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${r} to ${e}`};if(s==="answer"&&Math.random()<Bt.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${r} to ${e}`};if(s==="offer")return this.buildSDP(e,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[e],delete this.PENDING_ANSWERS[r];let a=this.sandbox.linkInstances(e,r);return{success:!a,reason:a||"na"}}buildSDP(t,e){let r={min:Bt.ICE_DELAY.min,max:Bt.ICE_DELAY.max},s=Math.floor(Math.random()*(r.max-r.min+1))+r.min;this.sdpToBuild.push({transportId:t,type:e,time:Date.now()+s})}digestSignal(t,e){this.signalsToDigest.push({signalData:t,receiverId:e})}},me=class{verbose=ct.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,e){this.publicWsServers[t]=e}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let e=(this.wsGlobalIndex++).toString();t.id=e,this.wsConnections[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,e,r){let s=this.wsConnections[e],A=this.publicWsServers[t];if(!s||!A||A.closing||A.clients.size>=A.maxClients)return;let a=new r(A,e);A.clients.add(a),a.init(s.id),A.callbacks.connection.forEach(g=>g(a)),s.init(a.id)}inscribeInstance(t){let e=(this.tGlobalIndex++).toString();t.id=e,this.transportInstances[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${e}`)}linkInstances(t,e){let[r,s]=[this.transportInstances[t],this.transportInstances[e]];if(!r||!s)return`Missing transport instances: ${t}=>${!!r}, ${e}=>${!!s}`;if(r.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${e}`;if(r.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${r.destroying}, ${e}=>${s.destroying}`;if(r.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${r.destroyed}, ${e}=>${s.destroyed}`;if(r.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${r.remoteId}`;if(s.remoteId)return`Transport instance tB: ${e} is already linked to remoteId: ${s.remoteId}`;r.remoteId=e,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${e}`),r.callbacks.connect.forEach(A=>A()),s.callbacks.connect.forEach(A=>A())}sendData(t,e,r){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(e===void 0)return{success:!1,reason:`Cannot send message to id: ${e}`};let s=this.transportInstances[t];if(!s)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!s.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(s.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${s.id}`};if(s.remoteId!==e)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`};let A=this.transportInstances[e];return A?A.remoteId?A.id!==e?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${e}`}:A.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`}:(this.enqueueTransportData(t,e,r),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${e} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${e}`}}destroyTransportAndAssociatedTransport(t){let e=this.transportInstances[t];if(!e)return;let r=e.remoteId,s=r?this.transportInstances[r]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),e&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${r}`),delete this.transportInstances[r],s.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],e.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let e=this.batchSize;t>this.batchSize*3&&(e=this.batchSize*1.5),t>this.batchSize*5&&(e=this.batchSize*2),t>this.batchSize*10&&(e=this.batchSize*3),t>this.batchSize*20&&(e=this.batchSize*5),e=Math.round(e);let r=Math.min(this.queueIndex+e,t);for(let A=this.queueIndex;A<r;A++){let[a,g,E,o]=this.messageQueueSync[A];a==="transport_data"?this.#e(g,E,o):a==="ws_message"&&this.#t(g,E,o)}if(this.queueIndex=r,this.queueIndex<5e3)return;let s=this.messageQueueSync.length>5e4;s&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),s&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let e=Math.min(t,this.queueCount);for(let r=0;r<e;r++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[A,a,g,E]=s;A==="transport_data"?this.#e(a,g,E):A==="ws_message"&&this.#t(a,g,E)}await new Promise(r=>setTimeout(r,0)),this.queueCount-=e}#e(t,e,r){let[s,A]=[this.transportInstances[t],this.transportInstances[e]];if(!s||!A||s.destroying||A.destroying){s?.close(),A?.close();return}if(s.destroyed){A.close();return}if(A.destroyed){s.close();return}for(let a of A.callbacks.data)a(r)}#t(t,e,r){let[s,A]=[this.wsConnections[t],this.wsConnections[e]];if(!A||!s||A.readyState!==1||s.readyState!==1){A?.close(),s?.close();return}if(A.onmessage)A.onmessage({data:r});else for(let a of A.callbacks.message)a(r)}enqueueTransportDataSync(t,e,r){this.messageQueueSync.push(["transport_data",t,e,r])}enqueueWsMessageSync(t,e,r){this.messageQueueSync.push(["ws_message",t,e,r])}enqueueTransportData(t,e,r){this.messageQueue[this.queueEnd]=["transport_data",t,e,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,e,r){this.messageQueue[this.queueEnd]=["ws_message",t,e,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var Re={};Be(Re,{ICE_CANDIDATE_EMITTER:()=>rn,SANDBOX:()=>pt,TEST_WS_EVENT_MANAGER:()=>Se,TestTransport:()=>nn,TestWsConnection:()=>_e,TestWsServer:()=>en});var tn,_e,en,nn,pt,rn,Se,De=Xt(async()=>{await _t();await Wn();tn=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),e=this.toInit;this.toInit=[];for(let{connId:r,time:s}of e)s>t?this.toInit.push({connId:r,time:s}):this.#e(r)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),e=this.toClose;this.toClose=[];for(let{wsId:r,remoteWsId:s,time:A}of e)A>t?this.toClose.push({wsId:r,remoteWsId:s,time:A}):this.#t(r,s)}cleanerTick(){let t=Date.now();for(let e of Object.values(pt.publicWsServers))for(let r of e.clients)r.readyState===3&&e.clients.delete(r)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),e=this.toError;this.toError=[];for(let{wsId:r,error:s,time:A}of e)A>t?this.toError.push({wsId:r,error:s,time:A}):pt.wsConnections[r]?.dispatchError(s)}#e(t){let e=pt.wsConnections[t];e&&pt.connectToWebSocketServer(e.url,e.id,_e)}#t(t,e){let r=pt.wsConnections[t],s=pt.wsConnections[e];r?.onclose?.(),s?.onclose?.();for(let A of r?.callbacks?.close||[])A();for(let A of s?.callbacks?.close||[])A()}scheduleInit(t,e=500){this.toInit.push({connId:t,time:Date.now()+e})}scheduleClose(t,e,r=100){this.toClose.push({wsId:t,remoteWsId:e,time:Date.now()+r})}scheduleError(t,e,r=100){this.toError.push({wsId:t,error:e,time:Date.now()+r})}},_e=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",e){pt.inscribeWsConnection(this),!e&&(this.url=t,Se.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),Se.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(this.readyState===3)return;this.readyState=3;let t=pt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&Se.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}pt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(e=>e(t)),this.onerror&&this.onerror(t)}},en=class{url;clients=new Set;maxClients=Ft.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,pt.inscribeWebSocketServer(this.url,this)}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(!this.closing){this.closing=!0,pt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},nn=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){pt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&rn.buildSDP(this.id,"offer")}on(t,e){this.callbacks[t]&&this.callbacks[t].push(e)}dispatchError(t){this.callbacks.error.forEach(e=>e(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");rn.digestSignal(t,this.id)}}send(t){let{success:e,reason:r}=pt.sendData(this.id,this.remoteId,t);e||this.destroy(r)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(e=>e()),pt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},pt=new me,rn=new we(pt),Se=new tn});var br={};Be(br,{default:()=>is,ed25519:()=>dn,sha512:()=>rs});function Oi(c){return c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array"}function Qr(c,t,e=""){let r=Oi(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;throw new Error(a+"expected Uint8Array"+g+", got "+E)}return c}function tr(c,t=!0){if(c.destroyed)throw new Error("Hash instance has been destroyed");if(t&&c.finished)throw new Error("Hash#digest() has already been called")}function Hi(c,t){Qr(c,void 0,"digestInto() output");let e=t.outputLen;if(c.length<e)throw new Error('"digestInto() output" expected to be of length >='+e)}function ln(...c){for(let t=0;t<c.length;t++)c[t].fill(0)}function gn(c){return new DataView(c.buffer,c.byteOffset,c.byteLength)}function Pi(c,t={}){let e=(s,A)=>c(A).update(s).digest(),r=c(void 0);return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=s=>c(s),Object.assign(e,t),Object.freeze(e)}function Ji(c,t=!1){return t?{h:Number(c&Ue),l:Number(c>>er&Ue)}:{h:Number(c>>er&Ue)|0,l:Number(c&Ue)|0}}function qi(c,t=!1){let e=c.length,r=new Uint32Array(e),s=new Uint32Array(e);for(let A=0;A<e;A++){let{h:a,l:g}=Ji(c[A],t);[r[A],s[A]]=[a,g]}return[r,s]}function Ht(c,t,e,r){let s=(t>>>0)+(r>>>0);return{h:c+e+(s/2**32|0)|0,l:s|0}}var Ci,Bi,dn,ir,yt,Oe,jn,Xn,an,cn,pi,Mt,Ie,Qi,gt,yi,bi,wi,Dt,Ke,sr,Ar,In,Ot,Vn,En,or,mi,zt,ar,He,$t,P,cr,hr,gr,Si,hn,fn,Jt,qt,ae,fr,Cn,xt,_i,$n,Ri,Pe,Bn,pn,ur,Qn,yn,lr,dr,Ir,Er,Cr,Di,Ni,bn,Br,vi,Ti,Fi,wn,mn,ki,xi,Mi,Ye,Ui,pr,un,Gi,Zn,zn,Li,Yi,Ki,Qt,Ue,er,nr,rr,Ae,oe,Ge,Le,Wi,ji,Xi,Vi,$i,Zi,yr,zi,ts,Yt,Kt,es,ns,rs,is,wr=Xt(()=>{Ci=Object.defineProperty,Bi=(c,t)=>{for(var e in t)Ci(c,e,{get:t[e],enumerable:!0})},dn={};Bi(dn,{Point:()=>Jt,etc:()=>Fi,getPublicKey:()=>dr,getPublicKeyAsync:()=>lr,hash:()=>Si,hashes:()=>wn,keygen:()=>ki,keygenAsync:()=>xi,sign:()=>Ni,signAsync:()=>Di,utils:()=>Mi,verify:()=>Ti,verifyAsync:()=>vi});ir={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:yt,n:Oe,Gx:jn,Gy:Xn,a:an,d:cn,h:pi}=ir,Mt=32,Ie=64,Qi=(...c)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...c)},gt=(c="")=>{let t=new Error(c);throw Qi(t,gt),t},yi=c=>typeof c=="bigint",bi=c=>typeof c=="string",wi=c=>c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array",Dt=(c,t,e="")=>{let r=wi(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;gt(a+"expected Uint8Array"+g+", got "+E)}return c},Ke=c=>new Uint8Array(c),sr=c=>Uint8Array.from(c),Ar=(c,t)=>c.toString(16).padStart(t,"0"),In=c=>Array.from(Dt(c)).map(t=>Ar(t,2)).join(""),Ot={_0:48,_9:57,A:65,F:70,a:97,f:102},Vn=c=>{if(c>=Ot._0&&c<=Ot._9)return c-Ot._0;if(c>=Ot.A&&c<=Ot.F)return c-(Ot.A-10);if(c>=Ot.a&&c<=Ot.f)return c-(Ot.a-10)},En=c=>{let t="hex invalid";if(!bi(c))return gt(t);let e=c.length,r=e/2;if(e%2)return gt(t);let s=Ke(r);for(let A=0,a=0;A<r;A++,a+=2){let g=Vn(c.charCodeAt(a)),E=Vn(c.charCodeAt(a+1));if(g===void 0||E===void 0)return gt(t);s[A]=g*16+E}return s},or=()=>globalThis?.crypto,mi=()=>or()?.subtle??gt("crypto.subtle must be defined, consider polyfill"),zt=(...c)=>{let t=Ke(c.reduce((r,s)=>r+Dt(s).length,0)),e=0;return c.forEach(r=>{t.set(r,e),e+=r.length}),t},ar=(c=Mt)=>or().getRandomValues(Ke(c)),He=BigInt,$t=(c,t,e,r="bad number: out of range")=>yi(c)&&t<=c&&c<e?c:gt(r),P=(c,t=yt)=>{let e=c%t;return e>=0n?e:t+e},cr=c=>P(c,Oe),hr=(c,t)=>{(c===0n||t<=0n)&>("no inverse n="+c+" mod="+t);let e=P(c,t),r=t,s=0n,A=1n,a=1n,g=0n;for(;e!==0n;){let E=r/e,o=r%e,f=s-a*E,I=A-g*E;r=e,e=o,s=a,A=g,a=f,g=I}return r===1n?P(s,t):gt("no inverse")},gr=c=>{let t=wn[c];return typeof t!="function"&>("hashes."+c+" not set"),t},Si=c=>gr("sha512")(c),hn=c=>c instanceof Jt?c:gt("Point expected"),fn=2n**256n,Jt=class Zt{static BASE;static ZERO;X;Y;Z;T;constructor(t,e,r,s){let A=fn;this.X=$t(t,0n,A),this.Y=$t(e,0n,A),this.Z=$t(r,1n,A),this.T=$t(s,0n,A),Object.freeze(this)}static CURVE(){return ir}static fromAffine(t){return new Zt(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,e=!1){let r=cn,s=sr(Dt(t,Mt)),A=t[31];s[31]=A&-129;let a=Cn(s);$t(a,0n,e?fn:yt);let g=P(a*a),E=P(g-1n),o=P(r*g+1n),{isValid:f,value:I}=Ri(E,o);f||gt("bad point: y not sqrt");let u=(I&1n)===1n,p=(A&128)!==0;return!e&&I===0n&&p&>("bad point: x==0, isLastByteOdd"),p!==u&&(I=P(-I)),new Zt(I,a,1n,P(I*a))}static fromHex(t,e){return Zt.fromBytes(En(t),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=an,e=cn,r=this;if(r.is0())return gt("bad point: ZERO");let{X:s,Y:A,Z:a,T:g}=r,E=P(s*s),o=P(A*A),f=P(a*a),I=P(f*f),u=P(E*t),p=P(f*P(u+o)),y=P(I+P(e*P(E*o)));if(p!==y)return gt("bad point: equation left != right (1)");let m=P(s*A),v=P(a*g);return m!==v?gt("bad point: equation left != right (2)"):this}equals(t){let{X:e,Y:r,Z:s}=this,{X:A,Y:a,Z:g}=hn(t),E=P(e*g),o=P(A*s),f=P(r*g),I=P(a*s);return E===o&&f===I}is0(){return this.equals(ae)}negate(){return new Zt(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:e,Z:r}=this,s=an,A=P(t*t),a=P(e*e),g=P(2n*P(r*r)),E=P(s*A),o=t+e,f=P(P(o*o)-A-a),I=E+a,u=I-g,p=E-a,y=P(f*u),m=P(I*p),v=P(f*p),l=P(u*I);return new Zt(y,m,l,v)}add(t){let{X:e,Y:r,Z:s,T:A}=this,{X:a,Y:g,Z:E,T:o}=hn(t),f=an,I=cn,u=P(e*a),p=P(r*g),y=P(A*I*o),m=P(s*E),v=P((e+r)*(a+g)-u-p),l=P(m-y),C=P(m+y),B=P(p-f*u),S=P(v*l),b=P(C*B),_=P(v*B),F=P(l*C);return new Zt(S,b,F,_)}subtract(t){return this.add(hn(t).negate())}multiply(t,e=!0){if(!e&&(t===0n||this.is0()))return ae;if($t(t,1n,Oe),t===1n)return this;if(this.equals(qt))return Li(t).p;let r=ae,s=qt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?r=r.add(A):e&&(s=s.add(A));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:e,Z:r}=this;if(this.equals(ae))return{x:0n,y:1n};let s=hr(r,yt);P(r*s)!==1n&>("invalid inverse");let A=P(t*s),a=P(e*s);return{x:A,y:a}}toBytes(){let{x:t,y:e}=this.assertValidity().toAffine(),r=fr(e);return r[31]|=t&1n?128:0,r}toHex(){return In(this.toBytes())}clearCofactor(){return this.multiply(He(pi),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Oe/2n,!1).double();return Oe%2n&&(t=t.add(this)),t.is0()}},qt=new Jt(jn,Xn,1n,P(jn*Xn)),ae=new Jt(0n,1n,1n,0n);Jt.BASE=qt;Jt.ZERO=ae;fr=c=>En(Ar($t(c,0n,fn),Ie)).reverse(),Cn=c=>He("0x"+In(sr(Dt(c)).reverse())),xt=(c,t)=>{let e=c;for(;t-- >0n;)e*=e,e%=yt;return e},_i=c=>{let t=c*c%yt*c%yt,e=xt(t,2n)*t%yt,r=xt(e,1n)*c%yt,s=xt(r,5n)*r%yt,A=xt(s,10n)*s%yt,a=xt(A,20n)*A%yt,g=xt(a,40n)*a%yt,E=xt(g,80n)*g%yt,o=xt(E,80n)*g%yt,f=xt(o,10n)*s%yt;return{pow_p_5_8:xt(f,2n)*c%yt,b2:t}},$n=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Ri=(c,t)=>{let e=P(t*t*t),r=P(e*e*t),s=_i(c*r).pow_p_5_8,A=P(c*e*s),a=P(t*A*A),g=A,E=P(A*$n),o=a===c,f=a===P(-c),I=a===P(-c*$n);return o&&(A=g),(f||I)&&(A=E),(P(A)&1n)===1n&&(A=P(-A)),{isValid:o||f,value:A}},Pe=c=>cr(Cn(c)),Bn=(...c)=>wn.sha512Async(zt(...c)),pn=(...c)=>gr("sha512")(zt(...c)),ur=c=>{let t=c.slice(0,Mt);t[0]&=248,t[31]&=127,t[31]|=64;let e=c.slice(Mt,Ie),r=Pe(t),s=qt.multiply(r),A=s.toBytes();return{head:t,prefix:e,scalar:r,point:s,pointBytes:A}},Qn=c=>Bn(Dt(c,Mt)).then(ur),yn=c=>ur(pn(Dt(c,Mt))),lr=c=>Qn(c).then(t=>t.pointBytes),dr=c=>yn(c).pointBytes,Ir=c=>Bn(c.hashable).then(c.finish),Er=c=>c.finish(pn(c.hashable)),Cr=(c,t,e)=>{let{pointBytes:r,scalar:s}=c,A=Pe(t),a=qt.multiply(A).toBytes();return{hashable:zt(a,r,e),finish:g=>{let E=cr(A+Pe(g)*s);return Dt(zt(a,fr(E)),Ie)}}},Di=async(c,t)=>{let e=Dt(c),r=await Qn(t),s=await Bn(r.prefix,e);return Ir(Cr(r,s,e))},Ni=(c,t)=>{let e=Dt(c),r=yn(t),s=pn(r.prefix,e);return Er(Cr(r,s,e))},bn={zip215:!0},Br=(c,t,e,r=bn)=>{c=Dt(c,Ie),t=Dt(t),e=Dt(e,Mt);let{zip215:s}=r,A,a,g,E,o=Uint8Array.of();try{A=Jt.fromBytes(e,s),a=Jt.fromBytes(c.slice(0,Mt),s),g=Cn(c.slice(Mt,Ie)),E=qt.multiply(g,!1),o=zt(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:f=>{if(E==null||!s&&A.isSmallOrder())return!1;let I=Pe(f);return a.add(A.multiply(I,!1)).add(E.negate()).clearCofactor().is0()}}},vi=async(c,t,e,r=bn)=>Ir(Br(c,t,e,r)),Ti=(c,t,e,r=bn)=>Er(Br(c,t,e,r)),Fi={bytesToHex:In,hexToBytes:En,concatBytes:zt,mod:P,invert:hr,randomBytes:ar},wn={sha512Async:async c=>{let t=mi(),e=zt(c);return Ke(await t.digest("SHA-512",e.buffer))},sha512:void 0},mn=(c=ar(Mt))=>c,ki=c=>{let t=mn(c),e=dr(t);return{secretKey:t,publicKey:e}},xi=async c=>{let t=mn(c),e=await lr(t);return{secretKey:t,publicKey:e}},Mi={getExtendedPublicKeyAsync:Qn,getExtendedPublicKey:yn,randomSecretKey:mn},Ye=8,Ui=256,pr=Math.ceil(Ui/Ye)+1,un=2**(Ye-1),Gi=()=>{let c=[],t=qt,e=t;for(let r=0;r<pr;r++){e=t,c.push(e);for(let s=1;s<un;s++)e=e.add(t),c.push(e);t=e.double()}return c},zn=(c,t)=>{let e=t.negate();return c?e:t},Li=c=>{let t=Zn||(Zn=Gi()),e=ae,r=qt,s=2**Ye,A=s,a=He(s-1),g=He(Ye);for(let E=0;E<pr;E++){let o=Number(c&a);c>>=g,o>un&&(o-=A,c+=1n);let f=E*un,I=f,u=f+Math.abs(o)-1,p=E%2!==0,y=o<0;o===0?r=r.add(zn(p,t[I])):e=e.add(zn(y,t[u]))}return c!==0n&>("invalid wnaf"),{p:e,f:r}};Yi=c=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,c])}),Ki=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(c,t,e,r){this.blockLen=c,this.outputLen=t,this.padOffset=e,this.isLE=r,this.buffer=new Uint8Array(c),this.view=gn(this.buffer)}update(c){tr(this),Qr(c);let{view:t,buffer:e,blockLen:r}=this,s=c.length;for(let A=0;A<s;){let a=Math.min(r-this.pos,s-A);if(a===r){let g=gn(c);for(;r<=s-A;A+=r)this.process(g,A);continue}e.set(c.subarray(A,A+a),this.pos),this.pos+=a,A+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=c.length,this.roundClean(),this}digestInto(c){tr(this),Hi(c,this),this.finished=!0;let{buffer:t,view:e,blockLen:r,isLE:s}=this,{pos:A}=this;t[A++]=128,ln(this.buffer.subarray(A)),this.padOffset>r-A&&(this.process(e,0),A=0);for(let f=A;f<r;f++)t[f]=0;e.setBigUint64(r-8,BigInt(this.length*8),s),this.process(e,0);let a=gn(c),g=this.outputLen;if(g%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let E=g/4,o=this.get();if(E>o.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<E;f++)a.setUint32(4*f,o[f],s)}digest(){let{buffer:c,outputLen:t}=this;this.digestInto(c);let e=c.slice(0,t);return this.destroy(),e}_cloneInto(c){c||=new this.constructor,c.set(...this.get());let{blockLen:t,buffer:e,length:r,finished:s,destroyed:A,pos:a}=this;return c.destroyed=A,c.finished=s,c.length=r,c.pos=a,r%t&&c.buffer.set(e),c}clone(){return this._cloneInto()}},Qt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Ue=BigInt(4294967295),er=BigInt(32);nr=(c,t,e)=>c>>>e,rr=(c,t,e)=>c<<32-e|t>>>e,Ae=(c,t,e)=>c>>>e|t<<32-e,oe=(c,t,e)=>c<<32-e|t>>>e,Ge=(c,t,e)=>c<<64-e|t>>>e-32,Le=(c,t,e)=>c>>>e-32|t<<64-e;Wi=(c,t,e)=>(c>>>0)+(t>>>0)+(e>>>0),ji=(c,t,e,r)=>t+e+r+(c/2**32|0)|0,Xi=(c,t,e,r)=>(c>>>0)+(t>>>0)+(e>>>0)+(r>>>0),Vi=(c,t,e,r,s)=>t+e+r+s+(c/2**32|0)|0,$i=(c,t,e,r,s)=>(c>>>0)+(t>>>0)+(e>>>0)+(r>>>0)+(s>>>0),Zi=(c,t,e,r,s,A)=>t+e+r+s+A+(c/2**32|0)|0,yr=qi(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(c=>BigInt(c))),zi=yr[0],ts=yr[1],Yt=new Uint32Array(80),Kt=new Uint32Array(80),es=class extends Ki{constructor(c){super(128,c,16,!1)}get(){let{Ah:c,Al:t,Bh:e,Bl:r,Ch:s,Cl:A,Dh:a,Dl:g,Eh:E,El:o,Fh:f,Fl:I,Gh:u,Gl:p,Hh:y,Hl:m}=this;return[c,t,e,r,s,A,a,g,E,o,f,I,u,p,y,m]}set(c,t,e,r,s,A,a,g,E,o,f,I,u,p,y,m){this.Ah=c|0,this.Al=t|0,this.Bh=e|0,this.Bl=r|0,this.Ch=s|0,this.Cl=A|0,this.Dh=a|0,this.Dl=g|0,this.Eh=E|0,this.El=o|0,this.Fh=f|0,this.Fl=I|0,this.Gh=u|0,this.Gl=p|0,this.Hh=y|0,this.Hl=m|0}process(c,t){for(let C=0;C<16;C++,t+=4)Yt[C]=c.getUint32(t),Kt[C]=c.getUint32(t+=4);for(let C=16;C<80;C++){let B=Yt[C-15]|0,S=Kt[C-15]|0,b=Ae(B,S,1)^Ae(B,S,8)^nr(B,S,7),_=oe(B,S,1)^oe(B,S,8)^rr(B,S,7),F=Yt[C-2]|0,w=Kt[C-2]|0,R=Ae(F,w,19)^Ge(F,w,61)^nr(F,w,6),M=oe(F,w,19)^Le(F,w,61)^rr(F,w,6),U=Xi(_,M,Kt[C-7],Kt[C-16]),H=Vi(U,b,R,Yt[C-7],Yt[C-16]);Yt[C]=H|0,Kt[C]=U|0}let{Ah:e,Al:r,Bh:s,Bl:A,Ch:a,Cl:g,Dh:E,Dl:o,Eh:f,El:I,Fh:u,Fl:p,Gh:y,Gl:m,Hh:v,Hl:l}=this;for(let C=0;C<80;C++){let B=Ae(f,I,14)^Ae(f,I,18)^Ge(f,I,41),S=oe(f,I,14)^oe(f,I,18)^Le(f,I,41),b=f&u^~f&y,_=I&p^~I&m,F=$i(l,S,_,ts[C],Kt[C]),w=Zi(F,v,B,b,zi[C],Yt[C]),R=F|0,M=Ae(e,r,28)^Ge(e,r,34)^Ge(e,r,39),U=oe(e,r,28)^Le(e,r,34)^Le(e,r,39),H=e&s^e&a^s&a,K=r&A^r&g^A&g;v=y|0,l=m|0,y=u|0,m=p|0,u=f|0,p=I|0,{h:f,l:I}=Ht(E|0,o|0,w|0,R|0),E=a|0,o=g|0,a=s|0,g=A|0,s=e|0,A=r|0;let q=Wi(R,U,K);e=ji(q,w,M,H),r=q|0}({h:e,l:r}=Ht(this.Ah|0,this.Al|0,e|0,r|0)),{h:s,l:A}=Ht(this.Bh|0,this.Bl|0,s|0,A|0),{h:a,l:g}=Ht(this.Ch|0,this.Cl|0,a|0,g|0),{h:E,l:o}=Ht(this.Dh|0,this.Dl|0,E|0,o|0),{h:f,l:I}=Ht(this.Eh|0,this.El|0,f|0,I|0),{h:u,l:p}=Ht(this.Fh|0,this.Fl|0,u|0,p|0),{h:y,l:m}=Ht(this.Gh|0,this.Gl|0,y|0,m|0),{h:v,l}=Ht(this.Hh|0,this.Hl|0,v|0,l|0),this.set(e,r,s,A,a,g,E,o,f,I,u,p,y,m,v,l)}roundClean(){ln(Yt,Kt)}destroy(){ln(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},ns=class extends es{Ah=Qt[0]|0;Al=Qt[1]|0;Bh=Qt[2]|0;Bl=Qt[3]|0;Ch=Qt[4]|0;Cl=Qt[5]|0;Dh=Qt[6]|0;Dl=Qt[7]|0;Eh=Qt[8]|0;El=Qt[9]|0;Fh=Qt[10]|0;Fl=Qt[11]|0;Gh=Qt[12]|0;Gl=Qt[13]|0;Hh=Qt[14]|0;Hl=Qt[15]|0;constructor(){super(64)}},rs=Pi(()=>new ns,Yi(3)),is=dn;});var jr={};Be(jr,{Point:()=>Lt,etc:()=>Cs,getPublicKey:()=>Pr,getPublicKeyAsync:()=>Hr,hash:()=>gs,hashes:()=>Ln,keygen:()=>Bs,keygenAsync:()=>ps,sign:()=>ds,signAsync:()=>ls,utils:()=>Qs,verify:()=>Es,verifyAsync:()=>Is});var vr,bt,Je,mr,Sr,Sn,_n,ss,Gt,Ee,As,ft,os,as,cs,Nt,Xe,Tr,Fr,vn,Pt,_r,Tn,kr,hs,ee,xr,qe,te,Y,Mr,Ur,Gr,gs,Rn,Dn,Lt,Wt,ce,Lr,Fn,Ut,fs,Rr,us,We,kn,xn,Or,Mn,Un,Hr,Pr,Yr,Kr,Jr,ls,ds,Gn,qr,Is,Es,Cs,Ln,On,Bs,ps,Qs,je,ys,Wr,Nn,bs,Dr,Nr,ws,Xr=Xt(()=>{vr={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:bt,n:Je,Gx:mr,Gy:Sr,a:Sn,d:_n,h:ss}=vr,Gt=32,Ee=64,As=(...c)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...c)},ft=(c="")=>{let t=new Error(c);throw As(t,ft),t},os=c=>typeof c=="bigint",as=c=>typeof c=="string",cs=c=>c instanceof Uint8Array||ArrayBuffer.isView(c)&&c.constructor.name==="Uint8Array",Nt=(c,t,e="")=>{let r=cs(c),s=c?.length,A=t!==void 0;if(!r||A&&s!==t){let a=e&&`"${e}" `,g=A?` of length ${t}`:"",E=r?`length=${s}`:`type=${typeof c}`;ft(a+"expected Uint8Array"+g+", got "+E)}return c},Xe=c=>new Uint8Array(c),Tr=c=>Uint8Array.from(c),Fr=(c,t)=>c.toString(16).padStart(t,"0"),vn=c=>Array.from(Nt(c)).map(t=>Fr(t,2)).join(""),Pt={_0:48,_9:57,A:65,F:70,a:97,f:102},_r=c=>{if(c>=Pt._0&&c<=Pt._9)return c-Pt._0;if(c>=Pt.A&&c<=Pt.F)return c-(Pt.A-10);if(c>=Pt.a&&c<=Pt.f)return c-(Pt.a-10)},Tn=c=>{let t="hex invalid";if(!as(c))return ft(t);let e=c.length,r=e/2;if(e%2)return ft(t);let s=Xe(r);for(let A=0,a=0;A<r;A++,a+=2){let g=_r(c.charCodeAt(a)),E=_r(c.charCodeAt(a+1));if(g===void 0||E===void 0)return ft(t);s[A]=g*16+E}return s},kr=()=>globalThis?.crypto,hs=()=>kr()?.subtle??ft("crypto.subtle must be defined, consider polyfill"),ee=(...c)=>{let t=Xe(c.reduce((r,s)=>r+Nt(s).length,0)),e=0;return c.forEach(r=>{t.set(r,e),e+=r.length}),t},xr=(c=Gt)=>kr().getRandomValues(Xe(c)),qe=BigInt,te=(c,t,e,r="bad number: out of range")=>os(c)&&t<=c&&c<e?c:ft(r),Y=(c,t=bt)=>{let e=c%t;return e>=0n?e:t+e},Mr=c=>Y(c,Je),Ur=(c,t)=>{(c===0n||t<=0n)&&ft("no inverse n="+c+" mod="+t);let e=Y(c,t),r=t,s=0n,A=1n,a=1n,g=0n;for(;e!==0n;){let E=r/e,o=r%e,f=s-a*E,I=A-g*E;r=e,e=o,s=a,A=g,a=f,g=I}return r===1n?Y(s,t):ft("no inverse")},Gr=c=>{let t=Ln[c];return typeof t!="function"&&ft("hashes."+c+" not set"),t},gs=c=>Gr("sha512")(c),Rn=c=>c instanceof Lt?c:ft("Point expected"),Dn=2n**256n,Lt=class c{static BASE;static ZERO;X;Y;Z;T;constructor(t,e,r,s){let A=Dn;this.X=te(t,0n,A),this.Y=te(e,0n,A),this.Z=te(r,1n,A),this.T=te(s,0n,A),Object.freeze(this)}static CURVE(){return vr}static fromAffine(t){return new c(t.x,t.y,1n,Y(t.x*t.y))}static fromBytes(t,e=!1){let r=_n,s=Tr(Nt(t,Gt)),A=t[31];s[31]=A&-129;let a=Fn(s);te(a,0n,e?Dn:bt);let E=Y(a*a),o=Y(E-1n),f=Y(r*E+1n),{isValid:I,value:u}=us(o,f);I||ft("bad point: y not sqrt");let p=(u&1n)===1n,y=(A&128)!==0;return!e&&u===0n&&y&&ft("bad point: x==0, isLastByteOdd"),y!==p&&(u=Y(-u)),new c(u,a,1n,Y(u*a))}static fromHex(t,e){return c.fromBytes(Tn(t),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=Sn,e=_n,r=this;if(r.is0())return ft("bad point: ZERO");let{X:s,Y:A,Z:a,T:g}=r,E=Y(s*s),o=Y(A*A),f=Y(a*a),I=Y(f*f),u=Y(E*t),p=Y(f*Y(u+o)),y=Y(I+Y(e*Y(E*o)));if(p!==y)return ft("bad point: equation left != right (1)");let m=Y(s*A),v=Y(a*g);return m!==v?ft("bad point: equation left != right (2)"):this}equals(t){let{X:e,Y:r,Z:s}=this,{X:A,Y:a,Z:g}=Rn(t),E=Y(e*g),o=Y(A*s),f=Y(r*g),I=Y(a*s);return E===o&&f===I}is0(){return this.equals(ce)}negate(){return new c(Y(-this.X),this.Y,this.Z,Y(-this.T))}double(){let{X:t,Y:e,Z:r}=this,s=Sn,A=Y(t*t),a=Y(e*e),g=Y(2n*Y(r*r)),E=Y(s*A),o=t+e,f=Y(Y(o*o)-A-a),I=E+a,u=I-g,p=E-a,y=Y(f*u),m=Y(I*p),v=Y(f*p),l=Y(u*I);return new c(y,m,l,v)}add(t){let{X:e,Y:r,Z:s,T:A}=this,{X:a,Y:g,Z:E,T:o}=Rn(t),f=Sn,I=_n,u=Y(e*a),p=Y(r*g),y=Y(A*I*o),m=Y(s*E),v=Y((e+r)*(a+g)-u-p),l=Y(m-y),C=Y(m+y),B=Y(p-f*u),S=Y(v*l),b=Y(C*B),_=Y(v*B),F=Y(l*C);return new c(S,b,F,_)}subtract(t){return this.add(Rn(t).negate())}multiply(t,e=!0){if(!e&&(t===0n||this.is0()))return ce;if(te(t,1n,Je),t===1n)return this;if(this.equals(Wt))return ws(t).p;let r=ce,s=Wt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?r=r.add(A):e&&(s=s.add(A));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:e,Z:r}=this;if(this.equals(ce))return{x:0n,y:1n};let s=Ur(r,bt);Y(r*s)!==1n&&ft("invalid inverse");let A=Y(t*s),a=Y(e*s);return{x:A,y:a}}toBytes(){let{x:t,y:e}=this.assertValidity().toAffine(),r=Lr(e);return r[31]|=t&1n?128:0,r}toHex(){return vn(this.toBytes())}clearCofactor(){return this.multiply(qe(ss),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Je/2n,!1).double();return Je%2n&&(t=t.add(this)),t.is0()}},Wt=new Lt(mr,Sr,1n,Y(mr*Sr)),ce=new Lt(0n,1n,1n,0n);Lt.BASE=Wt;Lt.ZERO=ce;Lr=c=>Tn(Fr(te(c,0n,Dn),Ee)).reverse(),Fn=c=>qe("0x"+vn(Tr(Nt(c)).reverse())),Ut=(c,t)=>{let e=c;for(;t-- >0n;)e*=e,e%=bt;return e},fs=c=>{let e=c*c%bt*c%bt,r=Ut(e,2n)*e%bt,s=Ut(r,1n)*c%bt,A=Ut(s,5n)*s%bt,a=Ut(A,10n)*A%bt,g=Ut(a,20n)*a%bt,E=Ut(g,40n)*g%bt,o=Ut(E,80n)*E%bt,f=Ut(o,80n)*E%bt,I=Ut(f,10n)*A%bt;return{pow_p_5_8:Ut(I,2n)*c%bt,b2:e}},Rr=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,us=(c,t)=>{let e=Y(t*t*t),r=Y(e*e*t),s=fs(c*r).pow_p_5_8,A=Y(c*e*s),a=Y(t*A*A),g=A,E=Y(A*Rr),o=a===c,f=a===Y(-c),I=a===Y(-c*Rr);return o&&(A=g),(f||I)&&(A=E),(Y(A)&1n)===1n&&(A=Y(-A)),{isValid:o||f,value:A}},We=c=>Mr(Fn(c)),kn=(...c)=>Ln.sha512Async(ee(...c)),xn=(...c)=>Gr("sha512")(ee(...c)),Or=c=>{let t=c.slice(0,Gt);t[0]&=248,t[31]&=127,t[31]|=64;let e=c.slice(Gt,Ee),r=We(t),s=Wt.multiply(r),A=s.toBytes();return{head:t,prefix:e,scalar:r,point:s,pointBytes:A}},Mn=c=>kn(Nt(c,Gt)).then(Or),Un=c=>Or(xn(Nt(c,Gt))),Hr=c=>Mn(c).then(t=>t.pointBytes),Pr=c=>Un(c).pointBytes,Yr=c=>kn(c.hashable).then(c.finish),Kr=c=>c.finish(xn(c.hashable)),Jr=(c,t,e)=>{let{pointBytes:r,scalar:s}=c,A=We(t),a=Wt.multiply(A).toBytes();return{hashable:ee(a,r,e),finish:o=>{let f=Mr(A+We(o)*s);return Nt(ee(a,Lr(f)),Ee)}}},ls=async(c,t)=>{let e=Nt(c),r=await Mn(t),s=await kn(r.prefix,e);return Yr(Jr(r,s,e))},ds=(c,t)=>{let e=Nt(c),r=Un(t),s=xn(r.prefix,e);return Kr(Jr(r,s,e))},Gn={zip215:!0},qr=(c,t,e,r=Gn)=>{c=Nt(c,Ee),t=Nt(t),e=Nt(e,Gt);let{zip215:s}=r,A,a,g,E,o=Uint8Array.of();try{A=Lt.fromBytes(e,s),a=Lt.fromBytes(c.slice(0,Gt),s),g=Fn(c.slice(Gt,Ee)),E=Wt.multiply(g,!1),o=ee(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:I=>{if(E==null||!s&&A.isSmallOrder())return!1;let u=We(I);return a.add(A.multiply(u,!1)).add(E.negate()).clearCofactor().is0()}}},Is=async(c,t,e,r=Gn)=>Yr(qr(c,t,e,r)),Es=(c,t,e,r=Gn)=>Kr(qr(c,t,e,r)),Cs={bytesToHex:vn,hexToBytes:Tn,concatBytes:ee,mod:Y,invert:Ur,randomBytes:xr},Ln={sha512Async:async c=>{let t=hs(),e=ee(c);return Xe(await t.digest("SHA-512",e.buffer))},sha512:void 0},On=(c=xr(Gt))=>c,Bs=c=>{let t=On(c),e=Pr(t);return{secretKey:t,publicKey:e}},ps=async c=>{let t=On(c),e=await Hr(t);return{secretKey:t,publicKey:e}},Qs={getExtendedPublicKeyAsync:Mn,getExtendedPublicKey:Un,randomSecretKey:On},je=8,ys=256,Wr=Math.ceil(ys/je)+1,Nn=2**(je-1),bs=()=>{let c=[],t=Wt,e=t;for(let r=0;r<Wr;r++){e=t,c.push(e);for(let s=1;s<Nn;s++)e=e.add(t),c.push(e);t=e.double()}return c},Nr=(c,t)=>{let e=t.negate();return c?e:t},ws=c=>{let t=Dr||(Dr=bs()),e=ce,r=Wt,s=2**je,A=s,a=qe(s-1),g=qe(je);for(let E=0;E<Wr;E++){let o=Number(c&a);c>>=g,o>Nn&&(o-=A,c+=1n);let f=E*Nn,I=f,u=f+Math.abs(o)-1,p=E%2!==0,y=o<0;o===0?r=r.add(Nr(p,t[I])):e=e.add(Nr(y,t[u]))}return c!==0n&&ft("invalid wnaf"),{p:e,f:r}}});var Vr={};Be(Vr,{default:()=>Ss});var ms,Ss,$r=Xt(()=>{ms=(()=>{var c,t,e={773(A,a,g){var E,o=typeof self<"u"&&self.Module!==void 0?self.Module:{},f={};for(E in o)o.hasOwnProperty(E)&&(f[E]=o[E]);var I,u,p,y,m=[];I=typeof window=="object",u=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!I&&!p&&!u;var v,l,C,B,S,b="";p?(b=u?g(967).dirname(b)+"/":"//",v=function(k,G){return B||(B=g(145)),S||(S=g(967)),k=S.normalize(k),B.readFileSync(k,G?null:"utf8")},C=function(k){var G=v(k,!0);return G.buffer||(G=new Uint8Array(G)),M(G.buffer),G},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),A.exports=o,process.on("uncaughtException",function(k){if(!(k instanceof x))throw k}),process.on("unhandledRejection",X),o.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read<"u"&&(v=function(k){return read(k)}),C=function(k){var G;return typeof readbuffer=="function"?new Uint8Array(readbuffer(k)):(M(typeof(G=read(k,"binary"))=="object"),G)},typeof scriptArgs<"u"?m=scriptArgs:arguments!==void 0&&(m=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(I||u)&&(u?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),b=b.indexOf("blob:")!==0?b.substr(0,b.lastIndexOf("/")+1):"",v=function(k){var G=new XMLHttpRequest;return G.open("GET",k,!1),G.send(null),G.responseText},u&&(C=function(k){var G=new XMLHttpRequest;return G.open("GET",k,!1),G.responseType="arraybuffer",G.send(null),new Uint8Array(G.response)}),l=function(k,G,n){var i=new XMLHttpRequest;i.open("GET",k,!0),i.responseType="arraybuffer",i.onload=function(){i.status==200||i.status==0&&i.response?G(i.response):n()},i.onerror=n,i.send(null)}),o.print||console.log.bind(console);var _,F,w=o.printErr||console.warn.bind(console);for(E in f)f.hasOwnProperty(E)&&(o[E]=f[E]);f=null,o.arguments&&(m=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(_=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&X("no native wasm support detected");var R=!1;function M(k,G){k||X("Assertion failed: "+G)}var U,H,K=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function q(k){U=k,o.HEAP8=new Int8Array(k),o.HEAP16=new Int16Array(k),o.HEAP32=new Int32Array(k),o.HEAPU8=H=new Uint8Array(k),o.HEAPU16=new Uint16Array(k),o.HEAPU32=new Uint32Array(k),o.HEAPF32=new Float32Array(k),o.HEAPF64=new Float64Array(k)}o.INITIAL_MEMORY;var $,st=[],J=[],Rt=[],at=0,ut=null,j=null;function X(k){throw o.onAbort&&o.onAbort(k),w(k+=""),R=!0,k="abort("+k+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(k)}function Et(k){return k.startsWith("data:application/octet-stream;base64,")}function At(k){return k.startsWith("file://")}o.preloadedImages={},o.preloadedAudios={};var wt,nt="argon2.wasm";function vt(k){try{if(k==nt&&_)return new Uint8Array(_);if(C)return C(k);throw"both async and sync fetching of the wasm failed"}catch(G){X(G)}}function St(k){for(;k.length>0;){var G=k.shift();if(typeof G!="function"){var n=G.func;typeof n=="number"?G.arg===void 0?$.get(n)():$.get(n)(G.arg):n(G.arg===void 0?null:G.arg)}else G(o)}}function jt(k){try{return F.grow(k-U.byteLength+65535>>>16),q(F.buffer),1}catch{}}Et(nt)||(wt=nt,nt=o.locateFile?o.locateFile(wt,b):b+wt);var Tt,Ct={a:function(k,G,n){H.copyWithin(k,G,G+n)},b:function(k){var G,n=H.length;if((k>>>=0)>2147418112)return!1;for(var i=1;i<=4;i*=2){var h=n*(1+.2/i);if(h=Math.min(h,k+100663296),jt(Math.min(2147418112,((G=Math.max(k,h))%65536>0&&(G+=65536-G%65536),G))))return!0}return!1}},mt=((function(){var k={a:Ct};function G(h,Q){var D,T=h.exports;o.asm=T,q((F=o.asm.c).buffer),$=o.asm.k,D=o.asm.d,J.unshift(D),(function(L){if(at--,o.monitorRunDependencies&&o.monitorRunDependencies(at),at==0&&(ut!==null&&(clearInterval(ut),ut=null),j)){var W=j;j=null,W()}})()}function n(h){G(h.instance)}function i(h){return(function(){if(!_&&(I||u)){if(typeof fetch=="function"&&!At(nt))return fetch(nt,{credentials:"same-origin"}).then(function(Q){if(!Q.ok)throw"failed to load wasm binary file at '"+nt+"'";return Q.arrayBuffer()}).catch(function(){return vt(nt)});if(l)return new Promise(function(Q,D){l(nt,function(T){Q(new Uint8Array(T))},D)})}return Promise.resolve().then(function(){return vt(nt)})})().then(function(Q){return WebAssembly.instantiate(Q,k)}).then(h,function(Q){w("failed to asynchronously prepare wasm: "+Q),X(Q)})}if(at++,o.monitorRunDependencies&&o.monitorRunDependencies(at),o.instantiateWasm)try{return o.instantiateWasm(k,G)}catch(h){return w("Module.instantiateWasm callback failed with error: "+h),!1}_||typeof WebAssembly.instantiateStreaming!="function"||Et(nt)||At(nt)||typeof fetch!="function"?i(n):fetch(nt,{credentials:"same-origin"}).then(function(h){return WebAssembly.instantiateStreaming(h,k).then(n,function(Q){return w("wasm streaming compile failed: "+Q),w("falling back to ArrayBuffer instantiation"),i(n)})})})(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.d).apply(null,arguments)},o._argon2_hash=function(){return(o._argon2_hash=o.asm.e).apply(null,arguments)},o._malloc=function(){return(mt=o._malloc=o.asm.f).apply(null,arguments)}),N=(o._free=function(){return(o._free=o.asm.g).apply(null,arguments)},o._argon2_verify=function(){return(o._argon2_verify=o.asm.h).apply(null,arguments)},o._argon2_error_message=function(){return(o._argon2_error_message=o.asm.i).apply(null,arguments)},o._argon2_encodedlen=function(){return(o._argon2_encodedlen=o.asm.j).apply(null,arguments)},o._argon2_hash_ext=function(){return(o._argon2_hash_ext=o.asm.l).apply(null,arguments)},o._argon2_verify_ext=function(){return(o._argon2_verify_ext=o.asm.m).apply(null,arguments)},o.stackAlloc=function(){return(N=o.stackAlloc=o.asm.n).apply(null,arguments)});function x(k){this.name="ExitStatus",this.message="Program terminated with exit("+k+")",this.status=k}function O(k){function G(){Tt||(Tt=!0,o.calledRun=!0,R||(St(J),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){var n;if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)n=o.postRun.shift(),Rt.unshift(n);St(Rt)})()))}k=k||m,at>0||((function(){var n;if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)n=o.preRun.shift(),st.unshift(n);St(st)})(),at>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),G()},1)):G()))}if(o.allocate=function(k,G){var n;return n=G==1?N(k.length):mt(k.length),k.subarray||k.slice?H.set(k,n):H.set(new Uint8Array(k),n),n},o.UTF8ToString=function(k,G){return k?(function(n,i,h){for(var Q=i+h,D=i;n[D]&&!(D>=Q);)++D;if(D-i>16&&n.subarray&&K)return K.decode(n.subarray(i,D));for(var T="";i<D;){var L=n[i++];if(128&L){var W=63&n[i++];if((224&L)!=192){var rt=63&n[i++];if((L=(240&L)==224?(15&L)<<12|W<<6|rt:(7&L)<<18|W<<12|rt<<6|63&n[i++])<65536)T+=String.fromCharCode(L);else{var Z=L-65536;T+=String.fromCharCode(55296|Z>>10,56320|1023&Z)}}else T+=String.fromCharCode((31&L)<<6|W)}else T+=String.fromCharCode(L)}return T})(H,k,G):""},o.ALLOC_NORMAL=0,j=function k(){Tt||O(),Tt||(j=k)},o.run=O,o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();O(),A.exports=o,o.unloadRuntime=function(){typeof self<"u"&&delete self.Module,o=F=$=U=H=void 0,delete A.exports}},631:function(A,a,g){var E,o;typeof self<"u",(o=typeof(E=function(){let f=typeof self<"u"?self:this,I={Argon2d:0,Argon2i:1,Argon2id:2};function u(l){if(u._promise)return u._promise;if(u._module)return Promise.resolve(u._module);let C;return C=f.process&&f.process.versions&&f.process.versions.node?p().then(B=>new Promise(S=>{B.postRun=()=>S(B)})):(f.loadArgon2WasmBinary?f.loadArgon2WasmBinary():Promise.resolve(g(721)).then(B=>(function(S){let b=atob(S),_=new Uint8Array(new ArrayBuffer(b.length));for(let F=0;F<b.length;F++)_[F]=b.charCodeAt(F);return _})(B))).then(B=>{var S,b;return S=B,b=l?(function(_){let F=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*_/65536),256)+256,F),maximum:F})})(l):void 0,new Promise(_=>(f.Module={wasmBinary:S,wasmMemory:b,postRun(){_(Module)}},p()))}),u._promise=C,C.then(B=>(u._module=B,delete u._promise,B))}function p(){return f.loadArgon2WasmModule?f.loadArgon2WasmModule():Promise.resolve(g(773))}function y(l,C){return l.allocate(C,"i8",l.ALLOC_NORMAL)}function m(l,C){return y(l,new Uint8Array([...C,0]))}function v(l){if(typeof l!="string")return l;if(typeof TextEncoder=="function")return new TextEncoder().encode(l);if(typeof Buffer=="function")return Buffer.from(l);throw Error("Don't know how to encode UTF8")}return{ArgonType:I,hash:function(l){let C=l.mem||1024;return u(C).then(B=>{let S=l.time||1,b=l.parallelism||1,_=v(l.pass),F=m(B,_),w=_.length,R=v(l.salt),M=m(B,R),U=R.length,H=l.type||I.Argon2d,K=B.allocate(Array(l.hashLen||24),"i8",B.ALLOC_NORMAL),q=l.secret?y(B,l.secret):0,$=l.secret?l.secret.byteLength:0,st=l.ad?y(B,l.ad):0,J=l.ad?l.ad.byteLength:0,Rt=l.hashLen||24,at=B._argon2_encodedlen(S,C,b,U,Rt,H),ut=B.allocate(Array(at+1),"i8",B.ALLOC_NORMAL),j,X,Et;try{X=B._argon2_hash_ext(S,C,b,F,w,M,U,K,Rt,ut,at,H,q,$,st,J,19)}catch(At){j=At}if(X!==0||j){try{j||(j=B.UTF8ToString(B._argon2_error_message(X)))}catch{}Et={message:j,code:X}}else{let At="",wt=new Uint8Array(Rt);for(let nt=0;nt<Rt;nt++){let vt=B.HEAP8[K+nt];wt[nt]=vt,At+=("0"+(255&vt).toString(16)).slice(-2)}Et={hash:wt,hashHex:At,encoded:B.UTF8ToString(ut)}}try{B._free(F),B._free(M),B._free(K),B._free(ut),st&&B._free(st),q&&B._free(q)}catch{}if(j)throw Et;return Et})},verify:function(l){return u().then(C=>{let B=v(l.pass),S=m(C,B),b=B.length,_=l.secret?y(C,l.secret):0,F=l.secret?l.secret.byteLength:0,w=l.ad?y(C,l.ad):0,R=l.ad?l.ad.byteLength:0,M=m(C,v(l.encoded)),U,H,K,q=l.type;if(q===void 0){let $=l.encoded.split("$")[1];$&&(q=I[$=$.replace("a","A")]||I.Argon2d)}try{H=C._argon2_verify_ext(M,S,b,_,F,w,R,q)}catch($){U=$}if(H||U){try{U||(U=C.UTF8ToString(C._argon2_error_message(H)))}catch{}K={message:U,code:H}}try{C._free(S),C._free(M)}catch{}if(U)throw K;return K})},unloadRuntime:function(){u._module&&(u._module.unloadRuntime(),delete u._promise,delete u._module)}}})=="function"?E.apply(a,[]):E)===void 0||(A.exports=o)},721:function(A,a){A.exports="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DwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},r={};function s(A){var a=r[A];if(a!==void 0)return a.exports;var g=r[A]={exports:{}};return e[A].call(g.exports,g,g.exports,s),g.exports}return s(631)})(),Ss=ms});var ze=class c{verbose;mockMode;static#e=null;#t=null;#n=!1;#r=0;#i=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(t=0,e=!1){if(this.verbose=t,this.mockMode=e,c.#e)return c.#e;c.#e=this}static get instance(){return c.#e||new c}static get time(){return c.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(e=>setTimeout(e,50));return this.time}this.#n=!0;try{let e=await this.#s();return e.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#o(e),this.#r=Date.now(),e.length<this.#i.length&&setTimeout(()=>this.#a(),100),this.time)}catch(e){return console.error("[Clock] Sync failed:",e),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#r,age:this.#r?Date.now()-this.#r:null}}async#s(){let t=this.#i.map(s=>this.#A(s)),e=await Promise.allSettled(t),r=[];for(let s of e)s.status==="fulfilled"&&r.push(s.value);return r}async#A(t){let e=new AbortController,r=setTimeout(()=>e.abort(),2e3);try{let s=Date.now(),A=await fetch(`https://${t}`,{method:"HEAD",signal:e.signal,cache:"no-cache"}),a=(Date.now()-s)/2;if(!A.ok)throw new Error(`HTTP ${A.status}`);let g=new Date(A.headers.get("date")).getTime();if(isNaN(g))throw new Error("Invalid date header");return{source:t,serverTime:g+a,localTime:Date.now(),latency:a*2}}finally{clearTimeout(r)}}#o(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((s,A)=>s.latency-A.latency);let e=[];for(let s of t)e.push(s.serverTime-s.localTime);e.sort((s,A)=>s-A);let r=Math.floor(e.length/2);return e.length%2===0?(e[r-1]+e[r])/2:e[r]}async#a(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let e=this.#o(t);Math.abs(e-this.#t)>100&&(this.#t=e)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},et=ze.instance;await _t();await _t();var gi=1e4,fi=1e6,ui=1e5,li=36e5,It={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},Qe=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,e,r=0){this.id=t,this.cryptoCodex=e,this.verbose=r}tick(){for(let t in this.trustBalances){let e=this.trustBalances[t];e!==0&&(e=e<0?Math.min(0,e+1e3):Math.max(0,e-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=gi,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,e){if(It[e])return this.adjustTrust(t,It[e])}adjustTrust(t,e,r="na"){t!==this.id&&(e&&(this.trustBalances[t]=Math.min(li,(this.trustBalances[t]||0)+e)),e&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${e}ms (${r}). Updated: ${this.trustBalances[t]}ms.`,it.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,it.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return ct.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,e,r){this.bytesCounters[r][t]||(this.bytesCounters[r][t]=0),this.bytesCounters[r][t]+=e;let[s,A]=r==="gossip"?[ui,It.GOSSIP_FLOOD]:[fi,It.UNICAST_FLOOD];return this.bytesCounters[r][t]<s?!0:this.adjustTrust(t,A,`Message ${r} flood detected`)}async digestMessage(t,e,r,s=.01){let{senderId:A,pubkey:a,topic:g,expectedEnd:E}=e;if(!(!await this.#e(t,e,r)||!this.#t(t,g?"gossip":"unicast",r,E)||!(g?this.#n(t,e):this.#r(t,e)))&&!(this.isBanished(t)||this.isBanished(A)))return this.trustBalances[A]>It.VALID_POW||Math.random()<s&&await this.#i(A,a),!0}async#e(t,e,r){try{let{pubkey:s,signature:A,signatureStart:a}=e,g=r.subarray(0,a);if(!await this.cryptoCodex.verifySignature(s,g,A))throw new Error("Gossip signature invalid");return this.adjustTrust(t,It.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(s){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${s.stack}`,it.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${e}`,it.ARBITER)}this.adjustTrust(t,It.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,e,r,s){if(!s||r.length===s)return!0;this.adjustTrust(t,It.WRONG_LENGTH,`${e} message length mismatch`)}#n(t,e){if(e.HOPS<=(dt.HOPS[e.topic]||dt.HOPS.default))return!0;this.adjustTrust(t,It.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,e){if(e.route.length<=ht.MAX_HOPS)return!0;this.adjustTrust(t,It.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(t,e){await this.cryptoCodex.pubkeyDifficultyCheck(e)?this.adjustTrust(t,It.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,It.WRONG_POW,"Gossip PoW invalid")}};await _t();var di;function ye(c,t=0){let e=typeof c=="string"?(di??=new TextEncoder).encode(c):c,r=e,s=t+374761393&4294967295,A=0;if(r.length>=16){let g=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],E=e,o=E.length-16,f=0;for(A=0;(A&4294967280)<=o;A+=4){let I=A,u=E[I+0]+(E[I+1]<<8),p=E[I+2]+(E[I+3]<<8),y=u*2246822519+(p*2246822519<<16),m=g[f]+y&4294967295;m=m<<13|m>>>19;let v=m&65535,l=m>>>16;g[f]=v*2654435761+(l*2654435761<<16)&4294967295,f=f+1&3}s=(g[0]<<1|g[0]>>>31)+(g[1]<<7|g[1]>>>25)+(g[2]<<12|g[2]>>>20)+(g[3]<<18|g[3]>>>14)&4294967295}s=s+e.length&4294967295;let a=e.length-4;for(;A<=a;A+=4){let g=A,E=r[g+0]+(r[g+1]<<8),o=r[g+2]+(r[g+3]<<8),f=E*3266489917+(o*3266489917<<16);s=s+f&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;A<r.length;++A){let g=r[A];s=s+g*374761393,s=s<<11|s>>>21,s=(s&65535)*2654435761+((s>>>16)*2654435761<<16)&4294967295}return s=s^s>>>15,s=((s&65535)*2246822519&4294967295)+((s>>>16)*2246822519<<16),s=s^s>>>13,s=((s&65535)*3266489917&4294967295)+((s>>>16)*3266489917<<16),s=s^s>>>16,s<0?s+4294967296:s}async function Ii(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var qn=await Ii(),be=class{id;verbose;stunUrls;constructor(t,e,r=0){this.id=t,this.verbose=r,this.stunUrls=e}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=lt.MAX_SDP_OFFERS;offers={};tick(){let t=et.time;for(let A in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[A];t<A||(a?.destroy(),delete this.offerInstanceByExpiration[A],this.creatingOffer=!1)}for(let A in this.offers){let a=this.offers[A];if(a.offererInstance.destroyed){delete this.offers[A];continue}if(a.isUsed){delete this.offers[A];continue}a.timestamp+lt.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[A])}let e=0;for(let A in this.offers){e++;let a=this.offers[A];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let g=a.answers.filter(f=>!f.used);if(!g.length)continue;let E=g.reduce((f,I)=>f.timestamp>I.timestamp?f:I);if(!E)continue;E.used=!0;let o=t-E.timestamp;o>ct.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(E.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${E.peerId} for offer ${A} (received since ${o} ms)`))}if(this.creatingOffer||e>=this.offersToCreate)return;this.creatingOffer=!0;let r=t+(lt.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(r);this.offerInstanceByExpiration[r]=s}#e(t){let e=lt.ICE_COMPLETE_TIMEOUT||1e3,r=new lt.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:e,wrtc:qn,config:{iceServers:this.stunUrls}});return r.on("error",s=>this.#n(s)),r.on("signal",s=>{let{candidate:A,type:a}=s;if(!s||A)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(s));if(a!=="offer")throw new Error("Unexpected signal type from offerer instance: "+a);delete this.offerInstanceByExpiration[t];let g=ye(JSON.stringify(s));r.on("connect",()=>{this.offers[g]&&(this.offers[g].isUsed=!0),this.onConnect(void 0,r)}),this.offers[g]={timestamp:et.time,sentCounter:0,signal:s,offererInstance:r,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),r}#t(t,e="",r=2,s="includes"){return s[0]==="i"&&!t.message.includes(e)?!1:t.message.startsWith(e)?(this.verbose>=r&&console.info(`%cOfferManager => ${t.message}`,it.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,e=!0){let r=null,s=null,A=null;for(let a in this.offers){let g=this.offers[a],{isUsed:E,sentCounter:o,signal:f,timestamp:I}=g;if(E||o>t)continue;let u=et.time-I;if(!(e&&u>lt.SDP_OFFER_EXPIRATION/2)&&!(A&&u>A)){r=g,s=a,A=u;break}}return{offerHash:s,readyOffer:r,since:A}}addSignalAnswer(t,e,r,s){!e||e.type!=="answer"||!r||!this.offers[r]||this.offers[r].answerers[t]||(this.offers[r].answerers[t]=!0,this.offers[r].answers.push({peerId:t,signal:e,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${r}`))}getTransportInstanceForSignal(t,e,r){try{if(!e||!e.type||!e.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:A}=e;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!A)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!A)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let E=r?this.offers[r]?.offererInstance:null;if(!E)throw new Error("No pending offer found for the given offer hash to accept the answer");return E}let a=lt.ICE_COMPLETE_TIMEOUT||1e3,g=new lt.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:qn,config:{iceServers:this.stunUrls}});return g.on("error",E=>this.#n(E)),g.on("signal",E=>this.onSignalAnswer(t,E,r)),g.on("connect",()=>this.onConnect(t,g)),g}catch(s){if(s.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&s.message.startsWith("No pending offer found"))return console.info(`%c${s.message}`,it.PEER_STORE);this.verbose>0&&console.error(s.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await _t();var{SANDBOX:js,ICE_CANDIDATE_EMITTER:Xs,TEST_WS_EVENT_MANAGER:Vs}=Bt.ENABLED?await De().then(()=>Re):{},sn=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,e=et.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=e}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},Vt=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,e,r,s=!1){this.peerId=t,this.transportInstance=e,this.isWebSocket=s,this.direction=r,this.pendingUntil=et.time+ct.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=et.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?et.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},Ne=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;kick={};callbacks={connect:[(t,e)=>this.#e(t,e)],disconnect:[(t,e)=>this.#t(t,e)],signal:[],data:[]};constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.offerManager=r,this.arbiter=s,this.verbose=A,this.offerManager.onSignalAnswer=(a,g,E)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let o of this.callbacks.signal)o(a,{signal:g,offerHash:E})},this.offerManager.onConnect=(a,g)=>{if(this.isDestroy)return g?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let E=a;if(g.on("close",()=>{if(E)for(let o of this.callbacks.disconnect)o(E,g.initiator?"out":"in")}),g.on("data",o=>{if(E)for(let f of this.callbacks.data)f(E,o);else{let f=new Uint8Array(o);if(f[0]>127)return;let{route:I,type:u,neighborsList:p}=e.readUnicastMessage(f)||{};if(u!=="handshake"||I.length!==2||I[1]!==this.id)return;E=I[0],this.digestPeerNeighbors(E,p);for(let y of this.callbacks.connect)y(E,"out")}}),a)for(let o of this.callbacks.connect)o(a,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,e){if(!this.connecting[t]?.[e])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,it.PEER_STORE):null;let r=this.connecting[t][e];if(this.#n(t,"connecting",e),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,it.PEER_STORE),r.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,it.PEER_STORE),r.close();r.setConnected(),this.connected[t]=r,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,e){this.#n(t,"connected",e)}#n(t,e="both",r="both"){if(!t&&t===this.id)return;let[s,A]=[this.connecting[t],this.connected[t]];if(!s&&!A||(e!=="connecting"&&(A?.direction===r||r==="both")&&(A?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),e==="connected"))return;let a=r==="both"?["out","in"]:[r];for(let g of a)delete s?.[g];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",e="tutu"){for(let r of[t,e])this.known[r]||(this.known[r]=new sn,this.knownCount++),this.known[r].setNeighbor(r===t?e:t)}#i(t="toto",e="tutu"){for(let r of[t,e])this.known[r]&&(this.known[r].unsetNeighbor(r===t?e:t),!(this.known[r].connectionsCount>0)&&(delete this.known[r],this.knownCount--))}cleanupExpired(t=!0){let e=et.time;for(let r of["in","out"])for(let s in this.connecting){if(!this.connecting[s][r])continue;let A=this.connected[s]?1e4:0;this.connecting[s][r].pendingUntil+A>e||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===r&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired (already connected WARNING!).`,"color: white;"),this.connecting[s]?.out?.isWebSocket&&this.connecting[s].out.close(),this.connecting[s]?.in?.close(),this.#n(s,"connecting",r))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,e){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(e)}getUpdatedPeerConnectionsCount(t,e=!0){let r=et.time,s=0,A=this.known[t]?.neighbors||{};for(let a in A){if(a!==this.id&&r-A[a]>ot.PEER_LINK_EXPIRATION){this.#i(t,a);continue}e?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,e,r){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let s=e.type==="offer"?"in":"out";if(this.connecting[t]?.[s])return;let A=this.offerManager.getTransportInstanceForSignal(t,e,r);return A?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new Vt(t,A,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,e,r,s=et.time){let A=this.connecting[t]?.[e.type==="offer"?"in":"out"];try{if(A?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);e.type==="answer"?this.offerManager.addSignalAnswer(t,e,r,s):A.transportInstance.signal(e)}catch(a){console.error(`Error signaling ${e?.type} for ${t}:`,a.stack)}}kickPeer(t,e=6e4,r){e&&(this.kick[t]=et.time+e),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${e/1e3}s. ${r?"| Reason: "+r:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>et.time}digestValidRoute(t=[]){for(let e=1;e<t.length;e++)this.#r(t[e-1],t[e])}digestPeerNeighbors(t,e=[]){if(!(!t||!Array.isArray(e))){for(let r in this.known[t]?.neighbors||{})e.includes(r)||this.#i(t,r);for(let r of e)this.#r(t,r)}}destroy(){this.isDestroy=!0;for(let[t,e]of Object.entries(this.connected))this.#n(t),e.close();for(let[t,e]of Object.entries(this.connecting))this.#n(t),e.in?.close(),e.out?.close();this.offerManager.destroy()}};await _t();var ve=class{cache={};peerStore;constructor(t,e){this.id=t,this.peerStore=e}buildRoutes(t,e=5,r=3,s=1728,A=!0,a=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let g=this.#r(t,r,s,a);if(!g.success)return{routes:[],success:!1,nodesExplored:g.nodesExplored};let o=this.#t(g.paths,A).slice(0,e);return this.cache[t]=o,{routes:o,success:!0,nodesExplored:g.nodesExplored}}#e(t){for(let{path:e}of t)for(let r=1;r<e.length;r++){let s=e[r-1],A=e[r];if(s===this.id){if(!this.peerStore.connected[A])return!1}else if(!this.peerStore.known[s]?.neighbors?.[A])return!1}return!0}#t(t,e){let r=[];for(let s of t)r.push({path:s,hops:s.length-1});return e&&r.sort((s,A)=>s.hops-A.hops),r}#n(t){let e=[],r=this.peerStore.neighborsList,s=[...Array(r.length).keys()].sort(()=>Math.random()-.5);for(let A of s)e.push({path:[this.id,r[A],t],hops:0,score:0});return e.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:e,success:"blind",nodesExplored:e.length}}#r(t,e,r,s){let A=[],a=0,g=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],E=new Map;E.set(this.id,[this.id]);let o=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],f=new Map;f.set(t,[t]);let I=Math.ceil(e/2);for(;(g.length>0||o.length>0)&&a<r;){if(g.length>0){let u=this.#i(g,E,f,I);for(let p of u){let y=this.#s(E.get(p),f.get(p));if(A.push(y),!(y.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}if(o.length>0){let u=this.#i(o,f,E,I);for(let p of u){let y=this.#s(E.get(p),f.get(p));if(A.push(y),!(y.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}}return{success:A.length>0,paths:A,nodesExplored:a}}#i(t,e,r,s){if(t.length===0)return[];let{node:A,path:a,pathSet:g,depth:E}=t.shift();if(E>=s)return[];let o=[];function f(I){if(g.has(I))return;let u=E+1;if(r.has(I)&&o.push(I),e.has(I))return;let p=[...a,I],y=new Set(g).add(I);e.set(I,p),t.push({node:I,path:p,pathSet:y,depth:u})}if(A===this.id)for(let I of this.peerStore.neighborsList)f(I);else for(let I in this.peerStore.known[A]?.neighbors||{})f(I);return o}#s(t,e){let r=t.length+e.length-1,s=new Array(r),A=0;for(let a of t)s[A++]=a;for(let a=e.length-2;a>=0;a--)s[A++]=e[a];return s}};var{SANDBOX:nA,ICE_CANDIDATE_EMITTER:rA,TEST_WS_EVENT_MANAGER:iA}=Bt.ENABLED?await De().then(()=>Re):{},Ei=ve,de=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,r,s,A,a,g,E,o){this.type=t,this.timestamp=e,this.neighborsList=r,this.route=s,this.pubkey=A,this.data=a,this.signature=g,this.signatureStart=E,this.expectedEnd=o}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let e=this.newRoute||this.route,r=[],s=-1;for(let o=0;o<e.length;o++)if(r.push(e[o]),e[o]===t){s=o;break}let A=e[0],a=e[e.length-1],g=s>0?e[s-1]:null,E=s!==-1?e[s+1]:null;return{traveledRoute:r,selfPosition:s,senderId:A,targetId:a,prevId:g,nextId:E,routeLength:e.length}}},Te=class extends de{rerouterPubkey;newRoute;rerouterSignature;constructor(t,e,r,s,A,a,g,E,o){super(t,e,r,s,A,a),this.rerouterPubkey=g,this.newRoute=E,this.rerouterSignature=o}getRerouterId(){return this.newRoute[0]}},Fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=ht.MAX_HOPS;maxRoutes=ht.MAX_ROUTES;maxNodes=ht.MAX_NODES;constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.arbiter=r,this.peerStore=s,this.verbose=A,this.pathFinder=new Ei(this.id,this.peerStore)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}sendUnicast(t,e,r="message",s=1){if(t===this.id)return!1;let A=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!A.success)return!1;let a=A.success==="blind"?1:s;for(let g=0;g<Math.min(a,A.routes.length);g++){let E=A.routes[g].path;if(E.length>ht.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${ht.MAX_HOPS}). BFS incurred.`);continue}let o=this.cryptoCodex.createUnicastMessage(r,e,E,this.peerStore.neighborsList);this.#e(E[1],o)}return!0}#e(t,e){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return r.send(e),{success:!0}}catch(s){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,s.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"unicast"))return;let r=this.cryptoCodex.readUnicastMessage(e);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{traveledRoute:A,selfPosition:a,senderId:g,targetId:E,prevId:o,nextId:f}=r.extractRouteInfo(this.id);if(t===g&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let p of this.callbacks.message_handle||[])p();if(a===-1)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"Self not in route");if(o&&t!==o)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(g===this.id)return this.arbiter.adjustTrust(t,It.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(g===t?`(${this.id}) Direct ${r.type} from ${g}: ${r.data}`:`(${this.id}) Direct ${r.type} from ${g} (lastRelay: ${t}): ${r.data}`),this.peerStore.digestPeerNeighbors(g,r.neighborsList),t!==g&&this.arbiter.adjustTrust(t,It.UNICAST_RELAYED,"Relayed unicast message"),ot.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(A),this.id===E){for(let p of this.callbacks[r.type]||[])p(g,r.data);return}let{success:I,reason:u}=this.#e(f,e);if(!I&&!r.rerouterSignature){let p=this.pathFinder.buildRoutes(E,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!p.success)return;let y=p.routes[0].path;if(y.length>ht.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${E} as new route exceeds maxHops (${ht.MAX_HOPS}).`);return}let m=this.cryptoCodex.createReroutedUnicastMessage(e,y),v=y[a+1];this.#e(v,m)}}};await _t();var ke=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,r,s,A,a,g,E,o,f){this.topic=t,this.timestamp=e,this.neighborsList=r,this.HOPS=s,this.senderId=A,this.pubkey=a,this.data=g,this.signature=E,this.signatureStart=o,this.expectedEnd=f}},An=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let e=this.cache.map(r=>({senderId:r.senderId,topic:r.topic,data:r.serializedMessage}));return t==="asc"?e:e.reverse()}addMessage(t){let e=et.time,{marker:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g,associatedId:E}=this.cryptoCodex.readBufferHeader(t);if(e-A>dt.EXPIRATION)return;let o=t.subarray(0,47+s+a),f=ye(o);if(this.xxHash32UsageCount++,this.seenTimeouts[f])return;let I=dt.MARKERS_BYTES[r],u=E,p=e+dt.CACHE_DURATION;return this.cache.push({hash:f,senderId:u,topic:I,serializedMessage:t,timestamp:A,expiration:p}),this.seenTimeouts[f]=p,--this.cleanupIn<=0&&this.#e(e),{hash:f,isNew:!this.seenTimeouts[f]}}#e(t=et.time){let e=-1;for(let r=0;r<this.cache.length;r++)this.cache[r].expiration<=t?delete this.seenTimeouts[this.cache[r].hash]:e===-1&&(e=r);e>0?this.cache=this.cache.slice(e):e===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},xe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,e,r,s,A=0){this.id=t,this.cryptoCodex=e,this.arbiter=r,this.peerStore=s,this.verbose=A,this.bloomFilter=new An(e)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}broadcastToAll(t,e="gossip",r){let s=r||dt.HOPS[e]||dt.HOPS.default,A=this.cryptoCodex.createGossipMessage(e,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(A)){this.verbose>3&&console.log(`(${this.id}) Gossip ${e}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let a of this.peerStore.neighborsList)this.#e(a,A)}}#e(t,e){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{r.send(e)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let e=this.bloomFilter.getGossipHistoryByTime("asc");for(let r of e)this.#e(t,r.data)}async handleGossipMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"gossip"))return;for(let l of this.callbacks.message_handle||[])l(e);if(!this.bloomFilter.addMessage(e))return;let r=this.cryptoCodex.readGossipMessage(e);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{topic:A,timestamp:a,neighborsList:g,HOPS:E,senderId:o,data:f}=r;if(o===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(o===t?`(${this.id}) Gossip ${A} from ${o}: ${f}`:`(${this.id}) Gossip ${A} from ${o} (by: ${t}): ${f}`),this.peerStore.digestPeerNeighbors(o,g);for(let l of this.callbacks[A]||[])l(o,f,E,r);if(E<1)return;let I=this.peerStore.neighborsList.length,u=Math.max(1,I/dt.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),p=dt.TRANSMISSION_RATE[A]||dt.TRANSMISSION_RATE.default,y=Math.pow(p,u),m=I<dt.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,v=this.cryptoCodex.decrementGossipHops(e);for(let l of this.peerStore.neighborsList)if(l!==t){if(!m&&Math.random()>y)continue;this.#e(l,v)}}};await _t();var{SANDBOX:lA,ICE_CANDIDATE_EMITTER:dA,TEST_WS_EVENT_MANAGER:IA}=Bt.ENABLED?await De().then(()=>Re):{},on=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(e=>e.timestamp+t>=et.time)}get bestOfferInfo(){let{senderId:t,overlap:e,neighborsCount:r,data:s,timestamp:A}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:A,value:this.orderingBy==="overlap"?e:r}}pushSortTrim(t,e={min:.2,max:.8}){let{min:r,max:s}=e;Math.random()<Math.min(r,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((A,a)=>this.orderingBy==="overlap"?A.overlap-a.overlap:a.neighborsCount-A.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},Me=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new on;bootstrapsConnectionState=new Map;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=ot.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=ct.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,e,r,s,A,a){this.setNeighborsTarget(ot.TARGET_NEIGHBORS_COUNT),this.id=t,this.cryptoCodex=e,this.gossip=r,this.messager=s,this.peerStore=A;for(let g of a)this.bootstrapsConnectionState.set(g,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:e,isEnough:r,isTooMany:s,isHalfReached:A}=this.#e,a=e>=this.NEIGHBORS_TARGET/3?1:lt.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=r?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;r?Math.random()>.05&&this.#A():this.#A(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,e),this.phase===1&&this.#s(e,A)}handleIncomingSignal(t,e,r){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||e.signal?.type!=="offer"&&e.signal?.type!=="answer")return;let{signal:s,offerHash:A}=e||{},{connected:a,nonPublicNeighborsCount:g,isTooMany:E,isHalfReached:o}=this.#e;if(E||a[t])return;if(s.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,s,A)!==!0)return;let p=Math.abs(g-this.#t(t).nonPublicCount),y=this.maxBonus/this.NEIGHBORS_TARGET,m=Math.round(Math.min(this.maxBonus,p*y));return this.peerStore.assignSignal(t,s,A,et.time+m)}if(!this.automation.incomingOffer||g>this.TWICE_TARGET)return;let{overlap:f,nonPublicCount:I}=this.#t(t);if(I>this.TWICE_TARGET)return;let u={senderId:t,data:e,overlap:f,neighborsCount:I,timestamp:et.time};this.offersQueue.updateOrderingBy(o),this.offersQueue.pushSortTrim(u)}tryConnectNextBootstrap(t=0,e=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let r=t-e,s=0;for(let a in this.peerStore.connecting)s++;if(this.NEIGHBORS_TARGET||t){if(r>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(s+e>this.TWICE_TARGET)return}let A=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(A)||this.#i(A)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let e=this.peerStore.known[t]?.neighbors||{},r={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in e)this.cryptoCodex.isPublicNode(s)||r.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)e[s]&&r.overlap++;return r}#n(t=[]){return t.map(e=>({id:e,...this.#t(e)}))}#r(t){let e=typeof window<"u",s=e&&window.location.protocol==="https:"?"wss://":"ws://",A=t.endsWith("/ws"),a=e&&!A?window.location.host:t;return t.startsWith("ws")?t:`${s}${a}`}#i(t="localhost:8080"){let e=null,r=new lt.WS_CLIENT(this.#r(t));r.binaryType="arraybuffer",r.onerror=s=>console.error("WebSocket error:",s.stack),r.onopen=()=>{this.bootstrapsConnectionState.set(t,!0),r.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let s of this.peerStore.callbacks.disconnect)s(e,"out")},r.onmessage=async s=>{if(e)for(let A of this.peerStore.callbacks.data)A(e,s.data);else{let A=new Uint8Array(s.data);if(A[0]>127)return;let a=this.cryptoCodex.readUnicastMessage(A);if(!a)return;let{route:g,type:E,neighborsList:o}=a;if(E!=="handshake"||g.length!==2)return;let{signatureStart:f,pubkey:I,signature:u}=a,p=A.subarray(0,f);if(!await this.cryptoCodex.verifySignature(I,p,u))return;e=g[0],this.peerStore.digestPeerNeighbors(e,o),this.peerStore.connecting[e]?.in?.close(),this.peerStore.connecting[e]||(this.peerStore.connecting[e]={}),this.peerStore.connecting[e].out=new Vt(e,r,"out",!0);for(let y of this.peerStore.callbacks.connect)y(e,"out")}},r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,e=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,{offerHash:A,readyOffer:a}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!A||!a)return;if(!e&&s<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:a.signal,offerHash:A},"signal_offer"),a.sentCounter++;return}let g=null;for(let y of this.#n(this.peerStore.standardNeighborsList)){let m=y[e?"overlap":"nonPublicCount"];g===null&&(g=m),e&&m<g&&(g=m),!e&&m<=g&&(g=m)}let E=100,o=1e3,f=this.peerStore.knownCount,I=Math.max(Math.min(o/f,f/o),.127),u=[];for(let y in this.peerStore.known){if(Math.random()>I)continue;if(--o<=0)break;if(y===this.id||this.cryptoCodex.isPublicNode(y)||this.peerStore.isKicked(y))continue;if(this.peerStore.connected[y]||this.peerStore.connecting[y])continue;let{overlap:m,nonPublicCount:v}=this.#t(y);if(!(v>this.NEIGHBORS_TARGET)&&(g===null&&(g=e?m:v),!(e&&m>g)&&!(!e&&v<g)&&(u.push(y),--E<=0)))break}if(!u.length)return;let p=new Map;for(let y=0;y<Math.min(u.length,100);y++){let m=u[Math.floor(Math.random()*u.length)];if(!p.has(m)&&(p.size===0&&a.sentCounter++,p.set(m,!0),this.messager.sendUnicast(m,{signal:a.signal,offerHash:A},"signal_offer",1),p.size>=12))break}}#A(){let t=null,e=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(lt.SDP_OFFER_EXPIRATION/2);for(let r=0;r<this.offersQueue.size;r++){let{senderId:s,data:A,timestamp:a,value:g}=this.offersQueue.bestOfferInfo;if(!s||!A||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?g:t,t!==g)break;this.peerStore.addConnectingPeer(s,A.signal,A.offerHash)===!0&&(this.peerStore.assignSignal(s,A.signal,A.offerHash,a),e++)}}}#o(){let e=this.#n(this.peerStore.standardNeighborsList).sort((r,s)=>s.overlap-r.overlap||s.nonPublicCount-r.nonPublicCount);this.peerStore.kickPeer(e[0].id,6e4,"improveTopology")}};await _t();var kt=class c{IS_BROWSER=typeof window<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let e=t.length/2,r=new Uint8Array(e);for(let s=0,A=0;s<e;++s,A+=2)r[s]=(this.hexMap[t[A]]<<4)+this.hexMap[t[A+1]];return r}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let e=atob(t),r=new Uint8Array(e.length);for(let s=0;s<e.length;s++)r[s]=e.charCodeAt(s);return r}bytes2ToNumber(t){for(let e=0;e<2;e++)this.view2.setUint8(e,t[e]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let e=0;e<4;e++)this.view4.setUint8(e,t[e]);return this.view4.getUint32(0,!0)}bytes8ToNumber(t){for(let e=0;e<8;e++)this.view8.setUint8(e,t[e]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,e=0){let r="";for(let s of t)r+=s<16?`0${s.toString(16)}`:s.toString(16);return e>0&&(r=r.padStart(e,"0")),r}bytesToHex(t,e=0){return c.bytesToHex(t,e)}static hexToBits(t="ffffff",e="string"){let r=[];if(e==="arrayOfNumbers")for(let s=0;s<t.length;s++)r.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(A=>parseInt(A,10)));else for(let s=0;s<t.length;s++)r.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return e==="string"?r.join(""):r}static bytesToBits(t,e="string"){return this.hexToBits(this.bytesToHex(t),e)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((e,r)=>(e<<8)+parseInt(r,10),0)}};var Ve=typeof window<"u",[Zr]=await Promise.all([Ve?Promise.resolve().then(()=>(wr(),br)):Promise.resolve().then(()=>(Xr(),jr))]),ge=Zr.default||Zr;var he=class{converter=new kt;argon2;hash=async(t,e,r=2**16,s=1,A=1,a=2,g=32)=>{let E=this.#e(t,e,s,r,A,a,g),o=await this.getArgon2Lib(),f=Ve?await o.hash(E):await o.hash(t,E);if(!f)return!1;let I=f.encoded||f,u=this.#t(I);return u||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Ve)try{let e=await import("argon2");this.argon2=e}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>($r(),Vr));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",e="saltsaltsaltsaltsalt",r=1,s=2**10,A=1,a=2,g=32){let E=e.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:A,time:r,timeCost:r,mem:s,memoryCost:s,hashLen:g,hashLength:g,salt:Ve?E:Buffer.from(E)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let e=t.split("$").pop(),r=this.converter.base64toBytes(e),s=this.converter.bytesToHex(r),A=kt.hexToBits(s,"string");return A?{encoded:t,hash:r,hex:s,bitsString:A}:!1}};var fe=class c{argon2=new he;converter=new kt;AVOID_CRYPTO=!1;verbose=ct.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,e=ct.DEFAULT_VERBOSE){if(this.verbose=e,!t)return;this.AVOID_CRYPTO=!0,this.id=t.padEnd(V.ID_LENGTH," ").slice(0,V.ID_LENGTH),this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0);let r=new TextEncoder().encode(this.id);for(let s=0;s<V.ID_LENGTH;s++)this.publicKey[s]=r[s]}static async createCryptoCodex(t,e){let r=new c(void 0,this.verbose);return await r.generate(t,e),r}static isPublicNode(t){return(V.ARE_IDS_HEX?kt.hexToBits(t[0]):t).startsWith(V.PUBLIC_PREFIX)}get idLength(){return V.ARE_IDS_HEX?V.ID_LENGTH/2:V.ID_LENGTH}isPublicNode(t){return c.isPublicNode(t)}async generate(t,e){if(!this.nodeId&&(await this.#t(e,t),!this.id))throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!V.DIFFICULTY)return!0;let{bitsString:e}=await this.argon2.hash(t,"HiveP2P",V.ARGON2_MEM)||{};if(e&&e.startsWith("0".repeat(V.DIFFICULTY)))return!0}#e(t){return V.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),V.ID_LENGTH):this.converter.bytesToString(t.slice(0,V.ID_LENGTH))}async#t(t,e){let r=2**V.DIFFICULTY*100;for(let s=0;s<r;s++){let{secretKey:A,publicKey:a}=ge.keygen(t),g=this.#e(a);if(!(e&&!this.isPublicNode(g))&&!(!e&&this.isPublicNode(g))&&await this.pubkeyDifficultyCheck(a)){this.id=g,this.privateKey=A,this.publicKey=a,this.verbose>2&&console.log(`%cNode generated id: ${this.id} (isPublic: ${e}, difficulty: ${V.DIFFICULTY}) after ${((s+1)/2).toFixed(1)} iterations`,it.CRYPTO_CODEX);return}}this.verbose>0&&console.log(`%cFAILED to generate id after ${r} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}signBufferViewAndAppendSignature(t,e,r=t.length-V.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,r);t.set(ge.sign(s,e),r)}createGossipMessage(t,e,r=3,s=[],A=et.time){let a=dt.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let g=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(e),f=47+g.length+o.length+V.SIGNATURE_LENGTH+1,I=new ArrayBuffer(f),u=new Uint8Array(I);return this.#i(u,a,E,s.length,A,o,this.publicKey),u.set(g,47),u.set(o,47+g.length),u.set([Math.min(255,r)],f-1),this.signBufferViewAndAppendSignature(u,this.privateKey,f-V.SIGNATURE_LENGTH-1),u}decrementGossipHops(t){let e=new Uint8Array(t),r=t[t.length-1];return e[t.length-1]=Math.max(0,r-1),e}createUnicastMessage(t,e,r,s=[],A=et.time){let a=ht.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(r.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(r.length>ht.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${ht.MAX_HOPS}).`);let g=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(e),f=this.#n(r),I=47+g.length+1+f.length+o.length+V.SIGNATURE_LENGTH,u=new ArrayBuffer(I),p=new Uint8Array(u);this.#i(p,a,E,s.length,A,o,this.publicKey);let y=g.length+o.length;return p.set(g,47),p.set(o,47+g.length),p.set([r.length],47+y),p.set(f,48+y),this.signBufferViewAndAppendSignature(p,this.privateKey,I-V.SIGNATURE_LENGTH),p}createReroutedUnicastMessage(t,e){if(e.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(e.length>ht.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${ht.MAX_HOPS}).`);let r=e.map(g=>this.converter.stringToBytes(g)),s=t.length+32+V.ID_LENGTH*r.length+V.SIGNATURE_LENGTH,A=new ArrayBuffer(s),a=new Uint8Array(A);a.set(t,0),a.set(this.publicKey,t.length);for(let g=0;g<r.length;g++)a.set(r[g],t.length+32+g*V.ID_LENGTH);return this.signBufferViewAndAppendSignature(a,this.privateKey,s-V.SIGNATURE_LENGTH),a}#n(t){return V.ARE_IDS_HEX?this.converter.hexToBytes(t.join(""),V.ID_LENGTH*t.length):this.converter.stringToBytes(t.join(""))}#r(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#i(t,e,r,s,A,a,g){let E=this.converter.numberTo8Bytes(A),o=this.converter.numberTo4Bytes(a.length);t.set([e],0),t.set([r],1),t.set([s],2),t.set(E,3),t.set(o,11),t.set(g,15)}async verifySignature(t,e,r){return this.AVOID_CRYPTO?!0:ge.verifyAsync(r,e,t)}readBufferHeader(t,e=!0){let r=t[0],s=t[1],A=t[2],a=t.slice(3,11),g=t.slice(11,15),E=t.slice(15,47),o=e?this.#e(E):null,f=A*this.idLength,I=this.converter.bytes8ToNumber(a),u=this.converter.bytes4ToNumber(g);return{marker:r,dataCode:s,neighLength:f,timestamp:I,dataLength:u,pubkey:E,associatedId:o}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:e,dataCode:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g,associatedId:E}=this.readBufferHeader(t),o=dt.MARKERS_BYTES[e];if(o===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let f=s+a,I=this.#s(t.slice(47,47+s)),u=this.#A(r,t.slice(47+s,47+f)),p=47+f,y=t.slice(p,p+V.SIGNATURE_LENGTH),m=t[t.length-1],v=p+V.SIGNATURE_LENGTH+1,l=E;return new ke(o,A,I,m,l,g,u,y,p,v)}catch(e){this.verbose>1&&console.warn(`Error deserializing ${topic||"unknown"} gossip message:`,e.stack)}return null}readUnicastMessage(t){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:e,dataCode:r,neighLength:s,timestamp:A,dataLength:a,pubkey:g}=this.readBufferHeader(t,!1),E=ht.MARKERS_BYTES[e];if(E===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let o=s+a,f=this.#s(t.slice(47,47+s)),I=this.#A(r,t.slice(47+s,47+o)),p=t[47+o]*this.idLength,y=47+o+1+p,m=t.slice(47+o+1,y),v=this.#s(m),l=y+V.SIGNATURE_LENGTH,C=t.slice(y,l);if(!(t.length>l))return new de(E,A,f,v,g,I,C,y,l);let S=t.slice(l,l+32),b=this.#s(t.slice(l+32,t.length-V.SIGNATURE_LENGTH)),_=t.slice(t.length-V.SIGNATURE_LENGTH);return new Te(E,A,f,v,g,I,C,S,b,_,t.length)}catch(e){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,e.stack)}return null}#s(t){let e=[],r=this.idLength;if(t.length%r!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/r;s++){let A=t.slice(s*r,(s+1)*r);V.ARE_IDS_HEX?e.push(this.converter.bytesToHex(A,V.ID_LENGTH)):e.push(this.converter.bytesToString(A))}return e}#A(t,e){if(t===1)return this.converter.bytesToString(e);if(t===2)return e;if(t===3)return JSON.parse(this.converter.bytesToString(e));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await _t();var _s=ct.IS_BROWSER?null:await import("dgram"),$e=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,e,r=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=r,this.peerStore=e,this.cryptoCodex=t}start(t="localhost",e=Ft.PORT){this.publicUrl=`ws://${t}:${e}`,this.#e(t,e),Bt.USE_TEST_TRANSPORTS||this.#t(t,e+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-ot.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let e=0,r=Ft.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let A=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>ot.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=ot.TARGET_NEIGHBORS_COUNT)break;continue}if(!(A.getConnectionDuration()<(a>2?r:r*2))&&(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),++e>=t))break}}#e(t="localhost",e=Ft.PORT){this.wsServer=new lt.WS_SERVER({port:e,host:t}),this.wsServer.on("error",r=>console.error(`WebSocket error on Node #${this.id}:`,r)),this.wsServer.on("connection",r=>{r.on("close",()=>{if(s)for(let A of this.peerStore.callbacks.disconnect)A(s,"in")}),r.on("error",A=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,A.stack));let s;r.on("message",async A=>{if(s)for(let a of this.peerStore.callbacks.data)a(s,A);else{let a=new Uint8Array(A);if(a[0]>127)return;let g=this.cryptoCodex.readUnicastMessage(a);if(!g)return;let{route:E,type:o,neighborsList:f}=g;if(o!=="handshake"||E.length!==2)return;let{signatureStart:I,pubkey:u,signature:p}=g,y=a.subarray(0,I);if(!await this.cryptoCodex.verifySignature(u,y,p))return;s=E[0],this.peerStore.digestPeerNeighbors(s,f),this.peerStore.connecting[s]?.out?.close(),this.peerStore.connecting[s]||(this.peerStore.connecting[s]={}),this.peerStore.connecting[s].in=new Vt(s,r,"in",!0);for(let m of this.peerStore.callbacks.connect)m(s,"in")}}),r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",e=Ft.PORT+1){this.stunServer=_s.createSocket("udp4"),this.stunServer.on("message",(r,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${r.toString("hex")}`,it.SERVICE),this.#n(r)&&this.stunServer.send(this.#r(r,s),s.port,s.address)}),this.stunServer.bind(e,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${e}`,it.SERVICE)}#n(t){if(t.length<20)return!1;let e=t.readUInt16BE(0),r=t.readUInt32BE(4);return e===1&&r===554869826}#r(t,e){let r=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),r.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(e.port,26),s.writeUInt32BE(kt.ipToInt(e.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${e.address}:${e.port}`,"color: green;"),s}static deriveSTUNServers(t){let e=[];for(let r of t){if(!r.includes(":")||r.endsWith("/ws")||r.endsWith("/wss"))continue;let s=r.replace("ws://","stun:");s.replace("wss://","stun:"),s.includes("stun:")&&e.push({urls:s})}return lt.CENTRALIZED_STUN_SERVERS&&(e.push({urls:"stun:stun.l.google.com:5349"}),e.push({urls:"stun:stun.l.google.com:19302"}),e.push({urls:"stun:stun1.l.google.com:3478"}),e.push({urls:"stun:stun1.l.google.com:5349"})),e}};async function zr(c={}){let t=c.verbose!==void 0?c.verbose:ct.DEFAULT_VERBOSE,e=c.cryptoCodex||new fe(void 0,t),r=et.sync(t);e.publicKey||await e.generate(!1),await r;let s=new Ce(e,c.bootstraps||[],t);return c.autoStart!==!1&&await s.start(),s}var Ce=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,e=[],r=ct.DEFAULT_VERBOSE){this.verbose=r,this.topologist?.services&&(this.topologist.services.verbose=r),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=$e.deriveSTUNServers(e||[]);this.offerManager=new be(this.id,s,r),this.arbiter=new Qe(this.id,t,r),this.peerStore=new Ne(this.id,this.cryptoCodex,this.offerManager,this.arbiter,r),this.messager=new Fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.gossip=new xe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.topologist=new Me(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,e||[]);let{arbiter:A,peerStore:a,messager:g,gossip:E,topologist:o}=this;a.on("signal",(f,I)=>this.sendMessage(f,I,"signal_answer")),a.on("connect",(f,I)=>this.#e(f,I)),a.on("disconnect",(f,I)=>this.#t(f,I)),a.on("data",(f,I)=>this.#n(f,I)),g.on("signal_answer",(f,I)=>o.handleIncomingSignal(f,I)),g.on("signal_offer",(f,I)=>o.handleIncomingSignal(f,I)),E.on("signal_offer",(f,I,u)=>o.handleIncomingSignal(f,I,u)),r>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,e)=>{let r=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!r&&!this.cryptoCodex.isPublicNode(this.id)||e==="in")&&this.sendMessage(t,this.id,"handshake");let A=this.peerStore.neighborsList.length>=ot.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{ot.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&A&&this.broadcast([],"over_neighbored"),ot.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};ot.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,ot.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,e)=>{if(!this.peerStore.neighborsList.length){for(let A in this.peerStore.connecting)this.peerStore.kickPeer(A,0,"no_neighbors_left");for(let A in this.offerManager.offers)this.offerManager.offers[A].timestamp=0}let r=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,e)=>{let r=new Uint8Array(e);r[0]>127?this.gossip.handleGossipMessage(t,r):this.messager.handleDirectMessage(t,r)};get publicUrl(){return this.services?.publicUrl}get time(){return et.time}async start(){return await et.sync(this.verbose),this.started=!0,Bt.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),ot.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}broadcast(t,e,r){this.gossip.broadcastToAll(t,e,r)}sendMessage(t,e,r,s=1){this.messager.sendUnicast(t,e,r,s)}async tryConnectToPeer(t="toto",e=10){if(!this.peerStore.connected[t])do{let{offerHash:r,readyOffer:s}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!r||!s)await new Promise(A=>setTimeout(A,1e3));else{this.messager.sendUnicast(t,{signal:s.signal,offerHash:r},"signal_offer",1);return}}while(e-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,e="kicked_by_node"){this.peerStore.kickPeer(t,0,e)}banPeer(t,e=6e4,r="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-e,r)}};await _t();function ti(c,t){for(let e in t)t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?(c[e]=c[e]||{},ti(c[e],t[e])):c[e]=t[e]}var ei={CLOCK:et,CONFIG:Jn,mergeConfig:ti,Node:Ce,createNode:zr,CryptoCodex:fe,ed25519:ge,Argon2Unified:he};var Qo=ei;typeof window<"u"&&(window.HiveP2P=ei);export{he as Argon2Unified,et as CLOCK,Jn as CONFIG,fe as CryptoCodex,Ce as Node,zr as createNode,Qo as default,ge as ed25519,ti as mergeConfig};
|
|
4
4
|
/*!
|
|
5
5
|
* The buffer module from node.js, for the browser.
|
|
6
6
|
*
|