Sign In

genosdb

Package Overview
Dependencies
Maintainers
1
Versions
126
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

genosdb - npm Package Compare versions

Comparing version
0.23.0
to
0.23.1
+1
-1
dist/genosrtc.min.js
var log=(()=>{const n=()=>{};return new Proxy(console,{get:(c,m)=>globalThis.__gdbDebug?c[m].bind(c):n})})();
var c$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function d$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function D0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function R$($,...J){if(!d$($))throw Error("Uint8Array expected");if(J.length>0&&!J.includes($.length))throw Error("Uint8Array expected of length "+J+", got length="+$.length)}function P0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");D0($.outputLen),D0($.blockLen)}function Q0($,J=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(J&&$.finished)throw Error("Hash#digest() has already been called")}function g8($,J){R$($);let q=J.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function l$(...$){for(let J=0;J<$.length;J++)$[J].fill(0)}function I0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function x$($,J){return $<<32-J|$>>>J}var u8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),UJ=Array.from({length:256},($,J)=>J.toString(16).padStart(2,"0"));function I$($){if(R$($),u8)return $.toHex();let J="";for(let q=0;q<$.length;q++)J+=UJ[$[q]];return J}var P$={_0:48,_9:57,A:65,F:70,a:97,f:102};function y8($){if($>=P$._0&&$<=P$._9)return $-P$._0;if($>=P$.A&&$<=P$.F)return $-(P$.A-10);if($>=P$.a&&$<=P$.f)return $-(P$.a-10);return}function p$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(u8)return Uint8Array.fromHex($);let J=$.length,q=J/2;if(J%2)throw Error("hex string expected, got unpadded hex of length "+J);let Q=new Uint8Array(q);for(let G=0,Y=0;G<q;G++,Y+=2){let X=y8($.charCodeAt(Y)),U=y8($.charCodeAt(Y+1));if(X===void 0||U===void 0){let Z=$[Y]+$[Y+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+Y)}Q[G]=X*16+U}return Q}function E0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function M0($){if(typeof $==="string")$=E0($);return R$($),$}function D$(...$){let J=0;for(let Q=0;Q<$.length;Q++){let G=$[Q];R$(G),J+=G.length}let q=new Uint8Array(J);for(let Q=0,G=0;Q<$.length;Q++){let Y=$[Q];q.set(Y,G),G+=Y.length}return q}class V0{}function F8($){let J=(Q)=>$().update(M0(Q)).digest(),q=$();return J.outputLen=q.outputLen,J.blockLen=q.blockLen,J.create=()=>$(),J}function o$($=32){if(c$&&typeof c$.getRandomValues==="function")return c$.getRandomValues(new Uint8Array($));if(c$&&typeof c$.randomBytes==="function")return Uint8Array.from(c$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function KJ($,J,q,Q){if(typeof $.setBigUint64==="function")return $.setBigUint64(J,q,Q);let G=BigInt(32),Y=BigInt(4294967295),X=Number(q>>G&Y),U=Number(q&Y),Z=Q?4:0,B=Q?0:4;$.setUint32(J+Z,X,Q),$.setUint32(J+B,U,Q)}function m8($,J,q){return $&J^~$&q}function h8($,J,q){return $&J^$&q^J&q}class q8 extends V0{constructor($,J,q,Q){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=J,this.padOffset=q,this.isLE=Q,this.buffer=new Uint8Array($),this.view=I0(this.buffer)}update($){Q0(this),$=M0($),R$($);let{view:J,buffer:q,blockLen:Q}=this,G=$.length;for(let Y=0;Y<G;){let X=Math.min(Q-this.pos,G-Y);if(X===Q){let U=I0($);for(;Q<=G-Y;Y+=Q)this.process(U,Y);continue}if(q.set($.subarray(Y,Y+X),this.pos),this.pos+=X,Y+=X,this.pos===Q)this.process(J,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){Q0(this),g8($,this),this.finished=!0;let{buffer:J,view:q,blockLen:Q,isLE:G}=this,{pos:Y}=this;if(J[Y++]=128,l$(this.buffer.subarray(Y)),this.padOffset>Q-Y)this.process(q,0),Y=0;for(let M=Y;M<Q;M++)J[M]=0;KJ(q,Q-8,BigInt(this.length*8),G),this.process(q,0);let X=I0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,B=this.get();if(Z>B.length)throw Error("_sha2: outputLen bigger than state");for(let M=0;M<Z;M++)X.setUint32(4*M,B[M],G)}digest(){let{buffer:$,outputLen:J}=this;this.digestInto($);let q=$.slice(0,J);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:J,buffer:q,length:Q,finished:G,destroyed:Y,pos:X}=this;if($.destroyed=Y,$.finished=G,$.length=Q,$.pos=X,Q%J)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var E$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var jJ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),y$=new Uint32Array(64);class c8 extends q8{constructor($=32){super(64,$,8,!1);this.A=E$[0]|0,this.B=E$[1]|0,this.C=E$[2]|0,this.D=E$[3]|0,this.E=E$[4]|0,this.F=E$[5]|0,this.G=E$[6]|0,this.H=E$[7]|0}get(){let{A:$,B:J,C:q,D:Q,E:G,F:Y,G:X,H:U}=this;return[$,J,q,Q,G,Y,X,U]}set($,J,q,Q,G,Y,X,U){this.A=$|0,this.B=J|0,this.C=q|0,this.D=Q|0,this.E=G|0,this.F=Y|0,this.G=X|0,this.H=U|0}process($,J){for(let M=0;M<16;M++,J+=4)y$[M]=$.getUint32(J,!1);for(let M=16;M<64;M++){let H=y$[M-15],z=y$[M-2],j=x$(H,7)^x$(H,18)^H>>>3,w=x$(z,17)^x$(z,19)^z>>>10;y$[M]=w+y$[M-7]+j+y$[M-16]|0}let{A:q,B:Q,C:G,D:Y,E:X,F:U,G:Z,H:B}=this;for(let M=0;M<64;M++){let H=x$(X,6)^x$(X,11)^x$(X,25),z=B+H+m8(X,U,Z)+jJ[M]+y$[M]|0,w=(x$(q,2)^x$(q,13)^x$(q,22))+h8(q,Q,G)|0;B=Z,Z=U,U=X,X=Y+z|0,Y=G,G=Q,Q=q,q=z+w|0}q=q+this.A|0,Q=Q+this.B|0,G=G+this.C|0,Y=Y+this.D|0,X=X+this.E|0,U=U+this.F|0,Z=Z+this.G|0,B=B+this.H|0,this.set(q,Q,G,Y,X,U,Z,B)}roundClean(){l$(y$)}destroy(){this.set(0,0,0,0,0,0,0,0),l$(this.buffer)}}var v0=F8(()=>new c8);class G8 extends V0{constructor($,J){super();this.finished=!1,this.destroyed=!1,P0($);let q=M0(J);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let Q=this.blockLen,G=new Uint8Array(Q);G.set(q.length>Q?$.create().update(q).digest():q);for(let Y=0;Y<G.length;Y++)G[Y]^=54;this.iHash.update(G),this.oHash=$.create();for(let Y=0;Y<G.length;Y++)G[Y]^=106;this.oHash.update(G),l$(G)}update($){return Q0(this),this.iHash.update($),this}digestInto($){Q0(this),R$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:J,iHash:q,finished:Q,destroyed:G,blockLen:Y,outputLen:X}=this;return $=$,$.finished=Q,$.destroyed=G,$.blockLen=Y,$.outputLen=X,$.oHash=J._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var Y8=($,J,q)=>new G8($,J).update(q).digest();Y8.create=($,J)=>new G8($,J);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Z8=BigInt(0),z8=BigInt(1);function N0($,J=""){if(typeof $!=="boolean"){let q=J&&`"${J}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function g$($,J,q=""){let Q=d$($),G=$?.length,Y=J!==void 0;if(!Q||Y&&G!==J){let X=q&&`"${q}" `,U=Y?` of length ${J}`:"",Z=Q?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+U+", got "+Z)}return $}function B0($){let J=$.toString(16);return J.length&1?"0"+J:J}function d8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?Z8:BigInt("0x"+$)}function v$($){return d8(I$($))}function U8($){return R$($),d8(I$(Uint8Array.from($).reverse()))}function J0($,J){return p$($.toString(16).padStart(J*2,"0"))}function K8($,J){return J0($,J).reverse()}function p($,J,q){let Q;if(typeof J==="string")try{Q=p$(J)}catch(Y){throw Error($+" must be hex string or Uint8Array, cause: "+Y)}else if(d$(J))Q=Uint8Array.from(J);else throw Error($+" must be hex string or Uint8Array");let G=Q.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return Q}var X8=($)=>typeof $==="bigint"&&Z8<=$;function O0($,J,q){return X8($)&&X8(J)&&X8(q)&&J<=$&&$<q}function l8($,J,q,Q){if(!O0(J,q,Q))throw Error("expected valid "+$+": "+q+" <= n < "+Q+", got "+J)}function _0($){let J;for(J=0;$>Z8;$>>=z8,J+=1);return J}var u$=($)=>(z8<<BigInt($))-z8;function p8($,J,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof J!=="number"||J<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let Q=(j)=>new Uint8Array(j),G=(j)=>Uint8Array.of(j),Y=Q($),X=Q($),U=0,Z=()=>{Y.fill(1),X.fill(0),U=0},B=(...j)=>q(X,Y,...j),M=(j=Q(0))=>{if(X=B(G(0),j),Y=B(),j.length===0)return;X=B(G(1),j),Y=B()},H=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let j=0,w=[];while(j<J){Y=B();let S=Y.slice();w.push(S),j+=Y.length}return D$(...w)};return(j,w)=>{Z(),M(j);let S=void 0;while(!(S=w(H())))M();return Z(),S}}function H0($,J,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function Q(G,Y,X){let U=$[G];if(X&&U===void 0)return;let Z=typeof U;if(Z!==Y||U===null)throw Error(`param "${G}" is invalid: expected ${Y}, got ${Z}`)}Object.entries(J).forEach(([G,Y])=>Q(G,Y,!1)),Object.entries(q).forEach(([G,Y])=>Q(G,Y,!0))}function j8($){let J=new WeakMap;return(q,...Q)=>{let G=J.get(q);if(G!==void 0)return G;let Y=$(q,...Q);return J.set(q,Y),Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var K$=BigInt(0),Y$=BigInt(1),i$=BigInt(2),r8=BigInt(3),a8=BigInt(4),n8=BigInt(5),WJ=BigInt(7),s8=BigInt(8),DJ=BigInt(9),t8=BigInt(16);function N$($,J){let q=$%J;return q>=K$?q:J+q}function B$($,J,q){let Q=$;while(J-- >K$)Q*=Q,Q%=q;return Q}function o8($,J){if($===K$)throw Error("invert: expected non-zero number");if(J<=K$)throw Error("invert: expected positive modulus, got "+J);let q=N$($,J),Q=J,G=K$,Y=Y$,X=Y$,U=K$;while(q!==K$){let B=Q/q,M=Q%q,H=G-X*B,z=Y-U*B;Q=q,q=M,G=X,Y=U,X=H,U=z}if(Q!==Y$)throw Error("invert: does not exist");return N$(G,J)}function W8($,J,q){if(!$.eql($.sqr(J),q))throw Error("Cannot find square root")}function e8($,J){let q=($.ORDER+Y$)/a8,Q=$.pow(J,q);return W8($,Q,J),Q}function MJ($,J){let q=($.ORDER-n8)/s8,Q=$.mul(J,i$),G=$.pow(Q,q),Y=$.mul(J,G),X=$.mul($.mul(Y,i$),G),U=$.mul(Y,$.sub(X,$.ONE));return W8($,U,J),U}function VJ($){let J=F$($),q=$Q($),Q=q(J,J.neg(J.ONE)),G=q(J,Q),Y=q(J,J.neg(Q)),X=($+WJ)/t8;return(U,Z)=>{let B=U.pow(Z,X),M=U.mul(B,Q),H=U.mul(B,G),z=U.mul(B,Y),j=U.eql(U.sqr(M),Z),w=U.eql(U.sqr(H),Z);B=U.cmov(B,M,j),M=U.cmov(z,H,w);let S=U.eql(U.sqr(M),Z),I=U.cmov(B,M,S);return W8(U,I,Z),I}}function $Q($){if($<r8)throw Error("sqrt is not defined for small field");let J=$-Y$,q=0;while(J%i$===K$)J/=i$,q++;let Q=i$,G=F$($);while(i8(G,Q)===1)if(Q++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return e8;let Y=G.pow(Q,J),X=(J+Y$)/i$;return function(Z,B){if(Z.is0(B))return B;if(i8(Z,B)!==1)throw Error("Cannot find square root");let M=q,H=Z.mul(Z.ONE,Y),z=Z.pow(B,J),j=Z.pow(B,X);while(!Z.eql(z,Z.ONE)){if(Z.is0(z))return Z.ZERO;let w=1,S=Z.sqr(z);while(!Z.eql(S,Z.ONE))if(w++,S=Z.sqr(S),w===M)throw Error("Cannot find square root");let I=Y$<<BigInt(M-w-1),m=Z.pow(H,I);M=w,H=Z.sqr(m),z=Z.mul(z,H),j=Z.mul(j,m)}return j}}function NJ($){if($%a8===r8)return e8;if($%s8===n8)return MJ;if($%t8===DJ)return VJ($);return $Q($)}var BJ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function D8($){let J={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=BJ.reduce((Q,G)=>{return Q[G]="function",Q},J);return H0($,q),$}function OJ($,J,q){if(q<K$)throw Error("invalid exponent, negatives unsupported");if(q===K$)return $.ONE;if(q===Y$)return J;let Q=$.ONE,G=J;while(q>K$){if(q&Y$)Q=$.mul(Q,G);G=$.sqr(G),q>>=Y$}return Q}function b0($,J,q=!1){let Q=Array(J.length).fill(q?$.ZERO:void 0),G=J.reduce((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=X,$.mul(X,U)},$.ONE),Y=$.inv(G);return J.reduceRight((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=$.mul(X,Q[Z]),$.mul(X,U)},Y),Q}function i8($,J){let q=($.ORDER-Y$)/i$,Q=$.pow(J,q),G=$.eql(Q,$.ONE),Y=$.eql(Q,$.ZERO),X=$.eql(Q,$.neg($.ONE));if(!G&&!Y&&!X)throw Error("invalid Legendre symbol result");return G?1:Y?0:-1}function f0($,J){if(J!==void 0)D0(J);let q=J!==void 0?J:$.toString(2).length,Q=Math.ceil(q/8);return{nBitLength:q,nByteLength:Q}}function F$($,J,q=!1,Q={}){if($<=K$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,Y=void 0,X=!1,U=void 0;if(typeof J==="object"&&J!=null){if(Q.sqrt||q)throw Error("cannot specify opts in two arguments");let z=J;if(z.BITS)G=z.BITS;if(z.sqrt)Y=z.sqrt;if(typeof z.isLE==="boolean")q=z.isLE;if(typeof z.modFromBytes==="boolean")X=z.modFromBytes;U=z.allowedLengths}else{if(typeof J==="number")G=J;if(Q.sqrt)Y=Q.sqrt}let{nBitLength:Z,nByteLength:B}=f0($,G);if(B>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let M,H=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:B,MASK:u$(Z),ZERO:K$,ONE:Y$,allowedLengths:U,create:(z)=>N$(z,$),isValid:(z)=>{if(typeof z!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof z);return K$<=z&&z<$},is0:(z)=>z===K$,isValidNot0:(z)=>!H.is0(z)&&H.isValid(z),isOdd:(z)=>(z&Y$)===Y$,neg:(z)=>N$(-z,$),eql:(z,j)=>z===j,sqr:(z)=>N$(z*z,$),add:(z,j)=>N$(z+j,$),sub:(z,j)=>N$(z-j,$),mul:(z,j)=>N$(z*j,$),pow:(z,j)=>OJ(H,z,j),div:(z,j)=>N$(z*o8(j,$),$),sqrN:(z)=>z*z,addN:(z,j)=>z+j,subN:(z,j)=>z-j,mulN:(z,j)=>z*j,inv:(z)=>o8(z,$),sqrt:Y||((z)=>{if(!M)M=NJ($);return M(H,z)}),toBytes:(z)=>q?K8(z,B):J0(z,B),fromBytes:(z,j=!0)=>{if(U){if(!U.includes(z.length)||z.length>B)throw Error("Field.fromBytes: expected "+U+" bytes, got "+z.length);let S=new Uint8Array(B);S.set(z,q?0:S.length-z.length),z=S}if(z.length!==B)throw Error("Field.fromBytes: expected "+B+" bytes, got "+z.length);let w=q?U8(z):v$(z);if(X)w=N$(w,$);if(!j){if(!H.isValid(w))throw Error("invalid field element: outside of range 0..ORDER")}return w},invertBatch:(z)=>b0(H,z),cmov:(z,j,w)=>w?j:z});return Object.freeze(H)}function QQ($){if(typeof $!=="bigint")throw Error("field order must be bigint");let J=$.toString(2).length;return Math.ceil(J/8)}function M8($){let J=QQ($);return J+Math.ceil(J/2)}function y0($,J,q=!1){let Q=$.length,G=QQ(J),Y=M8(J);if(Q<16||Q<Y||Q>1024)throw Error("expected "+Y+"-1024 bytes of input, got "+Q);let X=q?U8($):v$($),U=N$(X,J-Y$)+Y$;return q?K8(U,G):J0(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var q0=BigInt(0),r$=BigInt(1);function A0($,J){let q=J.negate();return $?q:J}function g0($,J){let q=b0($.Fp,J.map((Q)=>Q.Z));return J.map((Q,G)=>$.fromAffine(Q.toAffine(q[G])))}function YQ($,J){if(!Number.isSafeInteger($)||$<=0||$>J)throw Error("invalid window size, expected [1.."+J+"], got W="+$)}function V8($,J){YQ($,J);let q=Math.ceil(J/$)+1,Q=2**($-1),G=2**$,Y=u$($),X=BigInt($);return{windows:q,windowSize:Q,mask:Y,maxNumber:G,shiftBy:X}}function JQ($,J,q){let{windowSize:Q,mask:G,maxNumber:Y,shiftBy:X}=q,U=Number($&G),Z=$>>X;if(U>Q)U-=Y,Z+=r$;let B=J*Q,M=B+Math.abs(U)-1,H=U===0,z=U<0,j=J%2!==0;return{nextN:Z,offset:M,isZero:H,isNeg:z,isNegF:j,offsetF:B}}function HJ($,J){if(!Array.isArray($))throw Error("array expected");$.forEach((q,Q)=>{if(!(q instanceof J))throw Error("invalid point at index "+Q)})}function AJ($,J){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,Q)=>{if(!J.isValid(q))throw Error("invalid scalar at index "+Q)})}var N8=new WeakMap,XQ=new WeakMap;function B8($){return XQ.get($)||1}function qQ($){if($!==q0)throw Error("invalid wNAF")}class O8{constructor($,J){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=J}_unsafeLadder($,J,q=this.ZERO){let Q=$;while(J>q0){if(J&r$)q=q.add(Q);Q=Q.double(),J>>=r$}return q}precomputeWindow($,J){let{windows:q,windowSize:Q}=V8(J,this.bits),G=[],Y=$,X=Y;for(let U=0;U<q;U++){X=Y,G.push(X);for(let Z=1;Z<Q;Z++)X=X.add(Y),G.push(X);Y=X.double()}return G}wNAF($,J,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let Q=this.ZERO,G=this.BASE,Y=V8($,this.bits);for(let X=0;X<Y.windows;X++){let{nextN:U,offset:Z,isZero:B,isNeg:M,isNegF:H,offsetF:z}=JQ(q,X,Y);if(q=U,B)G=G.add(A0(H,J[z]));else Q=Q.add(A0(M,J[Z]))}return qQ(q),{p:Q,f:G}}wNAFUnsafe($,J,q,Q=this.ZERO){let G=V8($,this.bits);for(let Y=0;Y<G.windows;Y++){if(q===q0)break;let{nextN:X,offset:U,isZero:Z,isNeg:B}=JQ(q,Y,G);if(q=X,Z)continue;else{let M=J[U];Q=Q.add(B?M.negate():M)}}return qQ(q),Q}getPrecomputes($,J,q){let Q=N8.get(J);if(!Q){if(Q=this.precomputeWindow(J,$),$!==1){if(typeof q==="function")Q=q(Q);N8.set(J,Q)}}return Q}cached($,J,q){let Q=B8($);return this.wNAF(Q,this.getPrecomputes(Q,$,q),J)}unsafe($,J,q,Q){let G=B8($);if(G===1)return this._unsafeLadder($,J,Q);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),J,Q)}createCache($,J){YQ(J,this.bits),XQ.set($,J),N8.delete($)}hasCache($){return B8($)!==1}}function zQ($,J,q,Q){let G=J,Y=$.ZERO,X=$.ZERO;while(q>q0||Q>q0){if(q&r$)Y=Y.add(G);if(Q&r$)X=X.add(G);G=G.double(),q>>=r$,Q>>=r$}return{p1:Y,p2:X}}function ZQ($,J,q,Q){HJ(q,$),AJ(Q,J);let G=q.length,Y=Q.length;if(G!==Y)throw Error("arrays of points and scalars must have equal length");let X=$.ZERO,U=_0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let B=u$(Z),M=Array(Number(B)+1).fill(X),H=Math.floor((J.BITS-1)/Z)*Z,z=X;for(let j=H;j>=0;j-=Z){M.fill(X);for(let S=0;S<Y;S++){let I=Q[S],m=Number(I>>BigInt(j)&B);M[m]=M[m].add(q[S])}let w=X;for(let S=M.length-1,I=X;S>0;S--)I=I.add(M[S]),w=w.add(I);if(z=z.add(w),j!==0)for(let S=0;S<Z;S++)z=z.double()}return z}function GQ($,J,q){if(J){if(J.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return D8(J),J}else return F$($,{isLE:q})}function UQ($,J,q={},Q){if(Q===void 0)Q=$==="edwards";if(!J||typeof J!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let B=J[Z];if(!(typeof B==="bigint"&&B>q0))throw Error(`CURVE.${Z} must be positive bigint`)}let G=GQ(J.p,q.Fp,Q),Y=GQ(J.n,q.Fn,Q),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(J[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return J=Object.freeze(Object.assign({},J)),{CURVE:J,Fp:G,Fn:Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var KQ=($,J)=>($+($>=0?J:-J)/WQ)/J;function RJ($,J,q){let[[Q,G],[Y,X]]=J,U=KQ(X*$,q),Z=KQ(-G*$,q),B=$-U*Q-Z*Y,M=-U*G-Z*X,H=B<b$,z=M<b$;if(H)B=-B;if(z)M=-M;let j=u$(Math.ceil(_0(q)/2))+G0;if(B<b$||B>=j||M<b$||M>=j)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:H,k1:B,k2neg:z,k2:M}}function A8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function H8($,J){let q={};for(let Q of Object.keys(J))q[Q]=$[Q]===void 0?J[Q]:$[Q];if(N0(q.lowS,"lowS"),N0(q.prehash,"prehash"),q.format!==void 0)A8(q.format);return q}class jQ extends Error{constructor($=""){super($)}}var _$={Err:jQ,_tlv:{encode:($,J)=>{let{Err:q}=_$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length&1)throw new q("tlv.encode: unpadded data");let Q=J.length/2,G=B0(Q);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let Y=Q>127?B0(G.length/2|128):"";return B0($)+Y+G+J},decode($,J){let{Err:q}=_$,Q=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length<2||J[Q++]!==$)throw new q("tlv.decode: wrong tlv");let G=J[Q++],Y=!!(G&128),X=0;if(!Y)X=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let B=J.subarray(Q,Q+Z);if(B.length!==Z)throw new q("tlv.decode: length bytes not complete");if(B[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let M of B)X=X<<8|M;if(Q+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let U=J.subarray(Q,Q+X);if(U.length!==X)throw new q("tlv.decode: wrong value length");return{v:U,l:J.subarray(Q+X)}}},_int:{encode($){let{Err:J}=_$;if($<b$)throw new J("integer: negative integers are not allowed");let q=B0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new J("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:J}=_$;if($[0]&128)throw new J("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new J("invalid signature integer: unnecessary leading zero");return v$($)}},toSig($){let{Err:J,_int:q,_tlv:Q}=_$,G=p("signature",$),{v:Y,l:X}=Q.decode(48,G);if(X.length)throw new J("invalid signature: left bytes after parsing");let{v:U,l:Z}=Q.decode(2,Y),{v:B,l:M}=Q.decode(2,Z);if(M.length)throw new J("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(B)}},hexFromSig($){let{_tlv:J,_int:q}=_$,Q=J.encode(2,q.encode($.r)),G=J.encode(2,q.encode($.s)),Y=Q+G;return J.encode(48,Y)}},b$=BigInt(0),G0=BigInt(1),WQ=BigInt(2),u0=BigInt(3),xJ=BigInt(4);function m$($,J){let{BYTES:q}=$,Q;if(typeof J==="bigint")Q=J;else{let G=p("private key",J);try{Q=$.fromBytes(G)}catch(Y){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof J}`)}}if(!$.isValidNot0(Q))throw Error("invalid private key: out of range [1..N-1]");return Q}function TJ($,J={}){let q=UQ("weierstrass",$,J),{Fp:Q,Fn:G}=q,Y=q.CURVE,{h:X,n:U}=Y;H0(J,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=J;if(Z){if(!Q.is0(Y.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let B=MQ(Q,G);function M(){if(!Q.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function H(A,C,W){let{x:O,y:N}=C.toAffine(),T=Q.toBytes(O);if(N0(W,"isCompressed"),W){M();let K=!Q.isOdd(N);return D$(DQ(K),T)}else return D$(Uint8Array.of(4),T,Q.toBytes(N))}function z(A){g$(A,void 0,"Point");let{publicKey:C,publicKeyUncompressed:W}=B,O=A.length,N=A[0],T=A.subarray(1);if(O===C&&(N===2||N===3)){let K=Q.fromBytes(T);if(!Q.isValid(K))throw Error("bad point: is not on curve, wrong x");let D=S(K),x;try{x=Q.sqrt(D)}catch(v){let b=v instanceof Error?": "+v.message:"";throw Error("bad point: is not on curve, sqrt error"+b)}M();let R=Q.isOdd(x);if((N&1)===1!==R)x=Q.neg(x);return{x:K,y:x}}else if(O===W&&N===4){let K=Q.BYTES,D=Q.fromBytes(T.subarray(0,K)),x=Q.fromBytes(T.subarray(K,K*2));if(!I(D,x))throw Error("bad point: is not on curve");return{x:D,y:x}}else throw Error(`bad point: got length ${O}, expected compressed=${C} or uncompressed=${W}`)}let j=J.toBytes||H,w=J.fromBytes||z;function S(A){let C=Q.sqr(A),W=Q.mul(C,A);return Q.add(Q.add(W,Q.mul(A,Y.a)),Y.b)}function I(A,C){let W=Q.sqr(C),O=S(A);return Q.eql(W,O)}if(!I(Y.Gx,Y.Gy))throw Error("bad curve params: generator point");let m=Q.mul(Q.pow(Y.a,u0),xJ),e=Q.mul(Q.sqr(Y.b),BigInt(27));if(Q.is0(Q.add(m,e)))throw Error("bad curve params: a or b");function u(A,C,W=!1){if(!Q.isValid(C)||W&&Q.is0(C))throw Error(`bad point coordinate ${A}`);return C}function n(A){if(!(A instanceof _))throw Error("ProjectivePoint expected")}function Q$(A){if(!Z||!Z.basises)throw Error("no endo");return RJ(A,Z.basises,G.ORDER)}let X$=j8((A,C)=>{let{X:W,Y:O,Z:N}=A;if(Q.eql(N,Q.ONE))return{x:W,y:O};let T=A.is0();if(C==null)C=T?Q.ONE:Q.inv(N);let K=Q.mul(W,C),D=Q.mul(O,C),x=Q.mul(N,C);if(T)return{x:Q.ZERO,y:Q.ZERO};if(!Q.eql(x,Q.ONE))throw Error("invZ was invalid");return{x:K,y:D}}),V$=j8((A)=>{if(A.is0()){if(J.allowInfinityPoint&&!Q.is0(A.Y))return;throw Error("bad point: ZERO")}let{x:C,y:W}=A.toAffine();if(!Q.isValid(C)||!Q.isValid(W))throw Error("bad point: x or y not field elements");if(!I(C,W))throw Error("bad point: equation left != right");if(!A.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function J$(A,C,W,O,N){return W=new _(Q.mul(W.X,A),W.Y,W.Z),C=A0(O,C),W=A0(N,W),C.add(W)}class _{constructor(A,C,W){this.X=u("x",A),this.Y=u("y",C,!0),this.Z=u("z",W),Object.freeze(this)}static CURVE(){return Y}static fromAffine(A){let{x:C,y:W}=A||{};if(!A||!Q.isValid(C)||!Q.isValid(W))throw Error("invalid affine point");if(A instanceof _)throw Error("projective point not allowed");if(Q.is0(C)&&Q.is0(W))return _.ZERO;return new _(C,W,Q.ONE)}static fromBytes(A){let C=_.fromAffine(w(g$(A,void 0,"point")));return C.assertValidity(),C}static fromHex(A){return _.fromBytes(p("pointHex",A))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(A=8,C=!0){if(r.createCache(this,A),!C)this.multiply(u0);return this}assertValidity(){V$(this)}hasEvenY(){let{y:A}=this.toAffine();if(!Q.isOdd)throw Error("Field doesn't support isOdd");return!Q.isOdd(A)}equals(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.eql(Q.mul(C,K),Q.mul(N,O)),x=Q.eql(Q.mul(W,K),Q.mul(T,O));return D&&x}negate(){return new _(this.X,Q.neg(this.Y),this.Z)}double(){let{a:A,b:C}=Y,W=Q.mul(C,u0),{X:O,Y:N,Z:T}=this,K=Q.ZERO,D=Q.ZERO,x=Q.ZERO,R=Q.mul(O,O),L=Q.mul(N,N),v=Q.mul(T,T),b=Q.mul(O,N);return b=Q.add(b,b),x=Q.mul(O,T),x=Q.add(x,x),K=Q.mul(A,x),D=Q.mul(W,v),D=Q.add(K,D),K=Q.sub(L,D),D=Q.add(L,D),D=Q.mul(K,D),K=Q.mul(b,K),x=Q.mul(W,x),v=Q.mul(A,v),b=Q.sub(R,v),b=Q.mul(A,b),b=Q.add(b,x),x=Q.add(R,R),R=Q.add(x,R),R=Q.add(R,v),R=Q.mul(R,b),D=Q.add(D,R),v=Q.mul(N,T),v=Q.add(v,v),R=Q.mul(v,b),K=Q.sub(K,R),x=Q.mul(v,L),x=Q.add(x,x),x=Q.add(x,x),new _(K,D,x)}add(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.ZERO,x=Q.ZERO,R=Q.ZERO,L=Y.a,v=Q.mul(Y.b,u0),b=Q.mul(C,N),h=Q.mul(W,T),E=Q.mul(O,K),y=Q.add(C,W),F=Q.add(N,T);y=Q.mul(y,F),F=Q.add(b,h),y=Q.sub(y,F),F=Q.add(C,O);let f=Q.add(N,K);return F=Q.mul(F,f),f=Q.add(b,E),F=Q.sub(F,f),f=Q.add(W,O),D=Q.add(T,K),f=Q.mul(f,D),D=Q.add(h,E),f=Q.sub(f,D),R=Q.mul(L,F),D=Q.mul(v,E),R=Q.add(D,R),D=Q.sub(h,R),R=Q.add(h,R),x=Q.mul(D,R),h=Q.add(b,b),h=Q.add(h,b),E=Q.mul(L,E),F=Q.mul(v,F),h=Q.add(h,E),E=Q.sub(b,E),E=Q.mul(L,E),F=Q.add(F,E),b=Q.mul(h,F),x=Q.add(x,b),b=Q.mul(f,F),D=Q.mul(y,D),D=Q.sub(D,b),b=Q.mul(y,h),R=Q.mul(f,R),R=Q.add(R,b),new _(D,x,R)}subtract(A){return this.add(A.negate())}is0(){return this.equals(_.ZERO)}multiply(A){let{endo:C}=J;if(!G.isValidNot0(A))throw Error("invalid scalar: out of range");let W,O,N=(T)=>r.cached(this,T,(K)=>g0(_,K));if(C){let{k1neg:T,k1:K,k2neg:D,k2:x}=Q$(A),{p:R,f:L}=N(K),{p:v,f:b}=N(x);O=L.add(b),W=J$(C.beta,R,v,T,D)}else{let{p:T,f:K}=N(A);W=T,O=K}return g0(_,[W,O])[0]}multiplyUnsafe(A){let{endo:C}=J,W=this;if(!G.isValid(A))throw Error("invalid scalar: out of range");if(A===b$||W.is0())return _.ZERO;if(A===G0)return W;if(r.hasCache(this))return this.multiply(A);if(C){let{k1neg:O,k1:N,k2neg:T,k2:K}=Q$(A),{p1:D,p2:x}=zQ(_,W,N,K);return J$(C.beta,D,x,O,T)}else return r.unsafe(W,A)}multiplyAndAddUnsafe(A,C,W){let O=this.multiplyUnsafe(C).add(A.multiplyUnsafe(W));return O.is0()?void 0:O}toAffine(A){return X$(this,A)}isTorsionFree(){let{isTorsionFree:A}=J;if(X===G0)return!0;if(A)return A(_,this);return r.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:A}=J;if(X===G0)return this;if(A)return A(_,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(A=!0){return N0(A,"isCompressed"),this.assertValidity(),j(_,this,A)}toHex(A=!0){return I$(this.toBytes(A))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(A=!0){return this.toBytes(A)}_setWindowSize(A){this.precompute(A)}static normalizeZ(A){return g0(_,A)}static msm(A,C){return ZQ(_,G,A,C)}static fromPrivateKey(A){return _.BASE.multiply(m$(G,A))}}_.BASE=new _(Y.Gx,Y.Gy,Q.ONE),_.ZERO=new _(Q.ZERO,Q.ONE,Q.ZERO),_.Fp=Q,_.Fn=G;let z$=G.BITS,r=new O8(_,J.endo?Math.ceil(z$/2):z$);return _.BASE.precompute(8),_}function DQ($){return Uint8Array.of($?2:3)}function MQ($,J){return{secretKey:J.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*J.BYTES}}function wJ($,J={}){let{Fn:q}=$,Q=J.randomBytes||o$,G=Object.assign(MQ($.Fp,q),{seed:M8(q.ORDER)});function Y(j){try{return!!m$(q,j)}catch(w){return!1}}function X(j,w){let{publicKey:S,publicKeyUncompressed:I}=G;try{let m=j.length;if(w===!0&&m!==S)return!1;if(w===!1&&m!==I)return!1;return!!$.fromBytes(j)}catch(m){return!1}}function U(j=Q(G.seed)){return y0(g$(j,G.seed,"seed"),q.ORDER)}function Z(j,w=!0){return $.BASE.multiply(m$(q,j)).toBytes(w)}function B(j){let w=U(j);return{secretKey:w,publicKey:Z(w)}}function M(j){if(typeof j==="bigint")return!1;if(j instanceof $)return!0;let{secretKey:w,publicKey:S,publicKeyUncompressed:I}=G;if(q.allowedLengths||w===S)return;let m=p("key",j).length;return m===S||m===I}function H(j,w,S=!0){if(M(j)===!0)throw Error("first arg must be private key");if(M(w)===!1)throw Error("second arg must be public key");let I=m$(q,j);return $.fromHex(w).multiply(I).toBytes(S)}return Object.freeze({getPublicKey:Z,getSharedSecret:H,keygen:B,Point:$,utils:{isValidSecretKey:Y,isValidPublicKey:X,randomSecretKey:U,isValidPrivateKey:Y,randomPrivateKey:U,normPrivateKeyToScalar:(j)=>m$(q,j),precompute(j=8,w=$.BASE){return w.precompute(j,!1)}},lengths:G})}function LJ($,J,q={}){P0(J),H0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let Q=q.randomBytes||o$,G=q.hmac||((W,...O)=>Y8(J,W,D$(...O))),{Fp:Y,Fn:X}=$,{ORDER:U,BITS:Z}=X,{keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j}=wJ($,q),w={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},S="compact";function I(W){let O=U>>G0;return W>O}function m(W,O){if(!X.isValidNot0(O))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return O}function e(W,O){A8(O);let N=j.signature,T=O==="compact"?N:O==="recovered"?N+1:void 0;return g$(W,T,`${O} signature`)}class u{constructor(W,O,N){if(this.r=m("r",W),this.s=m("s",O),N!=null)this.recovery=N;Object.freeze(this)}static fromBytes(W,O=S){e(W,O);let N;if(O==="der"){let{r:x,s:R}=_$.toSig(g$(W));return new u(x,R)}if(O==="recovered")N=W[0],O="compact",W=W.subarray(1);let T=X.BYTES,K=W.subarray(0,T),D=W.subarray(T,T*2);return new u(X.fromBytes(K),X.fromBytes(D),N)}static fromHex(W,O){return this.fromBytes(p$(W),O)}addRecoveryBit(W){return new u(this.r,this.s,W)}recoverPublicKey(W){let O=Y.ORDER,{r:N,s:T,recovery:K}=this;if(K==null||![0,1,2,3].includes(K))throw Error("recovery id invalid");if(U*WQ<O&&K>1)throw Error("recovery id is ambiguous for h>1 curve");let x=K===2||K===3?N+U:N;if(!Y.isValid(x))throw Error("recovery id 2 or 3 invalid");let R=Y.toBytes(x),L=$.fromBytes(D$(DQ((K&1)===0),R)),v=X.inv(x),b=Q$(p("msgHash",W)),h=X.create(-b*v),E=X.create(T*v),y=$.BASE.multiplyUnsafe(h).add(L.multiplyUnsafe(E));if(y.is0())throw Error("point at infinify");return y.assertValidity(),y}hasHighS(){return I(this.s)}toBytes(W=S){if(A8(W),W==="der")return p$(_$.hexFromSig(this));let O=X.toBytes(this.r),N=X.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return D$(Uint8Array.of(this.recovery),O,N)}return D$(O,N)}toHex(W){return I$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return u.fromBytes(p("sig",W),"compact")}static fromDER(W){return u.fromBytes(p("sig",W),"der")}normalizeS(){return this.hasHighS()?new u(this.r,X.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return I$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return I$(this.toBytes("compact"))}}let n=q.bits2int||function(O){if(O.length>8192)throw Error("input is too large");let N=v$(O),T=O.length*8-Z;return T>0?N>>BigInt(T):N},Q$=q.bits2int_modN||function(O){return X.create(n(O))},X$=u$(Z);function V$(W){return l8("num < 2^"+Z,W,b$,X$),X.toBytes(W)}function J$(W,O){return g$(W,void 0,"message"),O?g$(J(W),void 0,"prehashed message"):W}function _(W,O,N){if(["recovered","canonical"].some((E)=>(E in N)))throw Error("sign() legacy options not supported");let{lowS:T,prehash:K,extraEntropy:D}=H8(N,w);W=J$(W,K);let x=Q$(W),R=m$(X,O),L=[V$(R),V$(x)];if(D!=null&&D!==!1){let E=D===!0?Q(j.secretKey):D;L.push(p("extraEntropy",E))}let v=D$(...L),b=x;function h(E){let y=n(E);if(!X.isValidNot0(y))return;let F=X.inv(y),f=$.BASE.multiply(y).toAffine(),Z$=X.create(f.x);if(Z$===b$)return;let j$=X.create(F*X.create(b+Z$*R));if(j$===b$)return;let d=(f.x===Z$?0:2)|Number(f.y&G0),a=j$;if(T&&I(j$))a=X.neg(j$),d^=1;return new u(Z$,a,d)}return{seed:v,k2sig:h}}function z$(W,O,N={}){W=p("message",W);let{seed:T,k2sig:K}=_(W,O,N);return p8(J.outputLen,X.BYTES,G)(T,K)}function r(W){let O=void 0,N=typeof W==="string"||d$(W),T=!N&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!N&&!T)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(T)O=new u(W.r,W.s);else if(N){try{O=u.fromBytes(p("sig",W),"der")}catch(K){if(!(K instanceof _$.Err))throw K}if(!O)try{O=u.fromBytes(p("sig",W),"compact")}catch(K){return!1}}if(!O)return!1;return O}function A(W,O,N,T={}){let{lowS:K,prehash:D,format:x}=H8(T,w);if(N=p("publicKey",N),O=J$(p("message",O),D),"strict"in T)throw Error("options.strict was renamed to lowS");let R=x===void 0?r(W):u.fromBytes(p("sig",W),x);if(R===!1)return!1;try{let L=$.fromBytes(N);if(K&&R.hasHighS())return!1;let{r:v,s:b}=R,h=Q$(O),E=X.inv(b),y=X.create(h*E),F=X.create(v*E),f=$.BASE.multiplyUnsafe(y).add(L.multiplyUnsafe(F));if(f.is0())return!1;return X.create(f.x)===v}catch(L){return!1}}function C(W,O,N={}){let{prehash:T}=H8(N,w);return O=J$(O,T),u.fromBytes(W,"recovered").recoverPublicKey(O).toBytes()}return Object.freeze({keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j,Point:$,sign:z$,verify:A,recoverPublicKey:C,Signature:u,hash:J})}function kJ($){let J={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,Q=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((X)=>Math.ceil(X/2)))):void 0,G=F$(J.n,{BITS:$.nBitLength,allowedLengths:Q,modFromBytes:$.wrapPrivateKey}),Y={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:J,curveOpts:Y}}function CJ($){let{CURVE:J,curveOpts:q}=kJ($),Q={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:J,curveOpts:q,hash:$.hash,ecdsaOpts:Q}}function SJ($,J){let q=J.Point;return Object.assign({},J,{ProjectivePoint:q,CURVE:Object.assign({},$,f0(q.Fn.ORDER,q.Fn.BITS))})}function VQ($){let{CURVE:J,curveOpts:q,hash:Q,ecdsaOpts:G}=CJ($),Y=TJ(J,q),X=LJ(Y,Q,G);return SJ($,X)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function NQ($,J){let q=(Q)=>VQ({...$,hash:Q});return{...q(J),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Y0={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},PJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},IJ=BigInt(0),BQ=BigInt(1),R8=BigInt(2);function EJ($){let J=Y0.p,q=BigInt(3),Q=BigInt(6),G=BigInt(11),Y=BigInt(22),X=BigInt(23),U=BigInt(44),Z=BigInt(88),B=$*$*$%J,M=B*B*$%J,H=B$(M,q,J)*M%J,z=B$(H,q,J)*M%J,j=B$(z,R8,J)*B%J,w=B$(j,G,J)*j%J,S=B$(w,Y,J)*w%J,I=B$(S,U,J)*S%J,m=B$(I,Z,J)*I%J,e=B$(m,U,J)*S%J,u=B$(e,q,J)*M%J,n=B$(u,X,J)*w%J,Q$=B$(n,Q,J)*B%J,X$=B$(Q$,R8,J);if(!F0.eql(F0.sqr(X$),$))throw Error("Cannot find square root");return X$}var F0=F$(Y0.p,{sqrt:EJ}),AQ=NQ({...Y0,Fp:F0,lowS:!0,endo:PJ},v0),OQ={};function m0($,...J){let q=OQ[$];if(q===void 0){let Q=v0(E0($));q=D$(Q,Q),OQ[$]=q}return v0(D$(q,...J))}var T8=($)=>$.toBytes(!0).slice(1),X0=(()=>AQ.Point)(),w8=($)=>$%R8===IJ;function x8($){let{Fn:J,BASE:q}=X0,Q=m$(J,$),G=q.multiply(Q);return{scalar:w8(G.y)?Q:J.neg(Q),bytes:T8(G)}}function RQ($){let J=F0;if(!J.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=J.create($*$),Q=J.create(q*$+BigInt(7)),G=J.sqrt(Q);if(!w8(G))G=J.neg(G);let Y=X0.fromAffine({x:$,y:G});return Y.assertValidity(),Y}var R0=v$;function xQ(...$){return X0.Fn.create(R0(m0("BIP0340/challenge",...$)))}function HQ($){return x8($).bytes}function vJ($,J,q=o$(32)){let{Fn:Q}=X0,G=p("message",$),{bytes:Y,scalar:X}=x8(J),U=p("auxRand",q,32),Z=Q.toBytes(X^R0(m0("BIP0340/aux",U))),B=m0("BIP0340/nonce",Z,Y,G),{bytes:M,scalar:H}=x8(B),z=xQ(M,Y,G),j=new Uint8Array(64);if(j.set(M,0),j.set(Q.toBytes(Q.create(H+z*X)),32),!TQ(j,G,Y))throw Error("sign: Invalid signature produced");return j}function TQ($,J,q){let{Fn:Q,BASE:G}=X0,Y=p("signature",$,64),X=p("message",J),U=p("publicKey",q,32);try{let Z=RQ(R0(U)),B=R0(Y.subarray(0,32));if(!O0(B,BQ,Y0.p))return!1;let M=R0(Y.subarray(32,64));if(!O0(M,BQ,Y0.n))return!1;let H=xQ(Q.toBytes(B),T8(Z),X),z=G.multiplyUnsafe(M).add(Z.multiplyUnsafe(Q.neg(H))),{x:j,y:w}=z.toAffine();if(z.is0()||!w8(w)||j!==B)return!1;return!0}catch(Z){return!1}}var h0=(()=>{let q=(G=o$(48))=>{return y0(G,Y0.n)};AQ.utils.randomSecretKey;function Q(G){let Y=q(G);return{secretKey:Y,publicKey:HQ(Y)}}return{keygen:Q,getPublicKey:HQ,sign:vJ,verify:TQ,Point:X0,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:m0,lift_x:RQ,pointToBytes:T8,numberToBytesBE:J0,bytesToNumberBE:v$,mod:N$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var _J=new TextEncoder,bJ=new TextDecoder,L$=($)=>_J.encode($),a$=($)=>bJ.decode($),c0=($)=>Array.from($,(J)=>J.toString(16).padStart(2,"0")).join(""),O$=JSON.stringify,n$=JSON.parse,d0=($,J=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,Q)=>q+Q.charCodeAt(0),0)%J;var L8="AES-GCM",fJ={},wQ="$",LQ=",",yJ=($)=>{let J=new Uint8Array($),q=32768,Q="";for(let G=0;G<J.length;G+=32768)Q+=String.fromCharCode(...J.subarray(G,G+32768));return btoa(Q)},gJ=($)=>Uint8Array.from(atob($),(J)=>J.charCodeAt(0)).buffer,x0=($)=>fJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((J)=>{let q=new Uint8Array(J),Q="";for(let G of q)Q+=G.toString(36);return Q}),kQ=async($,J,q)=>{let Q=await crypto.subtle.digest("SHA-256",L$(`${$}:${J}:${q}`));return crypto.subtle.importKey("raw",Q,{name:L8},!1,["encrypt","decrypt"])},CQ=async($,J)=>{let q=crypto.getRandomValues(new Uint8Array(12)),Q=await $,G=await crypto.subtle.encrypt({name:L8,iv:q},Q,L$(J));return`${q.join(LQ)}${wQ}${yJ(G)}`},SQ=async($,J)=>{let[q,Q]=J.split(wQ);if(!q||!Q)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(LQ),Number),Y=await $,X=await crypto.subtle.decrypt({name:L8,iv:G},Y,gJ(Q));return a$(X)};var M$="GenosRTC",Z0=($,J)=>Array.from({length:$},J);var z0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(J)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[J%62]).join(""),c=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=z0(20):z0(20),f$=Promise.all.bind(Promise),PQ=typeof window<"u",{entries:IQ,fromEntries:l0,keys:t9}=Object,EQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),T0=(...$)=>$.join("@"),vQ=($,J)=>{let q=[...$],Q=q.length,G=()=>{let Y=Math.sin(J++)*1e4;return Y-Math.floor(Y)};while(Q){let Y=Math.floor(G()*Q--);[q[Q],q[Y]]=[q[Y],q[Q]]}return q};var uJ=5000,_Q="icegatheringstatechange",bQ="offer",FJ="answer",mJ=[...Z0(3,($,J)=>`stun:stun${J||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),k8=($,{rtcConfig:J,rtcPolyfill:q,turnConfig:Q})=>{let G=new(q||RTCPeerConnection)({iceServers:[...mJ,...Q||[]],...J}),Y={},X=!1,U=!1,Z,B=(z)=>Object.assign(z,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(j)=>Y.data?.(j.data),onopen:()=>Y.connect?.(),onclose:()=>Y.close?.(),onerror:(j)=>!j?.error?.message?.includes("User-Initiated Abort")&&Y.error?.(j)}),M=()=>Promise.race([new Promise((z)=>{let j=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(_Q,j),z()};G.addEventListener(_Q,j),j()}),new Promise((z)=>setTimeout(z,uJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?B(Z=G.createDataChannel("data")):G.ondatachannel=({channel:z})=>B(Z=z),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),Y.signal?.(await M())}catch(z){Y.error?.(z)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))Y.close?.()},G.ontrack=(z)=>{Y.track?.(z.track,z.streams[0]),Y.stream?.(z.streams[0])},G.onremovestream=(z)=>Y.stream?.(z.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let H=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(z){if(Z?.readyState==="open"&&!z.sdp?.includes("a=rtpmap"))return;try{if(z.type===bQ){if(X||G.signalingState!=="stable"&&!U){if($)return;await f$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(z)])}else await G.setRemoteDescription(z);await G.setLocalDescription();let j=await M();return Y.signal?.(j),j}if(z.type===FJ){U=!0;try{await G.setRemoteDescription(z)}finally{U=!1}}}catch(j){Y.error?.(j)}},sendData:(z)=>{if(Z?.readyState==="open")Z.send(z)},destroy:()=>{Z?.close(),G.close(),X=U=!1},setHandlers:(z)=>Object.assign(Y,z),offerPromise:$?new Promise((z)=>Y.signal=(j)=>j.type===bQ&&z(j)):Promise.resolve(),addStream:(z)=>z.getTracks().forEach((j)=>G.addTrack(j,z)),removeStream:(z)=>H().filter((j)=>z.getTracks().includes(j.track)).forEach((j)=>G.removeTrack(j)),addTrack:(z,j)=>G.addTrack(z,j),removeTrack:(z)=>{let j=H().find((w)=>w.track===z);if(j)G.removeTrack(j)},replaceTrack:(z,j)=>H().find((w)=>w.track===z)?.replaceTrack(j)}};var hJ=Object.getPrototypeOf(Uint8Array),o0=12,yQ=0,i0=yQ+o0,r0=i0+1,L0=r0+1,k0=L0+1,w0=16384-k0,p0=255,C8="bufferedamountlow",U0=($)=>`@_${$}`,S8=100,cJ=3,dJ=200,lJ=512,fQ=($,J)=>new Response(new Blob([$]).stream().pipeThrough(new J("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),gQ=($,J,q,Q)=>{let G=new Map,Y=new Map,X=new Map,U={},Z={},B={},M={},H=new Map,z=Promise.resolve(),j=(K,D)=>{if(!H.has(K))H.set(K,new Set);H.get(K).add(D)},w=(K,D)=>H.get(K)?.delete(D),S=(K,...D)=>H.get(K)?.forEach((x)=>x(...D)),I=(K,D)=>{let x=K?Array.isArray(K)?K:[K]:G.keys();return Array.from(x,(R)=>{let L=G.get(R);if(!L)return console.warn(`${M$}: no peer with id ${R}`),null;return D(R,L)}).filter(Boolean)},m=(K)=>{if(!G.has(K))return;G.delete(K),delete U[K],delete Z[K],delete B[K],delete M[K],S("peer:leave",K),J(K)},e=(K)=>new Promise((D,x)=>{let R=setTimeout(()=>{K.removeEventListener(C8,L),x(Error(`${M$}: bufferLow timeout`))},5000);function L(){clearTimeout(R),K.removeEventListener(C8,L),D()}K.addEventListener(C8,L)}),u=(K)=>{if(X.has(K))return X.get(K);if(!K)throw T$("action type is required");let D=L$(K);if(D.byteLength>o0)throw T$(`❌ "${K}" exceeds ${o0} bytes. Use a shorter name.`);let x=new Uint8Array(o0).map((y,F)=>D[F]||0),R=0,L=new Map([["message",new Set],["progress",new Set]]),v=(y,F)=>L.get(y)?.add(F),b=(y,F)=>L.get(y)?.delete(F),h=async(y,F,f,Z$)=>{if(f&&typeof f!=="object")throw T$("meta must be object");if(y===void 0)throw T$("data cannot be undefined");let j$=y instanceof Blob,d=j$||y instanceof ArrayBuffer||y instanceof hJ,a=typeof y!=="string";if(f&&!d)throw T$("meta only allowed with binary");let q$=d?new Uint8Array(j$?await y.arrayBuffer():y):L$(a?O$(y):y),s=0;if(!d&&q$.byteLength>=lJ){let H$=await fQ(q$,CompressionStream);if(H$.byteLength<q$.byteLength)q$=H$,s=1}let U$=f?L$(O$(f)):null,k$=Math.ceil(q$.byteLength/w0)+(f?1:0)||1;if(k$>S8)throw T$(`Message too large, exceeds max chunks ${S8}`);let s$=Z0(k$,(H$,G$)=>{let C$=G$===k$-1,S$=f&&G$===0,h$=S$?U$:q$.subarray(f?(G$-1)*w0:G$*w0,f?G$*w0:(G$+1)*w0),w$=new Uint8Array(k0+h$.byteLength);return w$.set(x),w$.set([R],i0),w$.set([C$|S$<<1|d<<2|a<<3|s<<4],r0),w$.set([Math.round((G$+1)/k$*p0)],L0),w$.set(h$,k0),w$});return R=R+1&p0,f$(I(F,async(H$,G$)=>{let{channel:C$}=G$;for(let S$=0;S$<k$;S$++){let h$=0;while(C$.bufferedAmount>C$.bufferedAmountLowThreshold){if(h$++>cJ)throw T$(`${M$}: send buffer full, max retries reached for peer ${H$}`);try{await e(C$)}catch(w$){console.warn(w$.message),await new Promise((t$)=>setTimeout(t$,dJ))}}if(!G.has(H$))break;G$.sendData(s$[S$]),Z$?.(s$[S$][L0]/p0,H$,f)}}))};Y.set(K,{listeners:L,send:h});let E={send:h,on:v,off:b};return X.set(K,E),E},n=(K,D)=>{try{let x=new Uint8Array(D),R=a$(x.subarray(yQ,i0)).replace(/\x00/g,"");if(!Y.has(R))return console.warn(`${M$}: unregistered type (${R})`);let[L]=x.subarray(i0,r0),[v]=x.subarray(r0,L0),[b]=x.subarray(L0,k0),h=x.subarray(k0),E=Boolean(v&1),y=Boolean(v&2),F=Boolean(v&4),f=Boolean(v&8),Z$=Boolean(v&16),j$=Y.get(R),d=(U[K]||={})[R]||={};if(d[L]?.chunks?.length>S8){console.warn(`${M$}: peer ${K} sent too many chunks for nonce ${L}, ignoring.`);return}let a=d[L]||={chunks:[]};if(y)try{a.meta=n$(a$(h))}catch{console.warn(`${M$}: failed to parse meta from peer ${K} for type ${R}`);return}else a.chunks.push(h);if(j$.listeners.get("progress").forEach((s)=>{try{s(b/p0,K,a.meta)}catch(U$){console.error(U$)}}),!E)return;let q$=new Uint8Array(a.chunks.reduce((s,U$)=>s+U$.byteLength,0));a.chunks.reduce((s,U$)=>(q$.set(U$,s),s+U$.byteLength),0),delete d[L],z=z.then(async()=>{let s=Z$?await fQ(q$,DecompressionStream):q$,U$;if(F)U$=s;else if(f)try{U$=n$(a$(s))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${K} for type ${R}`);return}else U$=a$(s);j$.listeners.get("message").forEach((k$)=>{try{k$(U$,K,a.meta)}catch(s$){console.error(s$)}})}).catch((s)=>console.error(`${M$}: dispatch error from peer ${K}:`,s))}catch(x){console.error(`${M$}: error handling data from peer ${K}:`,x)}},Q$=async()=>{try{await N(""),await new Promise((K)=>setTimeout(K,99))}catch(K){console.warn(`${M$}: error sending leave`,K)}for(let[K,D]of G){try{D.destroy()}catch{}G.delete(K)}q()},{send:X$,on:V$}=u(U0("ping")),{send:J$,on:_}=u(U0("pong")),{send:z$,on:r}=u(U0("signal")),{send:A,on:C}=u(U0("stream")),{send:W,on:O}=u(U0("track")),{send:N,on:T}=u(U0("leave"));if($((K,D)=>{let x=G.get(D);if(x===K)return;if(x){let R=()=>{};x.setHandlers({data:R,stream:R,track:R,signal:R,close:R,error:R})}G.set(D,K),K.setHandlers({data:(R)=>n(D,R),stream:(R)=>{S("stream:add",R,D,B[D]),delete B[D]},track:(R,L)=>{S("track:add",R,L,D,M[D]),delete M[D]},signal:(R)=>z$(R,D),close:()=>m(D),error:(R)=>{console.error(`${M$}: peer error for ${D}`,R),m(D)}}),S("peer:join",D,Q?.(D))}),V$("message",(K,D)=>J$("",D)),_("message",(K,D)=>{Z[D]?.(),delete Z[D]}),r("message",(K,D)=>G.get(D)?.signal(K)),C("message",(K,D)=>B[D]=K),O("message",(K,D)=>M[D]=K),T("message",(K,D)=>m(D)),PQ)addEventListener("beforeunload",Q$);return{on:j,off:w,channel:u,leave:Q$,ping:async(K)=>{if(!K)throw T$("ping() requires target peer ID");let D=Date.now();return X$("",K),await new Promise((x)=>Z[K]=x),Date.now()-D},getPeers:()=>l0(Array.from(G,([K,D])=>[K,D.connection])),addStream:(K,D,x)=>I(D,async(R,L)=>{if(x)await A(x,R);L.addStream(K)}),removeStream:(K,D)=>I(D,(x,R)=>R.removeStream(K)),addTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.addTrack(K,D)}),removeTrack:(K,D)=>I(D,(x,R)=>R.removeTrack(K)),replaceTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.replaceTrack(K,D)})}};var pJ=5,oJ=10,iJ=2500,a0=57333,uQ=({init:$,subscribe:J,announce:q})=>{let Q={},G=!1,Y,X;return(U,Z,B)=>{let{appId:M}=U;if(Q[M]?.[Z])return Q[M][Z];if(!U||!Z||!M&&!U.firebaseApp)throw T$(!U?"config required":!Z?"roomId required":"appId missing");let H=EQ;if(!G){let N=$(U);X=Z0(pJ,()=>{try{return k8(!0,U)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{X=X.filter((K)=>{let D=Date.now()-K.created<a0;if(!D)K.destroy();return D})},a0);Q.offerCleanupTimer||=T,G=!0}let z={},j={},w=new Map,S=new Map,I={},m=T0(M$,M,Z),e=x0(m),u=x0(T0(m,c)),n=kQ(U.password||"",M,Z),Q$=(N)=>async(T)=>({type:T.type,sdp:await N(n,T.sdp)}),X$=Q$(SQ),V$=Q$(CQ),J$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(j).includes(N))N.destroy()},a0),N},_=(N)=>{try{return J$(k8(N,U))}catch{return null}},z$=(N,T)=>{if(j[T]===N)return;j[T]?.destroy(),j[T]=N,H(N,T),z[T]?.forEach((K)=>K!==N&&K.destroy()),delete z[T]},r=(N,T)=>{if(j[T]===N)delete j[T]},A=(N)=>async(T,K,D)=>{let[x,R]=await f$([e,u]);if(T!==x&&T!==R)return;let{peerId:L,offer:v,answer:b,type:h}=typeof K==="string"?n$(K):K;if(L&&L!==c)S.set(L,Date.now());if(h&&L)I[L]=h;if(L===c||j[L])return;if(U.admit&&!U.admit(L))return;if(v){if(z[L]?.[N]&&c>L)return;let E=_(!1);if(!E)return;E.setHandlers({connect:()=>z$(E,L),close:()=>r(E,L)});try{let y=await X$(v);if(E.isDead)return;let[F,f]=await f$([x0(T0(m,L)),E.signal(y).then(V$)]);D(F,O$({peerId:c,answer:f,...U.type&&{type:U.type}}))}catch{B?.({error:"decryption failed (offer)",appId:M,peerId:L,roomId:Z})}}else if(b){let E=z[L]?.[N];if(!E||E.isDead)return;E.setHandlers({connect:()=>z$(E,L),close:()=>r(E,L)});try{E.signal(await X$(b))}catch{B?.({error:"decryption failed (answer)",appId:M,peerId:L,roomId:Z})}}else{let E=z[L]||=[];if(E.forEach((d,a)=>{if(d&&(d.isDead||Date.now()-(d.dialedAt??d.created)>a0)){if(d.isDead)w.set(L,Date.now()+30000);d.destroy(),delete E[a]}}),E[N]||E.filter(Boolean).length>=2||w.get(L)>Date.now())return;if(Object.values(z).reduce((d,a)=>d+a.filter((q$)=>q$&&!q$.isDead).length,0)>=oJ)return;let F=X.pop(),f=F?J$(F):_(!0);if(!f){w.set(L,Date.now()+30000);return}f.dialedAt=Date.now();let[Z$,{offer:j$}]=await f$([x0(T0(m,L)),f.offerPromise.then(V$).then((d)=>({offer:d}))]);E[N]=f,f.setHandlers({connect:()=>z$(f,L),close:()=>r(f,L)}),D(Z$,O$({peerId:c,offer:j$,peer:f,...U.type&&{type:U.type}}))}},C=[],W=[];Y.forEach(async(N,T)=>{let K=await N;if(!K)return;let[D,x]=await f$([e,u]);W[T]=J(K,D,x,A(T));let R=async()=>{let L=await q(K,D,x);C[T]=setTimeout(R,typeof L==="number"?L:iJ)};R()}),Q[M]||={};let O=gQ((N)=>H=N,(N)=>delete j[N],()=>O.onCleanup?.(),(N)=>I[N]);return O.onCleanup=()=>{if(delete Q[M][Z],C.forEach(clearTimeout),W.forEach((N)=>N?.()),Object.keys(Q).length===0)clearInterval(Q.offerCleanupTimer),delete Q.offerCleanupTimer},O._census=()=>{for(let T of Object.keys(j))S.set(T,Date.now());let N=Date.now()-120000;for(let[T,K]of S)if(K<N)S.delete(T);return[...S.keys()]},Q[M][Z]=O}};var FQ=3333,rJ=30000,C0={},mQ={},hQ=($,J)=>{let q={},Q=null;q.reopenHandlers=new Set;let G=()=>{if(Q)clearTimeout(Q),Q=null;if(q.socket)q.socket.onclose=null,q.socket.close();let Y=new WebSocket($);Y.onclose=()=>{C0[$]??=FQ,Q=setTimeout(G,C0[$]),C0[$]=Math.min(C0[$]*2,rJ)},Y.onmessage=(X)=>J(X.data),q.socket=Y,q.url=Y.url,q.ready=new Promise((X)=>{Y.onopen=()=>{C0[$]=FQ,X(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(X)=>{if(Y.readyState===1)Y.send(X)}};return q.forceReconnect=G,G(),mQ[$]=q,q};if(typeof window<"u"){let $=(J)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(mQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(J||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var cQ=($)=>()=>l0(IQ($).map(([J,q])=>[J,q.socket])),dQ=($,J,q,Q)=>($.relayUrls??(Q?vQ(J,d0($.appId)):J)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var lQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub","wss://nostr.bitcoiner.social"];var K0={},nJ=10,rQ="x",aQ="EVENT",sJ=/pow:\s*(\d+)\s*bits needed\.?/i,P8=new Set,nQ=h0.utils.randomSecretKey(),tJ=c0(h0.getPublicKey(nQ)),I8={},S0={},eJ={},sQ=()=>Math.floor(Date.now()/1000),tQ=($)=>eJ[$]??=d0($,1e4)+20000,n0=($)=>$.replace(/\/$/,""),$9=($,J)=>{let[q,Q,G,Y]=n$(J);if(q===aQ)return S0[Q]?.(I8[Q],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?Q:Y).match(sJ)?.[1]??0)>0){let U=n0($);P8.add(U),K0[U]?.close?.(),delete K0[U]}}},Q9=($)=>{let J=n0($);if(K0[J])return K0[J];let q=hQ(J,(Q)=>$9(J,Q));return K0[J]=q},pQ=async($,J)=>{let q={kind:tQ($),content:J,pubkey:tJ,created_at:sQ(),tags:[[rQ,$]]},Q=L$(O$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",Q)),Y=h0.sign(G,nQ);return O$([aQ,{...q,id:c0(G),sig:c0(Y)}])},oQ=($,J)=>{return I8[$]=J,O$(["REQ",$,{kinds:[tQ(J)],since:sQ(),["#"+rQ]:[J]}])},iQ=($)=>{return delete I8[$],O$(["CLOSE",$])},s0=uQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??lQ;return dQ($,q,nJ,!1).map(Q9).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,J,q,Q)=>{let G=z0(64),Y=z0(64);S0[G]=S0[Y]=(U,Z)=>Q(U,Z,async(B,M)=>{if(P8.has(n0($.url)))return;$.send(await pQ(B,M))});let X=()=>{$.send(oQ(G,J)),$.send(oQ(Y,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(iQ(G)),$.send(iQ(Y)),delete S0[G],delete S0[Y]}},announce:async($,J)=>{if(P8.has(n0($.url)))return;$.send(await pQ(J,O$({peerId:c})))}}),eQ=cQ(K0);var J9={cellSize:"auto",bridgesPerEdge:2,maxCellSize:50,targetCells:100,debug:!1},$J=5000,q9=3000,G9=30000,Y9=2000,$8=($)=>{let J=String($||"").match(/cell-(\d+)/);return J?Number(J[1]):null},X9=($,J)=>{let q=$8($);if(q==null)return[];let Q=[];for(let G=1;G<J;G*=2){if(q-G>=0)Q.push(`cell-${q-G}`);if(q+G<J)Q.push(`cell-${q+G}`)}return Q},t0=($)=>`c${($8($)||0).toString(36)}`,z9=($,J,q)=>{if($<=10)return Math.max(2,$);let G=10,Y=Math.ceil($/J);return Math.max(G,Math.min(q,Y))},Z9=($,J)=>{return Math.max(1,Math.ceil($/J))},QJ=($)=>{let J=0;for(let q=0;q<$.length;q++)J=Math.imul(J^$.charCodeAt(q),2654435761);return J>>>0},E8=($,J)=>{let q=0,Q=-1;for(let G=0;G<J;G++){let Y=QJ(`${$}:${G}`);if(Y>Q)Q=Y,q=G}return q};class e0{constructor($){this.peerId=$,this.joinedAt=Date.now(),this.lastSeen=Date.now(),this.rttSamples=[],this.stability=1,this.reconnects=0,this.isResponsive=!0,this.connectedCells=new Set}get uptime(){return Date.now()-this.joinedAt}get avgRtt(){if(this.rttSamples.length===0)return 1/0;return Math.round(this.rttSamples.reduce(($,J)=>$+J,0)/this.rttSamples.length)}get healthScore(){let $=this.avgRtt===1/0?0.5:Math.max(0,100-this.avgRtt)/100,J=Math.min(1,this.uptime/60000),q=this.stability,Q=this.isResponsive?1:0.3;return $*0.25+J*0.25+q*0.3+Q*0.2}get isStale(){return Date.now()-this.lastSeen>G9}addRttSample($){if(this.rttSamples.push($),this.rttSamples.length>10)this.rttSamples.shift();this.lastSeen=Date.now(),this.isResponsive=!0}markReconnect(){this.reconnects++,this.stability=Math.max(0,1-this.reconnects*0.1)}markUnresponsive(){this.isResponsive=!1}markSeen(){this.lastSeen=Date.now()}addConnectedCell($){if($)this.connectedCells.add($)}}function U9($,J={},q={}){let Q={...J9,...J},G=!!Q.debug,Y=(...V)=>G&&console.debug("[cells]",...V),X=Math.max(0,Q.bridgesPerEdge|0),U=Math.max(5,Q.maxCellSize|0),Z=Math.max(10,Q.targetCells|0),B=Q.cellSize==="auto",M=B?2:Math.max(1,Q.cellSize|0),H={cellId:null,bridges:[],isBridge:!1},z=null,j=null,w=null,S=new Map,I=new Map,m=new Set,e=new Map,u=new Set,n=new Set,Q$=0,X$=[],V$=new Map,J$=new Set,_=new Map,z$=new Map,r=1,A=0,C=1,W=0,O=()=>{a();let V=Z9(d().length,M);if(V!==C)C=V,W=Date.now();let k=Date.now()-W;if(V>r&&k>4000)r=V;else if(V<r&&k>30000)r=V;return r},N=()=>Math.min(150,Math.ceil(Math.log2(O()+1))*2+3),T=(V)=>X9(V,O()),K=$.on?.bind($),D=$.off?.bind($);if(K)$.on=(V,k)=>String(V).startsWith("mesh:")?L(V,k):K(V,k);if(D)$.off=(V,k)=>String(V).startsWith("mesh:")?e.get(V)?.delete(k):D(V,k);let x=(V)=>(m.add(V),()=>m.delete(V)),R=(V,k,P)=>{if(n.has(P))return;if(n.add(P),n.size>$J){let g=n.values().next().value;n.delete(g)}for(let g of m)try{g(V,k)}catch(l){Y("Error in deliver handler:",l)}},L=(V,k)=>{if(!e.has(V))e.set(V,new Set);return e.get(V).add(k),()=>e.get(V)?.delete(k)},v=(V,...k)=>{let P=e.get(V);if(P)for(let g of P)try{g(...k)}catch{}},b=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},h=()=>`${c}:${Date.now().toString(36)}:${(Q$++&65535).toString(36)}`,E=()=>{if(u.size>$J)u.delete(u.values().next().value)},y=(V,k,P=[])=>{if(!V||!k)return;if(S.set(V,{cell:k,isBridge:P.length>0,bridges:[...P]}),!I.has(V))I.set(V,new e0(V));let g=I.get(V);if(g.markSeen(),g.addConnectedCell(k),z$.set(k,{lastSeen:Date.now(),peerId:V}),P.length>0)for(let l of T(k))g.addConnectedCell(l)},F=(V)=>I.get(V),f=(V,k)=>{let P=I.get(V);if(P)P.addRttSample(k)},Z$=(V)=>{let k=s$(V);if(k.length===0)return null;let P=0,g=0;for(let t of k){let W$=I.get(t);if(W$&&!W$.isStale){if(P+=W$.healthScore,W$.isResponsive)g++}}let l=k.filter((t)=>{let W$=I.get(t);return W$&&!W$.isStale});return{cellId:V,memberCount:l.length,avgHealth:l.length>0?P/l.length:0,responsiveRatio:l.length>0?g/l.length:0}},j$=()=>{let V=Z$(H.cellId);v("mesh:health",{...H,health:V})},d=()=>[...new Set([...$._census(),c])].sort(),a=()=>{if(!B)return;let V=d().length,k=z9(V,Z,U);if(k!==M)Y("cellSize changed:",M,"->",k),M=k},q$=(V,k)=>k.filter((P)=>E8(P,O())===V),s=(V,k)=>{if(X===0)return[];let P=$8(V),g=$8(k);if(P==null||g==null)return[];let l=d(),t=q$(P,l),W$=q$(g,l),$$=Math.min(P,g),e$=Math.max(P,g),j0=(i)=>QJ(`${i}@${$$}~${e$}`),A$=[...new Set([...t,...W$])].sort((i,J8)=>j0(J8)-j0(i));if(!A$.length)return[];let $0=new Set(t),W0=[],o=(i)=>i&&!W0.includes(i)&&W0.push(i);o(A$.find((i)=>$0.has(i))),o(A$.find((i)=>!$0.has(i)));for(let i of A$){if(W0.length>=Math.max(X,2))break;o(i)}return W0},U$=(V,k)=>{if(X===0)return[];let P=T(k),g=[];for(let l of P)if(s(k,l).includes(V))g.push(l);return g},k$=()=>{a();let V=d(),k=E8(c,O()),P=O(),g=`cell-${k}`,l=U$(c,g),t=l.length>0;return Y("computeState",{self:c,myCell:g,isBridge:t,bridgeEdges:l,cellSize:M,rosterSize:V.length,totalCells:P,dynamicTTL:N()}),{cellId:g,isBridge:t,bridges:l,cellSize:M,dynamicTTL:N(),totalCells:P}},s$=(V)=>{let k=[],P=new Set(Object.keys($.getPeers?.()||{}));for(let[g,l]of S)if(l.cell===V){let t=I.get(g);if(P.has(g)&&(!t||!t.isStale))k.push(g)}return k.sort(),k},H$=()=>{if(!z)return;Q8=_8(),v8=Date.now();let V={t:"state",id:h(),ttl:N(),data:{id:c,cell:H.cellId,bridges:H.bridges,health:I.get(c)?.healthScore||0.5,timestamp:Date.now()},origin:c,originCell:H.cellId},k=JSON.stringify(V);z.send(k),G$(j,k)},G$=(V,k)=>{let P=b(k);if(!P?.id||!P?.t)return;let g=u.has(P.id);if(!g)u.add(P.id),E();let{t:l,id:t,ttl:W$,data:$$,origin:e$,originCell:j0}=P,A$=H.cellId;if(l==="state"&&$$)y($$.id,$$.cell,$$.bridges),v("mesh:peer-state",$$);if(l==="ping"&&$$?.pingId&&e$!==c){let o={t:"pong",id:h(),ttl:N(),data:{pingId:$$.pingId,receivedAt:Date.now()},origin:c,originCell:A$};z?.send(JSON.stringify(o))}if(l==="pong"&&$$?.pingId){let o=_.get($$.pingId);if(o){clearTimeout(o.timeout);let i=Date.now()-o.start;f(o.peerId,i),o.resolve(i),_.delete($$.pingId)}}if(l==="msg"&&e$!==c){if(j0===A$||X>0)R($$,e$,t)}if(g)return;if(!H.isBridge)return;if((W$??0)<=0)return;let $0=(o,i,J8=null)=>{if(!o)return;let XJ={t:l,id:t,ttl:J8??(W$??N())-1,data:$$,origin:e$||c,originCell:j0||A$},b8=JSON.stringify(XJ);if(i?.length){let zJ=new Set(Object.keys($.getPeers?.()||{})),f8=i.filter((ZJ)=>zJ.has(ZJ));if(f8.length>0)o.send(b8,f8)}else o.send(b8)};if(V===j){for(let o of T(A$))$0(C$(o),null);return}if(!T(A$).map(t0).includes(V))return;$0(z,null);for(let o of T(A$))if(t0(o)!==V)$0(C$(o),null)},C$=(V)=>{let k=t0(V);if(V$.has(V))return V$.get(V);let P=$.channel(k);if(V$.set(V,P),!J$.has(k))J$.add(k),P.on("message",(g)=>G$(k,g));return P},S$=()=>{if(!H.cellId)return;if(j=t0(H.cellId),z=$.channel(j),!J$.has(j))J$.add(j),z.on("message",(V)=>G$(j,V));if(H.isBridge)for(let V of T(H.cellId))C$(V);if(X$.length)for(let V of X$.splice(0)){let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)}H$()},h$=(V)=>{if(!H.cellId)return!0;if(!d().includes(V))return!0;let P=`cell-${E8(V,O())}`;if(P===H.cellId)return!0;if(H.bridges.includes(P))return!0;return T(H.cellId).includes(P)&&s(P,H.cellId).includes(V)},w$=()=>{let V=$.getPeers?.()||{};for(let k of Object.keys(V))if(!h$(k))V[k].close?.()};q.admit=h$;let t$=()=>{let V=k$(),k=!H.cellId||H.cellId!==V.cellId||H.isBridge!==V.isBridge||JSON.stringify(H.bridges)!==JSON.stringify(V.bridges);if(H=V,y(c,V.cellId,V.bridges),k)S$();else H$();w$(),v("mesh:state",V),j$()},Q8="",v8=0,_8=()=>{return`${H.cellId}:${H.isBridge}:${H.bridges.join(",")}`},qJ=()=>{if(w)return;w=setInterval(()=>{let V=O();if(V!==A){A=V,t$();return}let k=_8();if(k!==Q8||Date.now()-v8>1e4)H$(),Q8=k;for(let[P,g]of I)if(P!==c&&g.isStale)S.delete(P),I.delete(P),Y("Removed stale peer:",P)},Y9)},GJ=()=>{if(w)clearInterval(w),w=null},YJ=(V)=>{return new Promise((k,P)=>{let g=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l=Date.now(),t=setTimeout(()=>{_.delete(g);let $$=I.get(V);if($$)$$.markUnresponsive();P(Error("Ping timeout"))},q9);_.set(g,{start:l,resolve:k,reject:P,timeout:t,peerId:V});let W$={t:"ping",id:h(),ttl:N(),data:{pingId:g,target:V},origin:c,originCell:H.cellId};z?.send(JSON.stringify(W$))})};if($.on?.("peer:join",(V)=>{if(!I.has(V))I.set(V,new e0(V));else I.get(V).markReconnect();t$()}),$.on?.("peer:leave",(V)=>{S.delete(V),t$()}),!I.has(c))I.set(c,new e0(c));return I.get(c).addConnectedCell(H.cellId||"cell-0"),t$(),qJ(),{send:(V)=>{if(!H.cellId||!z)return X$.push(V);let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)},on:(V,k)=>V==="message"?x(k):void 0,ping:YJ,getState:()=>({...H,cellSize:M,health:Z$(H.cellId),dynamicTTL:N(),totalCells:O(),knownCells:z$.size}),getMetrics:F,getCellHealth:Z$,getPeerInfo:()=>new Map(S),getStableRoster:()=>d(),getKnownCells:()=>new Map(z$),getCellSize:()=>M,destroy:()=>{GJ(),_.forEach((V)=>clearTimeout(V.timeout)),_.clear(),n.clear(),z$.clear()}}}function JJ($,J,q){let Q={},G=s0({...$,admit:(Z)=>Q.admit?.(Z)??!0},J,q),Y=$.overlay||{},X=U9(G,Y,Q),U=new Map;return{on:(Z,B)=>G.on(Z,B),off:(Z,B)=>G.off?.(Z,B),channel:(Z)=>{if(U.has(Z))return U.get(Z);let B=G.channel(Z),M={send:(H,z)=>{X.send({_ch:Z,_d:H,_t:z})},on:(H,z)=>{if(H==="message")X.on("message",(j,w)=>{if(j?._ch===Z)z(j._d,w)}),B.on(H,z);else B.on(H,z)},off:(H,z)=>B.off?.(H,z),_original:B};return U.set(Z,M),M},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getMetrics:(Z)=>X.getMetrics(Z),getCellHealth:(Z)=>X.getCellHealth(Z),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),U.clear(),G.leave()},destroy:()=>{X.destroy(),U.clear()}}}var kq=($,J,q)=>$?.cells||$?.overlay?JJ($,J,q):s0($,J,q);export{c as selfId,kq as join,eQ as getRelaySockets};
var c$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function d$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function D0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function R$($,...J){if(!d$($))throw Error("Uint8Array expected");if(J.length>0&&!J.includes($.length))throw Error("Uint8Array expected of length "+J+", got length="+$.length)}function P0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");D0($.outputLen),D0($.blockLen)}function Q0($,J=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(J&&$.finished)throw Error("Hash#digest() has already been called")}function g8($,J){R$($);let q=J.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function l$(...$){for(let J=0;J<$.length;J++)$[J].fill(0)}function I0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function x$($,J){return $<<32-J|$>>>J}var u8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),UJ=Array.from({length:256},($,J)=>J.toString(16).padStart(2,"0"));function I$($){if(R$($),u8)return $.toHex();let J="";for(let q=0;q<$.length;q++)J+=UJ[$[q]];return J}var P$={_0:48,_9:57,A:65,F:70,a:97,f:102};function y8($){if($>=P$._0&&$<=P$._9)return $-P$._0;if($>=P$.A&&$<=P$.F)return $-(P$.A-10);if($>=P$.a&&$<=P$.f)return $-(P$.a-10);return}function p$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(u8)return Uint8Array.fromHex($);let J=$.length,q=J/2;if(J%2)throw Error("hex string expected, got unpadded hex of length "+J);let Q=new Uint8Array(q);for(let G=0,Y=0;G<q;G++,Y+=2){let X=y8($.charCodeAt(Y)),U=y8($.charCodeAt(Y+1));if(X===void 0||U===void 0){let Z=$[Y]+$[Y+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+Y)}Q[G]=X*16+U}return Q}function E0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function M0($){if(typeof $==="string")$=E0($);return R$($),$}function W$(...$){let J=0;for(let Q=0;Q<$.length;Q++){let G=$[Q];R$(G),J+=G.length}let q=new Uint8Array(J);for(let Q=0,G=0;Q<$.length;Q++){let Y=$[Q];q.set(Y,G),G+=Y.length}return q}class V0{}function F8($){let J=(Q)=>$().update(M0(Q)).digest(),q=$();return J.outputLen=q.outputLen,J.blockLen=q.blockLen,J.create=()=>$(),J}function o$($=32){if(c$&&typeof c$.getRandomValues==="function")return c$.getRandomValues(new Uint8Array($));if(c$&&typeof c$.randomBytes==="function")return Uint8Array.from(c$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function KJ($,J,q,Q){if(typeof $.setBigUint64==="function")return $.setBigUint64(J,q,Q);let G=BigInt(32),Y=BigInt(4294967295),X=Number(q>>G&Y),U=Number(q&Y),Z=Q?4:0,B=Q?0:4;$.setUint32(J+Z,X,Q),$.setUint32(J+B,U,Q)}function m8($,J,q){return $&J^~$&q}function h8($,J,q){return $&J^$&q^J&q}class q8 extends V0{constructor($,J,q,Q){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=J,this.padOffset=q,this.isLE=Q,this.buffer=new Uint8Array($),this.view=I0(this.buffer)}update($){Q0(this),$=M0($),R$($);let{view:J,buffer:q,blockLen:Q}=this,G=$.length;for(let Y=0;Y<G;){let X=Math.min(Q-this.pos,G-Y);if(X===Q){let U=I0($);for(;Q<=G-Y;Y+=Q)this.process(U,Y);continue}if(q.set($.subarray(Y,Y+X),this.pos),this.pos+=X,Y+=X,this.pos===Q)this.process(J,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){Q0(this),g8($,this),this.finished=!0;let{buffer:J,view:q,blockLen:Q,isLE:G}=this,{pos:Y}=this;if(J[Y++]=128,l$(this.buffer.subarray(Y)),this.padOffset>Q-Y)this.process(q,0),Y=0;for(let M=Y;M<Q;M++)J[M]=0;KJ(q,Q-8,BigInt(this.length*8),G),this.process(q,0);let X=I0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,B=this.get();if(Z>B.length)throw Error("_sha2: outputLen bigger than state");for(let M=0;M<Z;M++)X.setUint32(4*M,B[M],G)}digest(){let{buffer:$,outputLen:J}=this;this.digestInto($);let q=$.slice(0,J);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:J,buffer:q,length:Q,finished:G,destroyed:Y,pos:X}=this;if($.destroyed=Y,$.finished=G,$.length=Q,$.pos=X,Q%J)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var E$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var jJ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),y$=new Uint32Array(64);class c8 extends q8{constructor($=32){super(64,$,8,!1);this.A=E$[0]|0,this.B=E$[1]|0,this.C=E$[2]|0,this.D=E$[3]|0,this.E=E$[4]|0,this.F=E$[5]|0,this.G=E$[6]|0,this.H=E$[7]|0}get(){let{A:$,B:J,C:q,D:Q,E:G,F:Y,G:X,H:U}=this;return[$,J,q,Q,G,Y,X,U]}set($,J,q,Q,G,Y,X,U){this.A=$|0,this.B=J|0,this.C=q|0,this.D=Q|0,this.E=G|0,this.F=Y|0,this.G=X|0,this.H=U|0}process($,J){for(let M=0;M<16;M++,J+=4)y$[M]=$.getUint32(J,!1);for(let M=16;M<64;M++){let H=y$[M-15],z=y$[M-2],j=x$(H,7)^x$(H,18)^H>>>3,w=x$(z,17)^x$(z,19)^z>>>10;y$[M]=w+y$[M-7]+j+y$[M-16]|0}let{A:q,B:Q,C:G,D:Y,E:X,F:U,G:Z,H:B}=this;for(let M=0;M<64;M++){let H=x$(X,6)^x$(X,11)^x$(X,25),z=B+H+m8(X,U,Z)+jJ[M]+y$[M]|0,w=(x$(q,2)^x$(q,13)^x$(q,22))+h8(q,Q,G)|0;B=Z,Z=U,U=X,X=Y+z|0,Y=G,G=Q,Q=q,q=z+w|0}q=q+this.A|0,Q=Q+this.B|0,G=G+this.C|0,Y=Y+this.D|0,X=X+this.E|0,U=U+this.F|0,Z=Z+this.G|0,B=B+this.H|0,this.set(q,Q,G,Y,X,U,Z,B)}roundClean(){l$(y$)}destroy(){this.set(0,0,0,0,0,0,0,0),l$(this.buffer)}}var v0=F8(()=>new c8);class G8 extends V0{constructor($,J){super();this.finished=!1,this.destroyed=!1,P0($);let q=M0(J);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let Q=this.blockLen,G=new Uint8Array(Q);G.set(q.length>Q?$.create().update(q).digest():q);for(let Y=0;Y<G.length;Y++)G[Y]^=54;this.iHash.update(G),this.oHash=$.create();for(let Y=0;Y<G.length;Y++)G[Y]^=106;this.oHash.update(G),l$(G)}update($){return Q0(this),this.iHash.update($),this}digestInto($){Q0(this),R$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:J,iHash:q,finished:Q,destroyed:G,blockLen:Y,outputLen:X}=this;return $=$,$.finished=Q,$.destroyed=G,$.blockLen=Y,$.outputLen=X,$.oHash=J._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var Y8=($,J,q)=>new G8($,J).update(q).digest();Y8.create=($,J)=>new G8($,J);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Z8=BigInt(0),z8=BigInt(1);function N0($,J=""){if(typeof $!=="boolean"){let q=J&&`"${J}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function g$($,J,q=""){let Q=d$($),G=$?.length,Y=J!==void 0;if(!Q||Y&&G!==J){let X=q&&`"${q}" `,U=Y?` of length ${J}`:"",Z=Q?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+U+", got "+Z)}return $}function B0($){let J=$.toString(16);return J.length&1?"0"+J:J}function d8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?Z8:BigInt("0x"+$)}function v$($){return d8(I$($))}function U8($){return R$($),d8(I$(Uint8Array.from($).reverse()))}function J0($,J){return p$($.toString(16).padStart(J*2,"0"))}function K8($,J){return J0($,J).reverse()}function o($,J,q){let Q;if(typeof J==="string")try{Q=p$(J)}catch(Y){throw Error($+" must be hex string or Uint8Array, cause: "+Y)}else if(d$(J))Q=Uint8Array.from(J);else throw Error($+" must be hex string or Uint8Array");let G=Q.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return Q}var X8=($)=>typeof $==="bigint"&&Z8<=$;function O0($,J,q){return X8($)&&X8(J)&&X8(q)&&J<=$&&$<q}function l8($,J,q,Q){if(!O0(J,q,Q))throw Error("expected valid "+$+": "+q+" <= n < "+Q+", got "+J)}function _0($){let J;for(J=0;$>Z8;$>>=z8,J+=1);return J}var u$=($)=>(z8<<BigInt($))-z8;function p8($,J,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof J!=="number"||J<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let Q=(j)=>new Uint8Array(j),G=(j)=>Uint8Array.of(j),Y=Q($),X=Q($),U=0,Z=()=>{Y.fill(1),X.fill(0),U=0},B=(...j)=>q(X,Y,...j),M=(j=Q(0))=>{if(X=B(G(0),j),Y=B(),j.length===0)return;X=B(G(1),j),Y=B()},H=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let j=0,w=[];while(j<J){Y=B();let S=Y.slice();w.push(S),j+=Y.length}return W$(...w)};return(j,w)=>{Z(),M(j);let S=void 0;while(!(S=w(H())))M();return Z(),S}}function H0($,J,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function Q(G,Y,X){let U=$[G];if(X&&U===void 0)return;let Z=typeof U;if(Z!==Y||U===null)throw Error(`param "${G}" is invalid: expected ${Y}, got ${Z}`)}Object.entries(J).forEach(([G,Y])=>Q(G,Y,!1)),Object.entries(q).forEach(([G,Y])=>Q(G,Y,!0))}function j8($){let J=new WeakMap;return(q,...Q)=>{let G=J.get(q);if(G!==void 0)return G;let Y=$(q,...Q);return J.set(q,Y),Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var K$=BigInt(0),Y$=BigInt(1),i$=BigInt(2),r8=BigInt(3),a8=BigInt(4),n8=BigInt(5),WJ=BigInt(7),s8=BigInt(8),DJ=BigInt(9),t8=BigInt(16);function N$($,J){let q=$%J;return q>=K$?q:J+q}function B$($,J,q){let Q=$;while(J-- >K$)Q*=Q,Q%=q;return Q}function o8($,J){if($===K$)throw Error("invert: expected non-zero number");if(J<=K$)throw Error("invert: expected positive modulus, got "+J);let q=N$($,J),Q=J,G=K$,Y=Y$,X=Y$,U=K$;while(q!==K$){let B=Q/q,M=Q%q,H=G-X*B,z=Y-U*B;Q=q,q=M,G=X,Y=U,X=H,U=z}if(Q!==Y$)throw Error("invert: does not exist");return N$(G,J)}function W8($,J,q){if(!$.eql($.sqr(J),q))throw Error("Cannot find square root")}function e8($,J){let q=($.ORDER+Y$)/a8,Q=$.pow(J,q);return W8($,Q,J),Q}function MJ($,J){let q=($.ORDER-n8)/s8,Q=$.mul(J,i$),G=$.pow(Q,q),Y=$.mul(J,G),X=$.mul($.mul(Y,i$),G),U=$.mul(Y,$.sub(X,$.ONE));return W8($,U,J),U}function VJ($){let J=F$($),q=$Q($),Q=q(J,J.neg(J.ONE)),G=q(J,Q),Y=q(J,J.neg(Q)),X=($+WJ)/t8;return(U,Z)=>{let B=U.pow(Z,X),M=U.mul(B,Q),H=U.mul(B,G),z=U.mul(B,Y),j=U.eql(U.sqr(M),Z),w=U.eql(U.sqr(H),Z);B=U.cmov(B,M,j),M=U.cmov(z,H,w);let S=U.eql(U.sqr(M),Z),I=U.cmov(B,M,S);return W8(U,I,Z),I}}function $Q($){if($<r8)throw Error("sqrt is not defined for small field");let J=$-Y$,q=0;while(J%i$===K$)J/=i$,q++;let Q=i$,G=F$($);while(i8(G,Q)===1)if(Q++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return e8;let Y=G.pow(Q,J),X=(J+Y$)/i$;return function(Z,B){if(Z.is0(B))return B;if(i8(Z,B)!==1)throw Error("Cannot find square root");let M=q,H=Z.mul(Z.ONE,Y),z=Z.pow(B,J),j=Z.pow(B,X);while(!Z.eql(z,Z.ONE)){if(Z.is0(z))return Z.ZERO;let w=1,S=Z.sqr(z);while(!Z.eql(S,Z.ONE))if(w++,S=Z.sqr(S),w===M)throw Error("Cannot find square root");let I=Y$<<BigInt(M-w-1),m=Z.pow(H,I);M=w,H=Z.sqr(m),z=Z.mul(z,H),j=Z.mul(j,m)}return j}}function NJ($){if($%a8===r8)return e8;if($%s8===n8)return MJ;if($%t8===DJ)return VJ($);return $Q($)}var BJ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function D8($){let J={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=BJ.reduce((Q,G)=>{return Q[G]="function",Q},J);return H0($,q),$}function OJ($,J,q){if(q<K$)throw Error("invalid exponent, negatives unsupported");if(q===K$)return $.ONE;if(q===Y$)return J;let Q=$.ONE,G=J;while(q>K$){if(q&Y$)Q=$.mul(Q,G);G=$.sqr(G),q>>=Y$}return Q}function b0($,J,q=!1){let Q=Array(J.length).fill(q?$.ZERO:void 0),G=J.reduce((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=X,$.mul(X,U)},$.ONE),Y=$.inv(G);return J.reduceRight((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=$.mul(X,Q[Z]),$.mul(X,U)},Y),Q}function i8($,J){let q=($.ORDER-Y$)/i$,Q=$.pow(J,q),G=$.eql(Q,$.ONE),Y=$.eql(Q,$.ZERO),X=$.eql(Q,$.neg($.ONE));if(!G&&!Y&&!X)throw Error("invalid Legendre symbol result");return G?1:Y?0:-1}function f0($,J){if(J!==void 0)D0(J);let q=J!==void 0?J:$.toString(2).length,Q=Math.ceil(q/8);return{nBitLength:q,nByteLength:Q}}function F$($,J,q=!1,Q={}){if($<=K$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,Y=void 0,X=!1,U=void 0;if(typeof J==="object"&&J!=null){if(Q.sqrt||q)throw Error("cannot specify opts in two arguments");let z=J;if(z.BITS)G=z.BITS;if(z.sqrt)Y=z.sqrt;if(typeof z.isLE==="boolean")q=z.isLE;if(typeof z.modFromBytes==="boolean")X=z.modFromBytes;U=z.allowedLengths}else{if(typeof J==="number")G=J;if(Q.sqrt)Y=Q.sqrt}let{nBitLength:Z,nByteLength:B}=f0($,G);if(B>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let M,H=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:B,MASK:u$(Z),ZERO:K$,ONE:Y$,allowedLengths:U,create:(z)=>N$(z,$),isValid:(z)=>{if(typeof z!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof z);return K$<=z&&z<$},is0:(z)=>z===K$,isValidNot0:(z)=>!H.is0(z)&&H.isValid(z),isOdd:(z)=>(z&Y$)===Y$,neg:(z)=>N$(-z,$),eql:(z,j)=>z===j,sqr:(z)=>N$(z*z,$),add:(z,j)=>N$(z+j,$),sub:(z,j)=>N$(z-j,$),mul:(z,j)=>N$(z*j,$),pow:(z,j)=>OJ(H,z,j),div:(z,j)=>N$(z*o8(j,$),$),sqrN:(z)=>z*z,addN:(z,j)=>z+j,subN:(z,j)=>z-j,mulN:(z,j)=>z*j,inv:(z)=>o8(z,$),sqrt:Y||((z)=>{if(!M)M=NJ($);return M(H,z)}),toBytes:(z)=>q?K8(z,B):J0(z,B),fromBytes:(z,j=!0)=>{if(U){if(!U.includes(z.length)||z.length>B)throw Error("Field.fromBytes: expected "+U+" bytes, got "+z.length);let S=new Uint8Array(B);S.set(z,q?0:S.length-z.length),z=S}if(z.length!==B)throw Error("Field.fromBytes: expected "+B+" bytes, got "+z.length);let w=q?U8(z):v$(z);if(X)w=N$(w,$);if(!j){if(!H.isValid(w))throw Error("invalid field element: outside of range 0..ORDER")}return w},invertBatch:(z)=>b0(H,z),cmov:(z,j,w)=>w?j:z});return Object.freeze(H)}function QQ($){if(typeof $!=="bigint")throw Error("field order must be bigint");let J=$.toString(2).length;return Math.ceil(J/8)}function M8($){let J=QQ($);return J+Math.ceil(J/2)}function y0($,J,q=!1){let Q=$.length,G=QQ(J),Y=M8(J);if(Q<16||Q<Y||Q>1024)throw Error("expected "+Y+"-1024 bytes of input, got "+Q);let X=q?U8($):v$($),U=N$(X,J-Y$)+Y$;return q?K8(U,G):J0(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var q0=BigInt(0),r$=BigInt(1);function A0($,J){let q=J.negate();return $?q:J}function g0($,J){let q=b0($.Fp,J.map((Q)=>Q.Z));return J.map((Q,G)=>$.fromAffine(Q.toAffine(q[G])))}function YQ($,J){if(!Number.isSafeInteger($)||$<=0||$>J)throw Error("invalid window size, expected [1.."+J+"], got W="+$)}function V8($,J){YQ($,J);let q=Math.ceil(J/$)+1,Q=2**($-1),G=2**$,Y=u$($),X=BigInt($);return{windows:q,windowSize:Q,mask:Y,maxNumber:G,shiftBy:X}}function JQ($,J,q){let{windowSize:Q,mask:G,maxNumber:Y,shiftBy:X}=q,U=Number($&G),Z=$>>X;if(U>Q)U-=Y,Z+=r$;let B=J*Q,M=B+Math.abs(U)-1,H=U===0,z=U<0,j=J%2!==0;return{nextN:Z,offset:M,isZero:H,isNeg:z,isNegF:j,offsetF:B}}function HJ($,J){if(!Array.isArray($))throw Error("array expected");$.forEach((q,Q)=>{if(!(q instanceof J))throw Error("invalid point at index "+Q)})}function AJ($,J){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,Q)=>{if(!J.isValid(q))throw Error("invalid scalar at index "+Q)})}var N8=new WeakMap,XQ=new WeakMap;function B8($){return XQ.get($)||1}function qQ($){if($!==q0)throw Error("invalid wNAF")}class O8{constructor($,J){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=J}_unsafeLadder($,J,q=this.ZERO){let Q=$;while(J>q0){if(J&r$)q=q.add(Q);Q=Q.double(),J>>=r$}return q}precomputeWindow($,J){let{windows:q,windowSize:Q}=V8(J,this.bits),G=[],Y=$,X=Y;for(let U=0;U<q;U++){X=Y,G.push(X);for(let Z=1;Z<Q;Z++)X=X.add(Y),G.push(X);Y=X.double()}return G}wNAF($,J,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let Q=this.ZERO,G=this.BASE,Y=V8($,this.bits);for(let X=0;X<Y.windows;X++){let{nextN:U,offset:Z,isZero:B,isNeg:M,isNegF:H,offsetF:z}=JQ(q,X,Y);if(q=U,B)G=G.add(A0(H,J[z]));else Q=Q.add(A0(M,J[Z]))}return qQ(q),{p:Q,f:G}}wNAFUnsafe($,J,q,Q=this.ZERO){let G=V8($,this.bits);for(let Y=0;Y<G.windows;Y++){if(q===q0)break;let{nextN:X,offset:U,isZero:Z,isNeg:B}=JQ(q,Y,G);if(q=X,Z)continue;else{let M=J[U];Q=Q.add(B?M.negate():M)}}return qQ(q),Q}getPrecomputes($,J,q){let Q=N8.get(J);if(!Q){if(Q=this.precomputeWindow(J,$),$!==1){if(typeof q==="function")Q=q(Q);N8.set(J,Q)}}return Q}cached($,J,q){let Q=B8($);return this.wNAF(Q,this.getPrecomputes(Q,$,q),J)}unsafe($,J,q,Q){let G=B8($);if(G===1)return this._unsafeLadder($,J,Q);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),J,Q)}createCache($,J){YQ(J,this.bits),XQ.set($,J),N8.delete($)}hasCache($){return B8($)!==1}}function zQ($,J,q,Q){let G=J,Y=$.ZERO,X=$.ZERO;while(q>q0||Q>q0){if(q&r$)Y=Y.add(G);if(Q&r$)X=X.add(G);G=G.double(),q>>=r$,Q>>=r$}return{p1:Y,p2:X}}function ZQ($,J,q,Q){HJ(q,$),AJ(Q,J);let G=q.length,Y=Q.length;if(G!==Y)throw Error("arrays of points and scalars must have equal length");let X=$.ZERO,U=_0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let B=u$(Z),M=Array(Number(B)+1).fill(X),H=Math.floor((J.BITS-1)/Z)*Z,z=X;for(let j=H;j>=0;j-=Z){M.fill(X);for(let S=0;S<Y;S++){let I=Q[S],m=Number(I>>BigInt(j)&B);M[m]=M[m].add(q[S])}let w=X;for(let S=M.length-1,I=X;S>0;S--)I=I.add(M[S]),w=w.add(I);if(z=z.add(w),j!==0)for(let S=0;S<Z;S++)z=z.double()}return z}function GQ($,J,q){if(J){if(J.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return D8(J),J}else return F$($,{isLE:q})}function UQ($,J,q={},Q){if(Q===void 0)Q=$==="edwards";if(!J||typeof J!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let B=J[Z];if(!(typeof B==="bigint"&&B>q0))throw Error(`CURVE.${Z} must be positive bigint`)}let G=GQ(J.p,q.Fp,Q),Y=GQ(J.n,q.Fn,Q),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(J[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return J=Object.freeze(Object.assign({},J)),{CURVE:J,Fp:G,Fn:Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var KQ=($,J)=>($+($>=0?J:-J)/WQ)/J;function RJ($,J,q){let[[Q,G],[Y,X]]=J,U=KQ(X*$,q),Z=KQ(-G*$,q),B=$-U*Q-Z*Y,M=-U*G-Z*X,H=B<b$,z=M<b$;if(H)B=-B;if(z)M=-M;let j=u$(Math.ceil(_0(q)/2))+G0;if(B<b$||B>=j||M<b$||M>=j)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:H,k1:B,k2neg:z,k2:M}}function A8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function H8($,J){let q={};for(let Q of Object.keys(J))q[Q]=$[Q]===void 0?J[Q]:$[Q];if(N0(q.lowS,"lowS"),N0(q.prehash,"prehash"),q.format!==void 0)A8(q.format);return q}class jQ extends Error{constructor($=""){super($)}}var _$={Err:jQ,_tlv:{encode:($,J)=>{let{Err:q}=_$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length&1)throw new q("tlv.encode: unpadded data");let Q=J.length/2,G=B0(Q);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let Y=Q>127?B0(G.length/2|128):"";return B0($)+Y+G+J},decode($,J){let{Err:q}=_$,Q=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length<2||J[Q++]!==$)throw new q("tlv.decode: wrong tlv");let G=J[Q++],Y=!!(G&128),X=0;if(!Y)X=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let B=J.subarray(Q,Q+Z);if(B.length!==Z)throw new q("tlv.decode: length bytes not complete");if(B[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let M of B)X=X<<8|M;if(Q+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let U=J.subarray(Q,Q+X);if(U.length!==X)throw new q("tlv.decode: wrong value length");return{v:U,l:J.subarray(Q+X)}}},_int:{encode($){let{Err:J}=_$;if($<b$)throw new J("integer: negative integers are not allowed");let q=B0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new J("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:J}=_$;if($[0]&128)throw new J("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new J("invalid signature integer: unnecessary leading zero");return v$($)}},toSig($){let{Err:J,_int:q,_tlv:Q}=_$,G=o("signature",$),{v:Y,l:X}=Q.decode(48,G);if(X.length)throw new J("invalid signature: left bytes after parsing");let{v:U,l:Z}=Q.decode(2,Y),{v:B,l:M}=Q.decode(2,Z);if(M.length)throw new J("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(B)}},hexFromSig($){let{_tlv:J,_int:q}=_$,Q=J.encode(2,q.encode($.r)),G=J.encode(2,q.encode($.s)),Y=Q+G;return J.encode(48,Y)}},b$=BigInt(0),G0=BigInt(1),WQ=BigInt(2),u0=BigInt(3),xJ=BigInt(4);function m$($,J){let{BYTES:q}=$,Q;if(typeof J==="bigint")Q=J;else{let G=o("private key",J);try{Q=$.fromBytes(G)}catch(Y){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof J}`)}}if(!$.isValidNot0(Q))throw Error("invalid private key: out of range [1..N-1]");return Q}function TJ($,J={}){let q=UQ("weierstrass",$,J),{Fp:Q,Fn:G}=q,Y=q.CURVE,{h:X,n:U}=Y;H0(J,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=J;if(Z){if(!Q.is0(Y.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let B=MQ(Q,G);function M(){if(!Q.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function H(A,C,W){let{x:O,y:N}=C.toAffine(),T=Q.toBytes(O);if(N0(W,"isCompressed"),W){M();let K=!Q.isOdd(N);return W$(DQ(K),T)}else return W$(Uint8Array.of(4),T,Q.toBytes(N))}function z(A){g$(A,void 0,"Point");let{publicKey:C,publicKeyUncompressed:W}=B,O=A.length,N=A[0],T=A.subarray(1);if(O===C&&(N===2||N===3)){let K=Q.fromBytes(T);if(!Q.isValid(K))throw Error("bad point: is not on curve, wrong x");let D=S(K),x;try{x=Q.sqrt(D)}catch(v){let f=v instanceof Error?": "+v.message:"";throw Error("bad point: is not on curve, sqrt error"+f)}M();let R=Q.isOdd(x);if((N&1)===1!==R)x=Q.neg(x);return{x:K,y:x}}else if(O===W&&N===4){let K=Q.BYTES,D=Q.fromBytes(T.subarray(0,K)),x=Q.fromBytes(T.subarray(K,K*2));if(!I(D,x))throw Error("bad point: is not on curve");return{x:D,y:x}}else throw Error(`bad point: got length ${O}, expected compressed=${C} or uncompressed=${W}`)}let j=J.toBytes||H,w=J.fromBytes||z;function S(A){let C=Q.sqr(A),W=Q.mul(C,A);return Q.add(Q.add(W,Q.mul(A,Y.a)),Y.b)}function I(A,C){let W=Q.sqr(C),O=S(A);return Q.eql(W,O)}if(!I(Y.Gx,Y.Gy))throw Error("bad curve params: generator point");let m=Q.mul(Q.pow(Y.a,u0),xJ),$$=Q.mul(Q.sqr(Y.b),BigInt(27));if(Q.is0(Q.add(m,$$)))throw Error("bad curve params: a or b");function u(A,C,W=!1){if(!Q.isValid(C)||W&&Q.is0(C))throw Error(`bad point coordinate ${A}`);return C}function n(A){if(!(A instanceof _))throw Error("ProjectivePoint expected")}function J$(A){if(!Z||!Z.basises)throw Error("no endo");return RJ(A,Z.basises,G.ORDER)}let X$=j8((A,C)=>{let{X:W,Y:O,Z:N}=A;if(Q.eql(N,Q.ONE))return{x:W,y:O};let T=A.is0();if(C==null)C=T?Q.ONE:Q.inv(N);let K=Q.mul(W,C),D=Q.mul(O,C),x=Q.mul(N,C);if(T)return{x:Q.ZERO,y:Q.ZERO};if(!Q.eql(x,Q.ONE))throw Error("invZ was invalid");return{x:K,y:D}}),M$=j8((A)=>{if(A.is0()){if(J.allowInfinityPoint&&!Q.is0(A.Y))return;throw Error("bad point: ZERO")}let{x:C,y:W}=A.toAffine();if(!Q.isValid(C)||!Q.isValid(W))throw Error("bad point: x or y not field elements");if(!I(C,W))throw Error("bad point: equation left != right");if(!A.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function q$(A,C,W,O,N){return W=new _(Q.mul(W.X,A),W.Y,W.Z),C=A0(O,C),W=A0(N,W),C.add(W)}class _{constructor(A,C,W){this.X=u("x",A),this.Y=u("y",C,!0),this.Z=u("z",W),Object.freeze(this)}static CURVE(){return Y}static fromAffine(A){let{x:C,y:W}=A||{};if(!A||!Q.isValid(C)||!Q.isValid(W))throw Error("invalid affine point");if(A instanceof _)throw Error("projective point not allowed");if(Q.is0(C)&&Q.is0(W))return _.ZERO;return new _(C,W,Q.ONE)}static fromBytes(A){let C=_.fromAffine(w(g$(A,void 0,"point")));return C.assertValidity(),C}static fromHex(A){return _.fromBytes(o("pointHex",A))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(A=8,C=!0){if(a.createCache(this,A),!C)this.multiply(u0);return this}assertValidity(){M$(this)}hasEvenY(){let{y:A}=this.toAffine();if(!Q.isOdd)throw Error("Field doesn't support isOdd");return!Q.isOdd(A)}equals(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.eql(Q.mul(C,K),Q.mul(N,O)),x=Q.eql(Q.mul(W,K),Q.mul(T,O));return D&&x}negate(){return new _(this.X,Q.neg(this.Y),this.Z)}double(){let{a:A,b:C}=Y,W=Q.mul(C,u0),{X:O,Y:N,Z:T}=this,K=Q.ZERO,D=Q.ZERO,x=Q.ZERO,R=Q.mul(O,O),L=Q.mul(N,N),v=Q.mul(T,T),f=Q.mul(O,N);return f=Q.add(f,f),x=Q.mul(O,T),x=Q.add(x,x),K=Q.mul(A,x),D=Q.mul(W,v),D=Q.add(K,D),K=Q.sub(L,D),D=Q.add(L,D),D=Q.mul(K,D),K=Q.mul(f,K),x=Q.mul(W,x),v=Q.mul(A,v),f=Q.sub(R,v),f=Q.mul(A,f),f=Q.add(f,x),x=Q.add(R,R),R=Q.add(x,R),R=Q.add(R,v),R=Q.mul(R,f),D=Q.add(D,R),v=Q.mul(N,T),v=Q.add(v,v),R=Q.mul(v,f),K=Q.sub(K,R),x=Q.mul(v,L),x=Q.add(x,x),x=Q.add(x,x),new _(K,D,x)}add(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.ZERO,x=Q.ZERO,R=Q.ZERO,L=Y.a,v=Q.mul(Y.b,u0),f=Q.mul(C,N),h=Q.mul(W,T),E=Q.mul(O,K),y=Q.add(C,W),F=Q.add(N,T);y=Q.mul(y,F),F=Q.add(f,h),y=Q.sub(y,F),F=Q.add(C,O);let b=Q.add(N,K);return F=Q.mul(F,b),b=Q.add(f,E),F=Q.sub(F,b),b=Q.add(W,O),D=Q.add(T,K),b=Q.mul(b,D),D=Q.add(h,E),b=Q.sub(b,D),R=Q.mul(L,F),D=Q.mul(v,E),R=Q.add(D,R),D=Q.sub(h,R),R=Q.add(h,R),x=Q.mul(D,R),h=Q.add(f,f),h=Q.add(h,f),E=Q.mul(L,E),F=Q.mul(v,F),h=Q.add(h,E),E=Q.sub(f,E),E=Q.mul(L,E),F=Q.add(F,E),f=Q.mul(h,F),x=Q.add(x,f),f=Q.mul(b,F),D=Q.mul(y,D),D=Q.sub(D,f),f=Q.mul(y,h),R=Q.mul(b,R),R=Q.add(R,f),new _(D,x,R)}subtract(A){return this.add(A.negate())}is0(){return this.equals(_.ZERO)}multiply(A){let{endo:C}=J;if(!G.isValidNot0(A))throw Error("invalid scalar: out of range");let W,O,N=(T)=>a.cached(this,T,(K)=>g0(_,K));if(C){let{k1neg:T,k1:K,k2neg:D,k2:x}=J$(A),{p:R,f:L}=N(K),{p:v,f}=N(x);O=L.add(f),W=q$(C.beta,R,v,T,D)}else{let{p:T,f:K}=N(A);W=T,O=K}return g0(_,[W,O])[0]}multiplyUnsafe(A){let{endo:C}=J,W=this;if(!G.isValid(A))throw Error("invalid scalar: out of range");if(A===b$||W.is0())return _.ZERO;if(A===G0)return W;if(a.hasCache(this))return this.multiply(A);if(C){let{k1neg:O,k1:N,k2neg:T,k2:K}=J$(A),{p1:D,p2:x}=zQ(_,W,N,K);return q$(C.beta,D,x,O,T)}else return a.unsafe(W,A)}multiplyAndAddUnsafe(A,C,W){let O=this.multiplyUnsafe(C).add(A.multiplyUnsafe(W));return O.is0()?void 0:O}toAffine(A){return X$(this,A)}isTorsionFree(){let{isTorsionFree:A}=J;if(X===G0)return!0;if(A)return A(_,this);return a.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:A}=J;if(X===G0)return this;if(A)return A(_,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(A=!0){return N0(A,"isCompressed"),this.assertValidity(),j(_,this,A)}toHex(A=!0){return I$(this.toBytes(A))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(A=!0){return this.toBytes(A)}_setWindowSize(A){this.precompute(A)}static normalizeZ(A){return g0(_,A)}static msm(A,C){return ZQ(_,G,A,C)}static fromPrivateKey(A){return _.BASE.multiply(m$(G,A))}}_.BASE=new _(Y.Gx,Y.Gy,Q.ONE),_.ZERO=new _(Q.ZERO,Q.ONE,Q.ZERO),_.Fp=Q,_.Fn=G;let z$=G.BITS,a=new O8(_,J.endo?Math.ceil(z$/2):z$);return _.BASE.precompute(8),_}function DQ($){return Uint8Array.of($?2:3)}function MQ($,J){return{secretKey:J.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*J.BYTES}}function wJ($,J={}){let{Fn:q}=$,Q=J.randomBytes||o$,G=Object.assign(MQ($.Fp,q),{seed:M8(q.ORDER)});function Y(j){try{return!!m$(q,j)}catch(w){return!1}}function X(j,w){let{publicKey:S,publicKeyUncompressed:I}=G;try{let m=j.length;if(w===!0&&m!==S)return!1;if(w===!1&&m!==I)return!1;return!!$.fromBytes(j)}catch(m){return!1}}function U(j=Q(G.seed)){return y0(g$(j,G.seed,"seed"),q.ORDER)}function Z(j,w=!0){return $.BASE.multiply(m$(q,j)).toBytes(w)}function B(j){let w=U(j);return{secretKey:w,publicKey:Z(w)}}function M(j){if(typeof j==="bigint")return!1;if(j instanceof $)return!0;let{secretKey:w,publicKey:S,publicKeyUncompressed:I}=G;if(q.allowedLengths||w===S)return;let m=o("key",j).length;return m===S||m===I}function H(j,w,S=!0){if(M(j)===!0)throw Error("first arg must be private key");if(M(w)===!1)throw Error("second arg must be public key");let I=m$(q,j);return $.fromHex(w).multiply(I).toBytes(S)}return Object.freeze({getPublicKey:Z,getSharedSecret:H,keygen:B,Point:$,utils:{isValidSecretKey:Y,isValidPublicKey:X,randomSecretKey:U,isValidPrivateKey:Y,randomPrivateKey:U,normPrivateKeyToScalar:(j)=>m$(q,j),precompute(j=8,w=$.BASE){return w.precompute(j,!1)}},lengths:G})}function LJ($,J,q={}){P0(J),H0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let Q=q.randomBytes||o$,G=q.hmac||((W,...O)=>Y8(J,W,W$(...O))),{Fp:Y,Fn:X}=$,{ORDER:U,BITS:Z}=X,{keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j}=wJ($,q),w={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},S="compact";function I(W){let O=U>>G0;return W>O}function m(W,O){if(!X.isValidNot0(O))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return O}function $$(W,O){A8(O);let N=j.signature,T=O==="compact"?N:O==="recovered"?N+1:void 0;return g$(W,T,`${O} signature`)}class u{constructor(W,O,N){if(this.r=m("r",W),this.s=m("s",O),N!=null)this.recovery=N;Object.freeze(this)}static fromBytes(W,O=S){$$(W,O);let N;if(O==="der"){let{r:x,s:R}=_$.toSig(g$(W));return new u(x,R)}if(O==="recovered")N=W[0],O="compact",W=W.subarray(1);let T=X.BYTES,K=W.subarray(0,T),D=W.subarray(T,T*2);return new u(X.fromBytes(K),X.fromBytes(D),N)}static fromHex(W,O){return this.fromBytes(p$(W),O)}addRecoveryBit(W){return new u(this.r,this.s,W)}recoverPublicKey(W){let O=Y.ORDER,{r:N,s:T,recovery:K}=this;if(K==null||![0,1,2,3].includes(K))throw Error("recovery id invalid");if(U*WQ<O&&K>1)throw Error("recovery id is ambiguous for h>1 curve");let x=K===2||K===3?N+U:N;if(!Y.isValid(x))throw Error("recovery id 2 or 3 invalid");let R=Y.toBytes(x),L=$.fromBytes(W$(DQ((K&1)===0),R)),v=X.inv(x),f=J$(o("msgHash",W)),h=X.create(-f*v),E=X.create(T*v),y=$.BASE.multiplyUnsafe(h).add(L.multiplyUnsafe(E));if(y.is0())throw Error("point at infinify");return y.assertValidity(),y}hasHighS(){return I(this.s)}toBytes(W=S){if(A8(W),W==="der")return p$(_$.hexFromSig(this));let O=X.toBytes(this.r),N=X.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return W$(Uint8Array.of(this.recovery),O,N)}return W$(O,N)}toHex(W){return I$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return u.fromBytes(o("sig",W),"compact")}static fromDER(W){return u.fromBytes(o("sig",W),"der")}normalizeS(){return this.hasHighS()?new u(this.r,X.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return I$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return I$(this.toBytes("compact"))}}let n=q.bits2int||function(O){if(O.length>8192)throw Error("input is too large");let N=v$(O),T=O.length*8-Z;return T>0?N>>BigInt(T):N},J$=q.bits2int_modN||function(O){return X.create(n(O))},X$=u$(Z);function M$(W){return l8("num < 2^"+Z,W,b$,X$),X.toBytes(W)}function q$(W,O){return g$(W,void 0,"message"),O?g$(J(W),void 0,"prehashed message"):W}function _(W,O,N){if(["recovered","canonical"].some((E)=>(E in N)))throw Error("sign() legacy options not supported");let{lowS:T,prehash:K,extraEntropy:D}=H8(N,w);W=q$(W,K);let x=J$(W),R=m$(X,O),L=[M$(R),M$(x)];if(D!=null&&D!==!1){let E=D===!0?Q(j.secretKey):D;L.push(o("extraEntropy",E))}let v=W$(...L),f=x;function h(E){let y=n(E);if(!X.isValidNot0(y))return;let F=X.inv(y),b=$.BASE.multiply(y).toAffine(),l=X.create(b.x);if(l===b$)return;let s=X.create(F*X.create(f+l*R));if(s===b$)return;let p=(b.x===l?0:2)|Number(b.y&G0),Z$=s;if(T&&I(s))Z$=X.neg(s),p^=1;return new u(l,Z$,p)}return{seed:v,k2sig:h}}function z$(W,O,N={}){W=o("message",W);let{seed:T,k2sig:K}=_(W,O,N);return p8(J.outputLen,X.BYTES,G)(T,K)}function a(W){let O=void 0,N=typeof W==="string"||d$(W),T=!N&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!N&&!T)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(T)O=new u(W.r,W.s);else if(N){try{O=u.fromBytes(o("sig",W),"der")}catch(K){if(!(K instanceof _$.Err))throw K}if(!O)try{O=u.fromBytes(o("sig",W),"compact")}catch(K){return!1}}if(!O)return!1;return O}function A(W,O,N,T={}){let{lowS:K,prehash:D,format:x}=H8(T,w);if(N=o("publicKey",N),O=q$(o("message",O),D),"strict"in T)throw Error("options.strict was renamed to lowS");let R=x===void 0?a(W):u.fromBytes(o("sig",W),x);if(R===!1)return!1;try{let L=$.fromBytes(N);if(K&&R.hasHighS())return!1;let{r:v,s:f}=R,h=J$(O),E=X.inv(f),y=X.create(h*E),F=X.create(v*E),b=$.BASE.multiplyUnsafe(y).add(L.multiplyUnsafe(F));if(b.is0())return!1;return X.create(b.x)===v}catch(L){return!1}}function C(W,O,N={}){let{prehash:T}=H8(N,w);return O=q$(O,T),u.fromBytes(W,"recovered").recoverPublicKey(O).toBytes()}return Object.freeze({keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j,Point:$,sign:z$,verify:A,recoverPublicKey:C,Signature:u,hash:J})}function kJ($){let J={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,Q=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((X)=>Math.ceil(X/2)))):void 0,G=F$(J.n,{BITS:$.nBitLength,allowedLengths:Q,modFromBytes:$.wrapPrivateKey}),Y={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:J,curveOpts:Y}}function CJ($){let{CURVE:J,curveOpts:q}=kJ($),Q={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:J,curveOpts:q,hash:$.hash,ecdsaOpts:Q}}function SJ($,J){let q=J.Point;return Object.assign({},J,{ProjectivePoint:q,CURVE:Object.assign({},$,f0(q.Fn.ORDER,q.Fn.BITS))})}function VQ($){let{CURVE:J,curveOpts:q,hash:Q,ecdsaOpts:G}=CJ($),Y=TJ(J,q),X=LJ(Y,Q,G);return SJ($,X)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function NQ($,J){let q=(Q)=>VQ({...$,hash:Q});return{...q(J),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Y0={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},PJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},IJ=BigInt(0),BQ=BigInt(1),R8=BigInt(2);function EJ($){let J=Y0.p,q=BigInt(3),Q=BigInt(6),G=BigInt(11),Y=BigInt(22),X=BigInt(23),U=BigInt(44),Z=BigInt(88),B=$*$*$%J,M=B*B*$%J,H=B$(M,q,J)*M%J,z=B$(H,q,J)*M%J,j=B$(z,R8,J)*B%J,w=B$(j,G,J)*j%J,S=B$(w,Y,J)*w%J,I=B$(S,U,J)*S%J,m=B$(I,Z,J)*I%J,$$=B$(m,U,J)*S%J,u=B$($$,q,J)*M%J,n=B$(u,X,J)*w%J,J$=B$(n,Q,J)*B%J,X$=B$(J$,R8,J);if(!F0.eql(F0.sqr(X$),$))throw Error("Cannot find square root");return X$}var F0=F$(Y0.p,{sqrt:EJ}),AQ=NQ({...Y0,Fp:F0,lowS:!0,endo:PJ},v0),OQ={};function m0($,...J){let q=OQ[$];if(q===void 0){let Q=v0(E0($));q=W$(Q,Q),OQ[$]=q}return v0(W$(q,...J))}var T8=($)=>$.toBytes(!0).slice(1),X0=(()=>AQ.Point)(),w8=($)=>$%R8===IJ;function x8($){let{Fn:J,BASE:q}=X0,Q=m$(J,$),G=q.multiply(Q);return{scalar:w8(G.y)?Q:J.neg(Q),bytes:T8(G)}}function RQ($){let J=F0;if(!J.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=J.create($*$),Q=J.create(q*$+BigInt(7)),G=J.sqrt(Q);if(!w8(G))G=J.neg(G);let Y=X0.fromAffine({x:$,y:G});return Y.assertValidity(),Y}var R0=v$;function xQ(...$){return X0.Fn.create(R0(m0("BIP0340/challenge",...$)))}function HQ($){return x8($).bytes}function vJ($,J,q=o$(32)){let{Fn:Q}=X0,G=o("message",$),{bytes:Y,scalar:X}=x8(J),U=o("auxRand",q,32),Z=Q.toBytes(X^R0(m0("BIP0340/aux",U))),B=m0("BIP0340/nonce",Z,Y,G),{bytes:M,scalar:H}=x8(B),z=xQ(M,Y,G),j=new Uint8Array(64);if(j.set(M,0),j.set(Q.toBytes(Q.create(H+z*X)),32),!TQ(j,G,Y))throw Error("sign: Invalid signature produced");return j}function TQ($,J,q){let{Fn:Q,BASE:G}=X0,Y=o("signature",$,64),X=o("message",J),U=o("publicKey",q,32);try{let Z=RQ(R0(U)),B=R0(Y.subarray(0,32));if(!O0(B,BQ,Y0.p))return!1;let M=R0(Y.subarray(32,64));if(!O0(M,BQ,Y0.n))return!1;let H=xQ(Q.toBytes(B),T8(Z),X),z=G.multiplyUnsafe(M).add(Z.multiplyUnsafe(Q.neg(H))),{x:j,y:w}=z.toAffine();if(z.is0()||!w8(w)||j!==B)return!1;return!0}catch(Z){return!1}}var h0=(()=>{let q=(G=o$(48))=>{return y0(G,Y0.n)};AQ.utils.randomSecretKey;function Q(G){let Y=q(G);return{secretKey:Y,publicKey:HQ(Y)}}return{keygen:Q,getPublicKey:HQ,sign:vJ,verify:TQ,Point:X0,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:m0,lift_x:RQ,pointToBytes:T8,numberToBytesBE:J0,bytesToNumberBE:v$,mod:N$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var _J=new TextEncoder,bJ=new TextDecoder,L$=($)=>_J.encode($),a$=($)=>bJ.decode($),c0=($)=>Array.from($,(J)=>J.toString(16).padStart(2,"0")).join(""),O$=JSON.stringify,n$=JSON.parse,d0=($,J=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,Q)=>q+Q.charCodeAt(0),0)%J;var L8="AES-GCM",fJ={},wQ="$",LQ=",",yJ=($)=>{let J=new Uint8Array($),q=32768,Q="";for(let G=0;G<J.length;G+=32768)Q+=String.fromCharCode(...J.subarray(G,G+32768));return btoa(Q)},gJ=($)=>Uint8Array.from(atob($),(J)=>J.charCodeAt(0)).buffer,x0=($)=>fJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((J)=>{let q=new Uint8Array(J),Q="";for(let G of q)Q+=G.toString(36);return Q}),kQ=async($,J,q)=>{let Q=await crypto.subtle.digest("SHA-256",L$(`${$}:${J}:${q}`));return crypto.subtle.importKey("raw",Q,{name:L8},!1,["encrypt","decrypt"])},CQ=async($,J)=>{let q=crypto.getRandomValues(new Uint8Array(12)),Q=await $,G=await crypto.subtle.encrypt({name:L8,iv:q},Q,L$(J));return`${q.join(LQ)}${wQ}${yJ(G)}`},SQ=async($,J)=>{let[q,Q]=J.split(wQ);if(!q||!Q)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(LQ),Number),Y=await $,X=await crypto.subtle.decrypt({name:L8,iv:G},Y,gJ(Q));return a$(X)};var D$="GenosRTC",Z0=($,J)=>Array.from({length:$},J);var z0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(J)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[J%62]).join(""),c=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=z0(20):z0(20),f$=Promise.all.bind(Promise),PQ=typeof window<"u",{entries:IQ,fromEntries:l0,keys:t9}=Object,EQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),T0=(...$)=>$.join("@"),vQ=($,J)=>{let q=[...$],Q=q.length,G=()=>{let Y=Math.sin(J++)*1e4;return Y-Math.floor(Y)};while(Q){let Y=Math.floor(G()*Q--);[q[Q],q[Y]]=[q[Y],q[Q]]}return q};var uJ=5000,_Q="icegatheringstatechange",bQ="offer",FJ="answer",mJ=[...Z0(3,($,J)=>`stun:stun${J||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),k8=($,{rtcConfig:J,rtcPolyfill:q,turnConfig:Q})=>{let G=new(q||RTCPeerConnection)({iceServers:[...mJ,...Q||[]],...J}),Y={},X=!1,U=!1,Z,B=(z)=>Object.assign(z,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(j)=>Y.data?.(j.data),onopen:()=>Y.connect?.(),onclose:()=>Y.close?.(),onerror:(j)=>!j?.error?.message?.includes("User-Initiated Abort")&&Y.error?.(j)}),M=()=>Promise.race([new Promise((z)=>{let j=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(_Q,j),z()};G.addEventListener(_Q,j),j()}),new Promise((z)=>setTimeout(z,uJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?B(Z=G.createDataChannel("data")):G.ondatachannel=({channel:z})=>B(Z=z),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),Y.signal?.(await M())}catch(z){Y.error?.(z)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))Y.close?.()},G.ontrack=(z)=>{Y.track?.(z.track,z.streams[0]),Y.stream?.(z.streams[0])},G.onremovestream=(z)=>Y.stream?.(z.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let H=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(z){if(Z?.readyState==="open"&&!z.sdp?.includes("a=rtpmap"))return;try{if(z.type===bQ){if(X||G.signalingState!=="stable"&&!U){if($)return;await f$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(z)])}else await G.setRemoteDescription(z);await G.setLocalDescription();let j=await M();return Y.signal?.(j),j}if(z.type===FJ){U=!0;try{await G.setRemoteDescription(z)}finally{U=!1}}}catch(j){Y.error?.(j)}},sendData:(z)=>{if(Z?.readyState==="open")Z.send(z)},destroy:()=>{Z?.close(),G.close(),X=U=!1},setHandlers:(z)=>Object.assign(Y,z),offerPromise:$?new Promise((z)=>Y.signal=(j)=>j.type===bQ&&z(j)):Promise.resolve(),addStream:(z)=>z.getTracks().forEach((j)=>G.addTrack(j,z)),removeStream:(z)=>H().filter((j)=>z.getTracks().includes(j.track)).forEach((j)=>G.removeTrack(j)),addTrack:(z,j)=>G.addTrack(z,j),removeTrack:(z)=>{let j=H().find((w)=>w.track===z);if(j)G.removeTrack(j)},replaceTrack:(z,j)=>H().find((w)=>w.track===z)?.replaceTrack(j)}};var hJ=Object.getPrototypeOf(Uint8Array),o0=12,yQ=0,i0=yQ+o0,r0=i0+1,L0=r0+1,k0=L0+1,w0=16384-k0,p0=255,C8="bufferedamountlow",U0=($)=>`@_${$}`,S8=100,cJ=3,dJ=200,lJ=512,fQ=($,J)=>new Response(new Blob([$]).stream().pipeThrough(new J("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),gQ=($,J,q,Q)=>{let G=new Map,Y=new Map,X=new Map,U={},Z={},B={},M={},H=new Map,z=Promise.resolve(),j=(K,D)=>{if(!H.has(K))H.set(K,new Set);H.get(K).add(D)},w=(K,D)=>H.get(K)?.delete(D),S=(K,...D)=>H.get(K)?.forEach((x)=>x(...D)),I=(K,D)=>{let x=K?Array.isArray(K)?K:[K]:G.keys();return Array.from(x,(R)=>{let L=G.get(R);if(!L)return console.warn(`${D$}: no peer with id ${R}`),null;return D(R,L)}).filter(Boolean)},m=(K)=>{if(!G.has(K))return;G.delete(K),delete U[K],delete Z[K],delete B[K],delete M[K],S("peer:leave",K),J(K)},$$=(K)=>new Promise((D,x)=>{let R=setTimeout(()=>{K.removeEventListener(C8,L),x(Error(`${D$}: bufferLow timeout`))},5000);function L(){clearTimeout(R),K.removeEventListener(C8,L),D()}K.addEventListener(C8,L)}),u=(K)=>{if(X.has(K))return X.get(K);if(!K)throw T$("action type is required");let D=L$(K);if(D.byteLength>o0)throw T$(`❌ "${K}" exceeds ${o0} bytes. Use a shorter name.`);let x=new Uint8Array(o0).map((y,F)=>D[F]||0),R=0,L=new Map([["message",new Set],["progress",new Set]]),v=(y,F)=>L.get(y)?.add(F),f=(y,F)=>L.get(y)?.delete(F),h=async(y,F,b,l)=>{if(b&&typeof b!=="object")throw T$("meta must be object");if(y===void 0)throw T$("data cannot be undefined");let s=y instanceof Blob,p=s||y instanceof ArrayBuffer||y instanceof hJ,Z$=typeof y!=="string";if(b&&!p)throw T$("meta only allowed with binary");let V$=p?new Uint8Array(s?await y.arrayBuffer():y):L$(Z$?O$(y):y),t=0;if(!p&&V$.byteLength>=lJ){let H$=await fQ(V$,CompressionStream);if(H$.byteLength<V$.byteLength)V$=H$,t=1}let U$=b?L$(O$(b)):null,k$=Math.ceil(V$.byteLength/w0)+(b?1:0)||1;if(k$>S8)throw T$(`Message too large, exceeds max chunks ${S8}`);let s$=Z0(k$,(H$,G$)=>{let C$=G$===k$-1,S$=b&&G$===0,h$=S$?U$:V$.subarray(b?(G$-1)*w0:G$*w0,b?G$*w0:(G$+1)*w0),w$=new Uint8Array(k0+h$.byteLength);return w$.set(x),w$.set([R],i0),w$.set([C$|S$<<1|p<<2|Z$<<3|t<<4],r0),w$.set([Math.round((G$+1)/k$*p0)],L0),w$.set(h$,k0),w$});return R=R+1&p0,f$(I(F,async(H$,G$)=>{let{channel:C$}=G$;for(let S$=0;S$<k$;S$++){let h$=0;while(C$.bufferedAmount>C$.bufferedAmountLowThreshold){if(h$++>cJ)throw T$(`${D$}: send buffer full, max retries reached for peer ${H$}`);try{await $$(C$)}catch(w$){console.warn(w$.message),await new Promise((t$)=>setTimeout(t$,dJ))}}if(!G.has(H$))break;G$.sendData(s$[S$]),l?.(s$[S$][L0]/p0,H$,b)}}))};Y.set(K,{listeners:L,send:h});let E={send:h,on:v,off:f};return X.set(K,E),E},n=(K,D)=>{try{let x=new Uint8Array(D),R=a$(x.subarray(yQ,i0)).replace(/\x00/g,"");if(!Y.has(R))return console.warn(`${D$}: unregistered type (${R})`);let[L]=x.subarray(i0,r0),[v]=x.subarray(r0,L0),[f]=x.subarray(L0,k0),h=x.subarray(k0),E=Boolean(v&1),y=Boolean(v&2),F=Boolean(v&4),b=Boolean(v&8),l=Boolean(v&16),s=Y.get(R),p=(U[K]||={})[R]||={};if(p[L]?.chunks?.length>S8){console.warn(`${D$}: peer ${K} sent too many chunks for nonce ${L}, ignoring.`);return}let Z$=p[L]||={chunks:[]};if(y)try{Z$.meta=n$(a$(h))}catch{console.warn(`${D$}: failed to parse meta from peer ${K} for type ${R}`);return}else Z$.chunks.push(h);if(s.listeners.get("progress").forEach((t)=>{try{t(f/p0,K,Z$.meta)}catch(U$){console.error(U$)}}),!E)return;let V$=new Uint8Array(Z$.chunks.reduce((t,U$)=>t+U$.byteLength,0));Z$.chunks.reduce((t,U$)=>(V$.set(U$,t),t+U$.byteLength),0),delete p[L],z=z.then(async()=>{let t=l?await fQ(V$,DecompressionStream):V$,U$;if(F)U$=t;else if(b)try{U$=n$(a$(t))}catch{console.warn(`${D$}: failed to parse JSON message data from peer ${K} for type ${R}`);return}else U$=a$(t);s.listeners.get("message").forEach((k$)=>{try{k$(U$,K,Z$.meta)}catch(s$){console.error(s$)}})}).catch((t)=>console.error(`${D$}: dispatch error from peer ${K}:`,t))}catch(x){console.error(`${D$}: error handling data from peer ${K}:`,x)}},J$=async()=>{try{await N(""),await new Promise((K)=>setTimeout(K,99))}catch(K){console.warn(`${D$}: error sending leave`,K)}for(let[K,D]of G){try{D.destroy()}catch{}G.delete(K)}q()},{send:X$,on:M$}=u(U0("ping")),{send:q$,on:_}=u(U0("pong")),{send:z$,on:a}=u(U0("signal")),{send:A,on:C}=u(U0("stream")),{send:W,on:O}=u(U0("track")),{send:N,on:T}=u(U0("leave"));if($((K,D)=>{let x=G.get(D);if(x===K)return;if(x){let R=()=>{};x.setHandlers({data:R,stream:R,track:R,signal:R,close:R,error:R})}G.set(D,K),K.setHandlers({data:(R)=>n(D,R),stream:(R)=>{S("stream:add",R,D,B[D]),delete B[D]},track:(R,L)=>{S("track:add",R,L,D,M[D]),delete M[D]},signal:(R)=>z$(R,D),close:()=>m(D),error:(R)=>{console.error(`${D$}: peer error for ${D}`,R),m(D)}}),S("peer:join",D,Q?.(D))}),M$("message",(K,D)=>q$("",D)),_("message",(K,D)=>{Z[D]?.(),delete Z[D]}),a("message",(K,D)=>G.get(D)?.signal(K)),C("message",(K,D)=>B[D]=K),O("message",(K,D)=>M[D]=K),T("message",(K,D)=>m(D)),PQ)addEventListener("beforeunload",J$);return{on:j,off:w,channel:u,leave:J$,ping:async(K)=>{if(!K)throw T$("ping() requires target peer ID");let D=Date.now();return X$("",K),await new Promise((x)=>Z[K]=x),Date.now()-D},getPeers:()=>l0(Array.from(G,([K,D])=>[K,D.connection])),addStream:(K,D,x)=>I(D,async(R,L)=>{if(x)await A(x,R);L.addStream(K)}),removeStream:(K,D)=>I(D,(x,R)=>R.removeStream(K)),addTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.addTrack(K,D)}),removeTrack:(K,D)=>I(D,(x,R)=>R.removeTrack(K)),replaceTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.replaceTrack(K,D)})}};var pJ=5,oJ=10,iJ=2500,a0=57333,uQ=({init:$,subscribe:J,announce:q})=>{let Q={},G=!1,Y,X;return(U,Z,B)=>{let{appId:M}=U;if(Q[M]?.[Z])return Q[M][Z];if(!U||!Z||!M&&!U.firebaseApp)throw T$(!U?"config required":!Z?"roomId required":"appId missing");let H=EQ;if(!G){let N=$(U);X=Z0(pJ,()=>{try{return k8(!0,U)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{X=X.filter((K)=>{let D=Date.now()-K.created<a0;if(!D)K.destroy();return D})},a0);Q.offerCleanupTimer||=T,G=!0}let z={},j={},w=new Map,S=new Map,I={},m=T0(D$,M,Z),$$=x0(m),u=x0(T0(m,c)),n=kQ(U.password||"",M,Z),J$=(N)=>async(T)=>({type:T.type,sdp:await N(n,T.sdp)}),X$=J$(SQ),M$=J$(CQ),q$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(j).includes(N))N.destroy()},a0),N},_=(N)=>{try{return q$(k8(N,U))}catch{return null}},z$=(N,T)=>{if(j[T]===N)return;j[T]?.destroy(),j[T]=N,H(N,T),z[T]?.forEach((K)=>K!==N&&K.destroy()),delete z[T]},a=(N,T)=>{if(j[T]===N)delete j[T]},A=(N)=>async(T,K,D)=>{let[x,R]=await f$([$$,u]);if(T!==x&&T!==R)return;let{peerId:L,offer:v,answer:f,type:h}=typeof K==="string"?n$(K):K;if(L&&L!==c)S.set(L,Date.now());if(h&&L)I[L]=h;if(L===c||j[L])return;if(U.admit&&!U.admit(L))return;if(v){if(z[L]?.[N]&&c>L)return;let E=_(!1);if(!E)return;E.setHandlers({connect:()=>z$(E,L),close:()=>a(E,L)});try{let y=await X$(v);if(E.isDead)return;let[F,b]=await f$([x0(T0(m,L)),E.signal(y).then(M$)]);D(F,O$({peerId:c,answer:b,...U.type&&{type:U.type}}))}catch{B?.({error:"decryption failed (offer)",appId:M,peerId:L,roomId:Z})}}else if(f){let E=z[L]?.[N];if(!E||E.isDead)return;E.setHandlers({connect:()=>z$(E,L),close:()=>a(E,L)});try{E.signal(await X$(f))}catch{B?.({error:"decryption failed (answer)",appId:M,peerId:L,roomId:Z})}}else{let E=z[L]||=[];if(E.forEach((l,s)=>{if(l&&(l.isDead||Date.now()-(l.dialedAt??l.created)>a0)){if(l.isDead)w.set(L,Date.now()+30000);l.destroy(),delete E[s]}}),E[N]||E.filter(Boolean).length>=2||w.get(L)>Date.now())return;if(Object.values(z).reduce((l,s)=>l+s.filter((p)=>p&&!p.isDead).length,0)>=oJ)return;let F=X.pop(),b=F?q$(F):_(!0);if(!b){w.set(L,Date.now()+30000);return}b.dialedAt=Date.now(),E[N]=b;try{let[l,{offer:s}]=await f$([x0(T0(m,L)),b.offerPromise.then(M$).then((p)=>({offer:p}))]);b.setHandlers({connect:()=>z$(b,L),close:()=>a(b,L)}),D(l,O$({peerId:c,offer:s,peer:b,...U.type&&{type:U.type}}))}catch{if(E[N]===b)delete E[N];b.destroy()}}},C=[],W=[];Y.forEach(async(N,T)=>{let K=await N;if(!K)return;let[D,x]=await f$([$$,u]);W[T]=J(K,D,x,A(T));let R=async()=>{let L=await q(K,D,x);C[T]=setTimeout(R,typeof L==="number"?L:iJ)};R()}),Q[M]||={};let O=gQ((N)=>H=N,(N)=>delete j[N],()=>O.onCleanup?.(),(N)=>I[N]);return O.onCleanup=()=>{if(delete Q[M][Z],C.forEach(clearTimeout),W.forEach((N)=>N?.()),Object.keys(Q).length===0)clearInterval(Q.offerCleanupTimer),delete Q.offerCleanupTimer},O._census=()=>{for(let T of Object.keys(j))S.set(T,Date.now());let N=Date.now()-120000;for(let[T,K]of S)if(K<N)S.delete(T);return[...S.keys()]},Q[M][Z]=O}};var FQ=3333,rJ=30000,C0={},mQ={},hQ=($,J)=>{let q={},Q=null;q.reopenHandlers=new Set;let G=()=>{if(Q)clearTimeout(Q),Q=null;if(q.socket)q.socket.onclose=null,q.socket.close();let Y=new WebSocket($);Y.onclose=()=>{C0[$]??=FQ,Q=setTimeout(G,C0[$]),C0[$]=Math.min(C0[$]*2,rJ)},Y.onmessage=(X)=>J(X.data),q.socket=Y,q.url=Y.url,q.ready=new Promise((X)=>{Y.onopen=()=>{C0[$]=FQ,X(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(X)=>{if(Y.readyState===1)Y.send(X)}};return q.forceReconnect=G,G(),mQ[$]=q,q};if(typeof window<"u"){let $=(J)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(mQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(J||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var cQ=($)=>()=>l0(IQ($).map(([J,q])=>[J,q.socket])),dQ=($,J,q,Q)=>($.relayUrls??(Q?vQ(J,d0($.appId)):J)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var lQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var K0={},nJ=10,rQ="x",aQ="EVENT",sJ=/pow:\s*(\d+)\s*bits needed\.?/i,P8=new Set,nQ=h0.utils.randomSecretKey(),tJ=c0(h0.getPublicKey(nQ)),I8={},S0={},eJ={},sQ=()=>Math.floor(Date.now()/1000),tQ=($)=>eJ[$]??=d0($,1e4)+20000,n0=($)=>$.replace(/\/$/,""),$9=($,J)=>{let[q,Q,G,Y]=n$(J);if(q===aQ)return S0[Q]?.(I8[Q],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?Q:Y).match(sJ)?.[1]??0)>0){let U=n0($);P8.add(U),K0[U]?.close?.(),delete K0[U]}}},Q9=($)=>{let J=n0($);if(K0[J])return K0[J];let q=hQ(J,(Q)=>$9(J,Q));return K0[J]=q},pQ=async($,J)=>{let q={kind:tQ($),content:J,pubkey:tJ,created_at:sQ(),tags:[[rQ,$]]},Q=L$(O$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",Q)),Y=h0.sign(G,nQ);return O$([aQ,{...q,id:c0(G),sig:c0(Y)}])},oQ=($,J)=>{return I8[$]=J,O$(["REQ",$,{kinds:[tQ(J)],since:sQ(),["#"+rQ]:[J]}])},iQ=($)=>{return delete I8[$],O$(["CLOSE",$])},s0=uQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??lQ;return dQ($,q,nJ,!1).map(Q9).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,J,q,Q)=>{let G=z0(64),Y=z0(64);S0[G]=S0[Y]=(U,Z)=>Q(U,Z,async(B,M)=>{if(P8.has(n0($.url)))return;$.send(await pQ(B,M))});let X=()=>{$.send(oQ(G,J)),$.send(oQ(Y,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(iQ(G)),$.send(iQ(Y)),delete S0[G],delete S0[Y]}},announce:async($,J)=>{if(P8.has(n0($.url)))return;$.send(await pQ(J,O$({peerId:c})))}}),eQ=cQ(K0);var J9={cellSize:"auto",bridgesPerEdge:2,maxCellSize:50,targetCells:100,debug:!1},$J=5000,q9=3000,G9=30000,Y9=2000,$8=($)=>{let J=String($||"").match(/cell-(\d+)/);return J?Number(J[1]):null},X9=($,J)=>{let q=$8($);if(q==null)return[];let Q=[];for(let G=1;G<J;G*=2){if(q-G>=0)Q.push(`cell-${q-G}`);if(q+G<J)Q.push(`cell-${q+G}`)}return Q},t0=($)=>`c${($8($)||0).toString(36)}`,z9=($,J,q)=>{if($<=10)return Math.max(2,$);let G=10,Y=Math.ceil($/J);return Math.max(G,Math.min(q,Y))},Z9=($,J)=>{return Math.max(1,Math.ceil($/J))},QJ=($)=>{let J=0;for(let q=0;q<$.length;q++)J=Math.imul(J^$.charCodeAt(q),2654435761);return J>>>0},E8=($,J)=>{let q=0,Q=-1;for(let G=0;G<J;G++){let Y=QJ(`${$}:${G}`);if(Y>Q)Q=Y,q=G}return q};class e0{constructor($){this.peerId=$,this.joinedAt=Date.now(),this.lastSeen=Date.now(),this.rttSamples=[],this.stability=1,this.reconnects=0,this.isResponsive=!0,this.connectedCells=new Set}get uptime(){return Date.now()-this.joinedAt}get avgRtt(){if(this.rttSamples.length===0)return 1/0;return Math.round(this.rttSamples.reduce(($,J)=>$+J,0)/this.rttSamples.length)}get healthScore(){let $=this.avgRtt===1/0?0.5:Math.max(0,100-this.avgRtt)/100,J=Math.min(1,this.uptime/60000),q=this.stability,Q=this.isResponsive?1:0.3;return $*0.25+J*0.25+q*0.3+Q*0.2}get isStale(){return Date.now()-this.lastSeen>G9}addRttSample($){if(this.rttSamples.push($),this.rttSamples.length>10)this.rttSamples.shift();this.lastSeen=Date.now(),this.isResponsive=!0}markReconnect(){this.reconnects++,this.stability=Math.max(0,1-this.reconnects*0.1)}markUnresponsive(){this.isResponsive=!1}markSeen(){this.lastSeen=Date.now()}addConnectedCell($){if($)this.connectedCells.add($)}}function U9($,J={},q={}){let Q={...J9,...J},G=!!Q.debug,Y=(...V)=>G&&console.debug("[cells]",...V),X=Math.max(0,Q.bridgesPerEdge|0),U=Math.max(5,Q.maxCellSize|0),Z=Math.max(10,Q.targetCells|0),B=Q.cellSize==="auto",M=B?2:Math.max(1,Q.cellSize|0),H={cellId:null,bridges:[],isBridge:!1},z=null,j=null,w=null,S=new Map,I=new Map,m=new Set,$$=new Map,u=new Set,n=new Set,J$=0,X$=[],M$=new Map,q$=new Set,_=new Map,z$=new Map,a=1,A=0,C=1,W=0,O=()=>{Z$();let V=Z9(p().length,M);if(V!==C)C=V,W=Date.now();let k=Date.now()-W;if(V>a&&k>4000)a=V;else if(V<a&&k>30000)a=V;return a},N=()=>Math.min(150,Math.ceil(Math.log2(O()+1))*2+3),T=(V)=>X9(V,O()),K=$.on?.bind($),D=$.off?.bind($);if(K)$.on=(V,k)=>String(V).startsWith("mesh:")?L(V,k):K(V,k);if(D)$.off=(V,k)=>String(V).startsWith("mesh:")?$$.get(V)?.delete(k):D(V,k);let x=(V)=>(m.add(V),()=>m.delete(V)),R=(V,k,P)=>{if(n.has(P))return;if(n.add(P),n.size>$J){let g=n.values().next().value;n.delete(g)}for(let g of m)try{g(V,k)}catch(d){Y("Error in deliver handler:",d)}},L=(V,k)=>{if(!$$.has(V))$$.set(V,new Set);return $$.get(V).add(k),()=>$$.get(V)?.delete(k)},v=(V,...k)=>{let P=$$.get(V);if(P)for(let g of P)try{g(...k)}catch{}},f=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},h=()=>`${c}:${Date.now().toString(36)}:${(J$++&65535).toString(36)}`,E=()=>{if(u.size>$J)u.delete(u.values().next().value)},y=(V,k,P=[])=>{if(!V||!k)return;if(S.set(V,{cell:k,isBridge:P.length>0,bridges:[...P]}),!I.has(V))I.set(V,new e0(V));let g=I.get(V);if(g.markSeen(),g.addConnectedCell(k),z$.set(k,{lastSeen:Date.now(),peerId:V}),P.length>0)for(let d of T(k))g.addConnectedCell(d)},F=(V)=>I.get(V),b=(V,k)=>{let P=I.get(V);if(P)P.addRttSample(k)},l=(V)=>{let k=s$(V);if(k.length===0)return null;let P=0,g=0;for(let e of k){let j$=I.get(e);if(j$&&!j$.isStale){if(P+=j$.healthScore,j$.isResponsive)g++}}let d=k.filter((e)=>{let j$=I.get(e);return j$&&!j$.isStale});return{cellId:V,memberCount:d.length,avgHealth:d.length>0?P/d.length:0,responsiveRatio:d.length>0?g/d.length:0}},s=()=>{let V=l(H.cellId);v("mesh:health",{...H,health:V})},p=()=>[...new Set([...$._census(),c])].sort(),Z$=()=>{if(!B)return;let V=p().length,k=z9(V,Z,U);if(k!==M)Y("cellSize changed:",M,"->",k),M=k},V$=(V,k)=>k.filter((P)=>E8(P,O())===V),t=(V,k)=>{if(X===0)return[];let P=$8(V),g=$8(k);if(P==null||g==null)return[];let d=p(),e=V$(P,d),j$=V$(g,d),Q$=Math.min(P,g),e$=Math.max(P,g),j0=(r)=>QJ(`${r}@${Q$}~${e$}`),A$=[...new Set([...e,...j$])].sort((r,J8)=>j0(J8)-j0(r));if(!A$.length)return[];let $0=new Set(e),W0=[],i=(r)=>r&&!W0.includes(r)&&W0.push(r);i(A$.find((r)=>$0.has(r))),i(A$.find((r)=>!$0.has(r)));for(let r of A$){if(W0.length>=Math.max(X,2))break;i(r)}return W0},U$=(V,k)=>{if(X===0)return[];let P=T(k),g=[];for(let d of P)if(t(k,d).includes(V))g.push(d);return g},k$=()=>{Z$();let V=p(),k=E8(c,O()),P=O(),g=`cell-${k}`,d=U$(c,g),e=d.length>0;return Y("computeState",{self:c,myCell:g,isBridge:e,bridgeEdges:d,cellSize:M,rosterSize:V.length,totalCells:P,dynamicTTL:N()}),{cellId:g,isBridge:e,bridges:d,cellSize:M,dynamicTTL:N(),totalCells:P}},s$=(V)=>{let k=[],P=new Set(Object.keys($.getPeers?.()||{}));for(let[g,d]of S)if(d.cell===V){let e=I.get(g);if(P.has(g)&&(!e||!e.isStale))k.push(g)}return k.sort(),k},H$=()=>{if(!z)return;Q8=_8(),v8=Date.now();let V={t:"state",id:h(),ttl:N(),data:{id:c,cell:H.cellId,bridges:H.bridges,health:I.get(c)?.healthScore||0.5,timestamp:Date.now()},origin:c,originCell:H.cellId},k=JSON.stringify(V);z.send(k),G$(j,k)},G$=(V,k)=>{let P=f(k);if(!P?.id||!P?.t)return;let g=u.has(P.id);if(!g)u.add(P.id),E();let{t:d,id:e,ttl:j$,data:Q$,origin:e$,originCell:j0}=P,A$=H.cellId;if(d==="state"&&Q$)y(Q$.id,Q$.cell,Q$.bridges),v("mesh:peer-state",Q$);if(d==="ping"&&Q$?.pingId&&e$!==c){let i={t:"pong",id:h(),ttl:N(),data:{pingId:Q$.pingId,receivedAt:Date.now()},origin:c,originCell:A$};z?.send(JSON.stringify(i))}if(d==="pong"&&Q$?.pingId){let i=_.get(Q$.pingId);if(i){clearTimeout(i.timeout);let r=Date.now()-i.start;b(i.peerId,r),i.resolve(r),_.delete(Q$.pingId)}}if(d==="msg"&&e$!==c){if(j0===A$||X>0)R(Q$,e$,e)}if(g)return;if(!H.isBridge)return;if((j$??0)<=0)return;let $0=(i,r,J8=null)=>{if(!i)return;let XJ={t:d,id:e,ttl:J8??(j$??N())-1,data:Q$,origin:e$||c,originCell:j0||A$},b8=JSON.stringify(XJ);if(r?.length){let zJ=new Set(Object.keys($.getPeers?.()||{})),f8=r.filter((ZJ)=>zJ.has(ZJ));if(f8.length>0)i.send(b8,f8)}else i.send(b8)};if(V===j){for(let i of T(A$))$0(C$(i),null);return}if(!T(A$).map(t0).includes(V))return;$0(z,null);for(let i of T(A$))if(t0(i)!==V)$0(C$(i),null)},C$=(V)=>{let k=t0(V);if(M$.has(V))return M$.get(V);let P=$.channel(k);if(M$.set(V,P),!q$.has(k))q$.add(k),P.on("message",(g)=>G$(k,g));return P},S$=()=>{if(!H.cellId)return;if(j=t0(H.cellId),z=$.channel(j),!q$.has(j))q$.add(j),z.on("message",(V)=>G$(j,V));if(H.isBridge)for(let V of T(H.cellId))C$(V);if(X$.length)for(let V of X$.splice(0)){let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)}H$()},h$=(V)=>{if(!H.cellId)return!0;if(!p().includes(V))return!0;let P=`cell-${E8(V,O())}`;if(P===H.cellId)return!0;if(H.bridges.includes(P))return!0;return T(H.cellId).includes(P)&&t(P,H.cellId).includes(V)},w$=()=>{let V=$.getPeers?.()||{};for(let k of Object.keys(V))if(!h$(k))V[k].close?.()};q.admit=h$;let t$=()=>{let V=k$(),k=!H.cellId||H.cellId!==V.cellId||H.isBridge!==V.isBridge||JSON.stringify(H.bridges)!==JSON.stringify(V.bridges);if(H=V,y(c,V.cellId,V.bridges),k)S$();else H$();w$(),v("mesh:state",V),s()},Q8="",v8=0,_8=()=>{return`${H.cellId}:${H.isBridge}:${H.bridges.join(",")}`},qJ=()=>{if(w)return;w=setInterval(()=>{let V=O();if(V!==A){A=V,t$();return}let k=_8();if(k!==Q8||Date.now()-v8>1e4)H$(),Q8=k;for(let[P,g]of I)if(P!==c&&g.isStale)S.delete(P),I.delete(P),Y("Removed stale peer:",P)},Y9)},GJ=()=>{if(w)clearInterval(w),w=null},YJ=(V)=>{return new Promise((k,P)=>{let g=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,d=Date.now(),e=setTimeout(()=>{_.delete(g);let Q$=I.get(V);if(Q$)Q$.markUnresponsive();P(Error("Ping timeout"))},q9);_.set(g,{start:d,resolve:k,reject:P,timeout:e,peerId:V});let j$={t:"ping",id:h(),ttl:N(),data:{pingId:g,target:V},origin:c,originCell:H.cellId};z?.send(JSON.stringify(j$))})};if($.on?.("peer:join",(V)=>{if(!I.has(V))I.set(V,new e0(V));else I.get(V).markReconnect();t$()}),$.on?.("peer:leave",(V)=>{S.delete(V),t$()}),!I.has(c))I.set(c,new e0(c));return I.get(c).addConnectedCell(H.cellId||"cell-0"),t$(),qJ(),{send:(V)=>{if(!H.cellId||!z)return X$.push(V);let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)},on:(V,k)=>V==="message"?x(k):void 0,ping:YJ,getState:()=>({...H,cellSize:M,health:l(H.cellId),dynamicTTL:N(),totalCells:O(),knownCells:z$.size}),getMetrics:F,getCellHealth:l,getPeerInfo:()=>new Map(S),getStableRoster:()=>p(),getKnownCells:()=>new Map(z$),getCellSize:()=>M,destroy:()=>{GJ(),_.forEach((V)=>clearTimeout(V.timeout)),_.clear(),n.clear(),z$.clear()}}}function JJ($,J,q){let Q={},G=s0({...$,admit:(Z)=>Q.admit?.(Z)??!0},J,q),Y=$.overlay||{},X=U9(G,Y,Q),U=new Map;return{on:(Z,B)=>G.on(Z,B),off:(Z,B)=>G.off?.(Z,B),channel:(Z)=>{if(U.has(Z))return U.get(Z);let B=G.channel(Z),M={send:(H,z)=>{X.send({_ch:Z,_d:H,_t:z})},on:(H,z)=>{if(H==="message")X.on("message",(j,w)=>{if(j?._ch===Z)z(j._d,w)}),B.on(H,z);else B.on(H,z)},off:(H,z)=>B.off?.(H,z),_original:B};return U.set(Z,M),M},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getMetrics:(Z)=>X.getMetrics(Z),getCellHealth:(Z)=>X.getCellHealth(Z),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),U.clear(),G.leave()},destroy:()=>{X.destroy(),U.clear()}}}var kq=($,J,q)=>$?.cells||$?.overlay?JJ($,J,q):s0($,J,q);export{c as selfId,kq as join,eQ as getRelaySockets};
{
"name": "genosdb",
"version": "0.23.0",
"version": "0.23.1",
"description": "GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.",

@@ -30,14 +30,26 @@ "main": "dist/index.js",

"GenosDB",
"genosdb",
"GenosRTC",
"genosrtc",
"gdb",
"database",
"graph",
"database",
"real-time",
"graph-database",
"crdt",
"CRDT",
"p2p",
"peer-to-peer",
"webrtc",
"decentralized",
"distributed",
"decentralized",
"real-time",
"realtime",
"replication",
"local-first",
"offline-first",
"rbac",
"decentralized-database",
"webrtc-mesh",
"offline-first",
"zero-trust"
"zero-trust",
"cellular-mesh",
"nostr",
"opfs"
],

@@ -44,0 +56,0 @@ "author": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet