@libp2p/webrtc 5.2.7-5fe2a18fc → 5.2.7-88b5c29ed

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PWebrtc = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PWebrtc=(()=>{var zo=Object.defineProperty;var Xu=Object.getOwnPropertyDescriptor;var Zu=Object.getOwnPropertyNames;var Yu=Object.prototype.hasOwnProperty;var At=(r,t)=>{for(var e in t)zo(r,e,{get:t[e],enumerable:!0})},ju=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zu(t))!Yu.call(r,o)&&o!==e&&zo(r,o,{get:()=>t[o],enumerable:!(n=Xu(t,o))||n.enumerable});return r};var Ju=r=>ju(zo({},"__esModule",{value:!0}),r);var gm={};At(gm,{webRTC:()=>mm,webRTCDirect:()=>pm});var Wo=Symbol.for("@libp2p/peer-id");var dn=Symbol.for("@libp2p/transport");var La;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(La||(La={}));var pn=class extends Error{static name="UnexpectedPeerError";constructor(t="Unexpected Peer"){super(t),this.name="UnexpectedPeerError"}};var rt=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},je=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}};var mn=class extends Error{static name="ConnectionFailedError";constructor(t="Connection failed"){super(t),this.name="ConnectionFailedError"}};var gn=class extends Error{static name="StreamResetError";constructor(t="The stream has been reset"){super(t),this.name="StreamResetError"}},Pe=class extends Error{static name="StreamStateError";constructor(t="The stream is in an invalid state"){super(t),this.name="StreamStateError"}};var yn=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}};var wn=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var bn=class extends Error{static name="TimeoutError";constructor(t="Timed out"){super(t),this.name="TimeoutError"}};var De=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Je=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};var Qe=Symbol.for("@libp2p/service-capabilities"),Ba=Symbol.for("@libp2p/service-dependencies");var jo={};At(jo,{base58btc:()=>nt,base58flickr:()=>of});var Gm=new Uint8Array(0);function Ca(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ne(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function _a(r){return new TextEncoder().encode(r)}function Ra(r){return new TextDecoder().decode(r)}function Qu(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(b){if(b instanceof Uint8Array||(ArrayBuffer.isView(b)?b=new Uint8Array(b.buffer,b.byteOffset,b.byteLength):Array.isArray(b)&&(b=Uint8Array.from(b))),!(b instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(b.length===0)return"";for(var m=0,h=0,w=0,x=b.length;w!==x&&b[w]===0;)w++,m++;for(var p=(x-w)*u+1>>>0,I=new Uint8Array(p);w!==x;){for(var R=b[w],_=0,v=p-1;(R!==0||_<h)&&v!==-1;v--,_++)R+=256*I[v]>>>0,I[v]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");h=_,w++}for(var C=p-h;C!==p&&I[C]===0;)C++;for(var L=c.repeat(m);C<p;++C)L+=r.charAt(I[C]);return L}function d(b){if(typeof b!="string")throw new TypeError("Expected String");if(b.length===0)return new Uint8Array;var m=0;if(b[m]!==" "){for(var h=0,w=0;b[m]===c;)h++,m++;for(var x=(b.length-m)*l+1>>>0,p=new Uint8Array(x);b[m];){var I=e[b.charCodeAt(m)];if(I===255)return;for(var R=0,_=x-1;(I!==0||R<w)&&_!==-1;_--,R++)I+=a*p[_]>>>0,p[_]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");w=R,m++}if(b[m]!==" "){for(var v=x-w;v!==x&&p[v]===0;)v++;for(var C=new Uint8Array(h+(x-v)),L=h;v!==x;)C[L++]=p[v++];return C}}}function g(b){var m=d(b);if(m)return m;throw new Error(`Non-${t} character`)}return{encode:f,decodeUnsafe:d,decode:g}}var tf=Qu,ef=tf,Da=ef;var $o=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Xo=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let o=e.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Na(this,t)}},Zo=class{decoders;constructor(t){this.decoders=t}or(t){return Na(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Na(r,t){return new Zo({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var Yo=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new $o(t,e,n),this.decoder=new Xo(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function tr({name:r,prefix:t,encode:e,decode:n}){return new Yo(r,t,e,n)}function ye({name:r,prefix:t,alphabet:e}){let{encode:n,decode:o}=Da(e,r);return tr({prefix:t,name:r,encode:n,decode:s=>ne(o(s))})}function rf(r,t,e,n){let o={};for(let u=0;u<t.length;++u)o[t[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*e/8|0),a=0,c=0,l=0;for(let u=0;u<s;++u){let f=o[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<e|f,a+=e,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=e||(255&c<<8-a)!==0)throw new SyntaxError("Unexpected end of data");return i}function nf(r,t,e){let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i!==0&&(s+=t[o&a<<e-i]),n)for(;(s.length*e&7)!==0;)s+="=";return s}function ft({name:r,prefix:t,bitsPerChar:e,alphabet:n}){return tr({prefix:t,name:r,encode(o){return nf(o,n,e)},decode(o){return rf(o,n,e,r)}})}var nt=ye({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),of=ye({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Jo={};At(Jo,{base32:()=>oe,base32hex:()=>lf,base32hexpad:()=>ff,base32hexpadupper:()=>hf,base32hexupper:()=>uf,base32pad:()=>af,base32padupper:()=>cf,base32upper:()=>sf,base32z:()=>df});var oe=ft({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),sf=ft({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),af=ft({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),cf=ft({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),lf=ft({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),uf=ft({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ff=ft({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),hf=ft({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),df=ft({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Qo={};At(Qo,{base36:()=>Tr,base36upper:()=>pf});var Tr=ye({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),pf=ye({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Mt={};At(Mt,{Digest:()=>Ne,create:()=>vt,decode:()=>we,equals:()=>es,hasCode:()=>Df});var mf=Oa,Ua=128,gf=127,yf=~gf,wf=Math.pow(2,31);function Oa(r,t,e){t=t||[],e=e||0;for(var n=e;r>=wf;)t[e++]=r&255|Ua,r/=128;for(;r&yf;)t[e++]=r&255|Ua,r>>>=7;return t[e]=r|0,Oa.bytes=e-n+1,t}var bf=ts,xf=128,ka=127;function ts(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw ts.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&ka)<<o:(i&ka)*Math.pow(2,o),o+=7}while(i>=xf);return ts.bytes=s-n,e}var Ef=Math.pow(2,7),Sf=Math.pow(2,14),Af=Math.pow(2,21),vf=Math.pow(2,28),If=Math.pow(2,35),Tf=Math.pow(2,42),Lf=Math.pow(2,49),Bf=Math.pow(2,56),Cf=Math.pow(2,63),_f=function(r){return r<Ef?1:r<Sf?2:r<Af?3:r<vf?4:r<If?5:r<Tf?6:r<Lf?7:r<Bf?8:r<Cf?9:10},Rf={encode:mf,decode:bf,encodingLength:_f},Pf=Rf,Lr=Pf;function Br(r,t=0){return[Lr.decode(r,t),Lr.decode.bytes]}function er(r,t,e=0){return Lr.encode(r,t,e),t}function rr(r){return Lr.encodingLength(r)}function vt(r,t){let e=t.byteLength,n=rr(r),o=n+rr(e),s=new Uint8Array(o+e);return er(r,s,0),er(e,s,n),s.set(t,o),new Ne(r,e,t,s)}function we(r){let t=ne(r),[e,n]=Br(t),[o,s]=Br(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ne(e,o,i,t)}function es(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Ca(r.bytes,e.bytes)}}var Ne=class{code;size;digest;bytes;constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};function Df(r,t){return r.code===t}function Ma(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return Uf(e,rs(r),t??nt.encoder);default:return kf(e,rs(r),t??oe.encoder)}}var Ka=new WeakMap;function rs(r){let t=Ka.get(r);if(t==null){let e=new Map;return Ka.set(r,e),e}return t}var bt=class r{code;version;multihash;bytes;"/";constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==Cr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==Of)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=vt(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&es(t.multihash,n.multihash)}toString(t){return Ma(this,t)}toJSON(){return{"/":Ma(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i??Fa(n,o,s.bytes))}else if(e[Mf]===!0){let{version:n,multihash:o,code:s}=e,i=we(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Cr)throw new Error(`Version 0 CID must use dag-pb (code: ${Cr}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Fa(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Cr,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=ne(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new Ne(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[f,d]=Br(t.subarray(e));return e+=d,f},o=n(),s=Cr;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),c=n(),l=e+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(t,e){let[n,o]=Nf(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return rs(s).set(n,t),s}};function Nf(r,t){switch(r[0]){case"Q":{let e=t??nt;return[nt.prefix,e.decode(`${nt.prefix}${r}`)]}case nt.prefix:{let e=t??nt;return[nt.prefix,e.decode(r)]}case oe.prefix:{let e=t??oe;return[oe.prefix,e.decode(r)]}case Tr.prefix:{let e=t??Tr;return[Tr.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function Uf(r,t,e){let{prefix:n}=e;if(n!==nt.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o}function kf(r,t,e){let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o}var Cr=112,Of=18;function Fa(r,t,e){let n=rr(r),o=n+rr(t),s=new Uint8Array(o+e.byteLength);return er(r,s,0),er(t,s,n),s.set(e,o),s}var Mf=Symbol.for("@ipld/js-cid/CID");var ns={};At(ns,{identity:()=>se});var Ha=0,Kf="identity",Va=ne;function Ff(r){return vt(Ha,Va(r))}var se={code:Ha,name:Kf,encode:Va,digest:Ff};function Rt(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function En(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Hf(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function nr(r,...t){if(!Hf(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function _r(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");En(r.outputLen),En(r.blockLen)}function or(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function qa(r,t){nr(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}var Ue=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Sn(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function qt(r,t){return r<<32-t|r>>>t}function Ga(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function be(r){return typeof r=="string"&&(r=Ga(r)),nr(r),r}function os(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];nr(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var sr=class{clone(){return this._cloneInto()}};function An(r){let t=n=>r().update(be(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Rr(r=32){if(Ue&&typeof Ue.getRandomValues=="function")return Ue.getRandomValues(new Uint8Array(r));if(Ue&&typeof Ue.randomBytes=="function")return Ue.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Vf(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,l=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+l,a,n)}function za(r,t,e){return r&t^~r&e}function Wa(r,t,e){return r&t^r&e^t&e}var ir=class extends sr{constructor(t,e,n,o){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Sn(this.buffer)}update(t){or(this);let{view:e,buffer:n,blockLen:o}=this;t=be(t);let s=t.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=Sn(t);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){or(this),qa(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;e[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)e[f]=0;Vf(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=Sn(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return t.length=o,t.pos=a,t.finished=s,t.destroyed=i,o%e&&t.buffer.set(n),t}};var vn=BigInt(4294967295),ss=BigInt(32);function $a(r,t=!1){return t?{h:Number(r&vn),l:Number(r>>ss&vn)}:{h:Number(r>>ss&vn)|0,l:Number(r&vn)|0}}function qf(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=$a(r[o],t);[e[o],n[o]]=[s,i]}return[e,n]}var Gf=(r,t)=>BigInt(r>>>0)<<ss|BigInt(t>>>0),zf=(r,t,e)=>r>>>e,Wf=(r,t,e)=>r<<32-e|t>>>e,$f=(r,t,e)=>r>>>e|t<<32-e,Xf=(r,t,e)=>r<<32-e|t>>>e,Zf=(r,t,e)=>r<<64-e|t>>>e-32,Yf=(r,t,e)=>r>>>e-32|t<<64-e,jf=(r,t)=>t,Jf=(r,t)=>r,Qf=(r,t,e)=>r<<e|t>>>32-e,th=(r,t,e)=>t<<e|r>>>32-e,eh=(r,t,e)=>t<<e-32|r>>>64-e,rh=(r,t,e)=>r<<e-32|t>>>64-e;function nh(r,t,e,n){let o=(t>>>0)+(n>>>0);return{h:r+e+(o/2**32|0)|0,l:o|0}}var oh=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),sh=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,ih=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),ah=(r,t,e,n,o)=>t+e+n+o+(r/2**32|0)|0,ch=(r,t,e,n,o)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),lh=(r,t,e,n,o,s)=>t+e+n+o+s+(r/2**32|0)|0;var uh={fromBig:$a,split:qf,toBig:Gf,shrSH:zf,shrSL:Wf,rotrSH:$f,rotrSL:Xf,rotrBH:Zf,rotrBL:Yf,rotr32H:jf,rotr32L:Jf,rotlSH:Qf,rotlSL:th,rotlBH:eh,rotlBL:rh,add:nh,add3L:oh,add3H:sh,add4L:ih,add4H:ah,add5H:lh,add5L:ch},V=uh;var[fh,hh]=V.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),xe=new Uint32Array(80),Ee=new Uint32Array(80),is=class extends ir{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:t,Al:e,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:d,Gh:g,Gl:b,Hh:m,Hl:h}=this;return[t,e,n,o,s,i,a,c,l,u,f,d,g,b,m,h]}set(t,e,n,o,s,i,a,c,l,u,f,d,g,b,m,h){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=d|0,this.Gh=g|0,this.Gl=b|0,this.Hh=m|0,this.Hl=h|0}process(t,e){for(let p=0;p<16;p++,e+=4)xe[p]=t.getUint32(e),Ee[p]=t.getUint32(e+=4);for(let p=16;p<80;p++){let I=xe[p-15]|0,R=Ee[p-15]|0,_=V.rotrSH(I,R,1)^V.rotrSH(I,R,8)^V.shrSH(I,R,7),v=V.rotrSL(I,R,1)^V.rotrSL(I,R,8)^V.shrSL(I,R,7),C=xe[p-2]|0,L=Ee[p-2]|0,M=V.rotrSH(C,L,19)^V.rotrBH(C,L,61)^V.shrSH(C,L,6),N=V.rotrSL(C,L,19)^V.rotrBL(C,L,61)^V.shrSL(C,L,6),O=V.add4L(v,N,Ee[p-7],Ee[p-16]),F=V.add4H(O,_,M,xe[p-7],xe[p-16]);xe[p]=F|0,Ee[p]=O|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:d,Fh:g,Fl:b,Gh:m,Gl:h,Hh:w,Hl:x}=this;for(let p=0;p<80;p++){let I=V.rotrSH(f,d,14)^V.rotrSH(f,d,18)^V.rotrBH(f,d,41),R=V.rotrSL(f,d,14)^V.rotrSL(f,d,18)^V.rotrBL(f,d,41),_=f&g^~f&m,v=d&b^~d&h,C=V.add5L(x,R,v,hh[p],Ee[p]),L=V.add5H(C,w,I,_,fh[p],xe[p]),M=C|0,N=V.rotrSH(n,o,28)^V.rotrBH(n,o,34)^V.rotrBH(n,o,39),O=V.rotrSL(n,o,28)^V.rotrBL(n,o,34)^V.rotrBL(n,o,39),F=n&s^n&a^s&a,T=o&i^o&c^i&c;w=m|0,x=h|0,m=g|0,h=b|0,g=f|0,b=d|0,{h:f,l:d}=V.add(l|0,u|0,L|0,M|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let B=V.add3L(M,O,T);n=V.add3H(B,L,N,F),o=B|0}({h:n,l:o}=V.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=V.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=V.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=V.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:d}=V.add(this.Eh|0,this.El|0,f|0,d|0),{h:g,l:b}=V.add(this.Fh|0,this.Fl|0,g|0,b|0),{h:m,l:h}=V.add(this.Gh|0,this.Gl|0,m|0,h|0),{h:w,l:x}=V.add(this.Hh|0,this.Hl|0,w|0,x|0),this.set(n,o,s,i,a,c,l,u,f,d,g,b,m,h,w,x)}roundClean(){xe.fill(0),Ee.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Xa=An(()=>new is);var Ln={};At(Ln,{aInRange:()=>xt,abool:()=>Gt,abytes:()=>ar,bitGet:()=>wh,bitLen:()=>us,bitMask:()=>Dr,bitSet:()=>bh,bytesToHex:()=>ae,bytesToNumberBE:()=>ce,bytesToNumberLE:()=>zt,concatBytes:()=>ue,createHmacDrbg:()=>fs,ensureBytes:()=>ot,equalBytes:()=>gh,hexToBytes:()=>Oe,hexToNumber:()=>ls,inRange:()=>Pr,isBytes:()=>Se,memoized:()=>Me,notImplemented:()=>Eh,numberToBytesBE:()=>Ae,numberToBytesLE:()=>le,numberToHexUnpadded:()=>ke,numberToVarBytesBE:()=>mh,utf8ToBytes:()=>yh,validateObject:()=>Kt});var In=BigInt(0),Tn=BigInt(1),dh=BigInt(2);function Se(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function ar(r){if(!Se(r))throw new Error("Uint8Array expected")}function Gt(r,t){if(typeof t!="boolean")throw new Error(r+" boolean expected, got "+t)}var ph=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function ae(r){ar(r);let t="";for(let e=0;e<r.length;e++)t+=ph[r[e]];return t}function ke(r){let t=r.toString(16);return t.length&1?"0"+t:t}function ls(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?In:BigInt("0x"+r)}var ie={_0:48,_9:57,A:65,F:70,a:97,f:102};function Za(r){if(r>=ie._0&&r<=ie._9)return r-ie._0;if(r>=ie.A&&r<=ie.F)return r-(ie.A-10);if(r>=ie.a&&r<=ie.f)return r-(ie.a-10)}function Oe(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let t=r.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let o=0,s=0;o<e;o++,s+=2){let i=Za(r.charCodeAt(s)),a=Za(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function ce(r){return ls(ae(r))}function zt(r){return ar(r),ls(ae(Uint8Array.from(r).reverse()))}function Ae(r,t){return Oe(r.toString(16).padStart(t*2,"0"))}function le(r,t){return Ae(r,t).reverse()}function mh(r){return Oe(ke(r))}function ot(r,t,e){let n;if(typeof t=="string")try{n=Oe(t)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(Se(t))n=Uint8Array.from(t);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof e=="number"&&o!==e)throw new Error(r+" of length "+e+" expected, got "+o);return n}function ue(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];ar(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}function gh(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}function yh(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}var as=r=>typeof r=="bigint"&&In<=r;function Pr(r,t,e){return as(r)&&as(t)&&as(e)&&t<=r&&r<e}function xt(r,t,e,n){if(!Pr(t,e,n))throw new Error("expected valid "+r+": "+e+" <= n < "+n+", got "+t)}function us(r){let t;for(t=0;r>In;r>>=Tn,t+=1);return t}function wh(r,t){return r>>BigInt(t)&Tn}function bh(r,t,e){return r|(e?Tn:In)<<BigInt(t)}var Dr=r=>(dh<<BigInt(r-1))-Tn,cs=r=>new Uint8Array(r),Ya=r=>Uint8Array.from(r);function fs(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=cs(r),o=cs(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...f)=>e(o,n,...f),c=(f=cs())=>{o=a(Ya([0]),f),n=a(),f.length!==0&&(o=a(Ya([1]),f),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,d=[];for(;f<t;){n=a();let g=n.slice();d.push(g),f+=n.length}return ue(...d)};return(f,d)=>{i(),c(f);let g;for(;!(g=d(l()));)c();return i(),g}}var xh={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Se(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Kt(r,t,e={}){let n=(o,s,i)=>{let a=xh[s];if(typeof a!="function")throw new Error("invalid validator function");let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(o)+" is invalid. Expected "+s+", got "+c)};for(let[o,s]of Object.entries(t))n(o,s,!1);for(let[o,s]of Object.entries(e))n(o,s,!0);return r}var Eh=()=>{throw new Error("not implemented")};function Me(r){let t=new WeakMap;return(e,...n)=>{let o=t.get(e);if(o!==void 0)return o;let s=r(e,...n);return t.set(e,s),s}}var pt=BigInt(0),ut=BigInt(1),Ke=BigInt(2),Sh=BigInt(3),hs=BigInt(4),ja=BigInt(5),Ja=BigInt(8),Ah=BigInt(9),vh=BigInt(16);function Z(r,t){let e=r%t;return e>=pt?e:t+e}function ds(r,t,e){if(t<pt)throw new Error("invalid exponent, negatives unsupported");if(e<=pt)throw new Error("invalid modulus");if(e===ut)return pt;let n=ut;for(;t>pt;)t&ut&&(n=n*r%e),r=r*r%e,t>>=ut;return n}function at(r,t,e){let n=r;for(;t-- >pt;)n*=n,n%=e;return n}function Bn(r,t){if(r===pt)throw new Error("invert: expected non-zero number");if(t<=pt)throw new Error("invert: expected positive modulus, got "+t);let e=Z(r,t),n=t,o=pt,s=ut,i=ut,a=pt;for(;e!==pt;){let l=n/e,u=n%e,f=o-i*l,d=s-a*l;n=e,e=u,o=i,s=a,i=f,a=d}if(n!==ut)throw new Error("invert: does not exist");return Z(o,t)}function Ih(r){let t=(r-ut)/Ke,e,n,o;for(e=r-ut,n=0;e%Ke===pt;e/=Ke,n++);for(o=Ke;o<r&&ds(o,t,r)!==r-ut;o++)if(o>1e3)throw new Error("Cannot find square root: likely non-prime P");if(n===1){let i=(r+ut)/hs;return function(c,l){let u=c.pow(l,i);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let s=(e+ut)/Ke;return function(a,c){if(a.pow(c,t)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,o),e),f=a.pow(c,s),d=a.pow(c,e);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let g=1;for(let m=a.sqr(d);g<l&&!a.eql(m,a.ONE);g++)m=a.sqr(m);let b=a.pow(u,ut<<BigInt(l-g-1));u=a.sqr(b),f=a.mul(f,b),d=a.mul(d,u),l=g}return f}}function Th(r){if(r%hs===Sh){let t=(r+ut)/hs;return function(n,o){let s=n.pow(o,t);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%Ja===ja){let t=(r-ja)/Ja;return function(n,o){let s=n.mul(o,Ke),i=n.pow(s,t),a=n.mul(o,i),c=n.mul(n.mul(a,Ke),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%vh,Ih(r)}var Qa=(r,t)=>(Z(r,t)&ut)===ut,Lh=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ps(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=Lh.reduce((n,o)=>(n[o]="function",n),t);return Kt(r,e)}function Bh(r,t,e){if(e<pt)throw new Error("invalid exponent, negatives unsupported");if(e===pt)return r.ONE;if(e===ut)return t;let n=r.ONE,o=t;for(;e>pt;)e&ut&&(n=r.mul(n,o)),o=r.sqr(o),e>>=ut;return n}function Ch(r,t){let e=new Array(t.length),n=t.reduce((s,i,a)=>r.is0(i)?s:(e[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return t.reduceRight((s,i,a)=>r.is0(i)?s:(e[a]=r.mul(s,e[a]),r.mul(s,i)),o),e}function ms(r,t){let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function ve(r,t,e=!1,n={}){if(r<=pt)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:o,nByteLength:s}=ms(r,t);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,isLE:e,BITS:o,BYTES:s,MASK:Dr(o),ZERO:pt,ONE:ut,create:c=>Z(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return pt<=c&&c<r},is0:c=>c===pt,isOdd:c=>(c&ut)===ut,neg:c=>Z(-c,r),eql:(c,l)=>c===l,sqr:c=>Z(c*c,r),add:(c,l)=>Z(c+l,r),sub:(c,l)=>Z(c-l,r),mul:(c,l)=>Z(c*l,r),pow:(c,l)=>Bh(a,c,l),div:(c,l)=>Z(c*Bn(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Bn(c,r),sqrt:n.sqrt||(c=>(i||(i=Th(r)),i(a,c))),invertBatch:c=>Ch(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>e?le(c,s):Ae(c,s),fromBytes:c=>{if(c.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+c.length);return e?zt(c):ce(c)}});return Object.freeze(a)}function tc(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function gs(r){let t=tc(r);return t+Math.ceil(t/2)}function ec(r,t,e=!1){let n=r.length,o=tc(t),s=gs(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=e?zt(r):ce(r),a=Z(i,t-ut)+ut;return e?le(a,o):Ae(a,o)}var rc=BigInt(0),Cn=BigInt(1);function ys(r,t){let e=t.negate();return r?e:t}function nc(r,t){if(!Number.isSafeInteger(r)||r<=0||r>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+r)}function ws(r,t){nc(r,t);let e=Math.ceil(t/r)+1,n=2**(r-1);return{windows:e,windowSize:n}}function _h(r,t){if(!Array.isArray(r))throw new Error("array expected");r.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function Rh(r,t){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}var bs=new WeakMap,oc=new WeakMap;function xs(r){return oc.get(r)||1}function _n(r,t){return{constTimeNegate:ys,hasPrecomputes(e){return xs(e)!==1},unsafeLadder(e,n,o=r.ZERO){let s=e;for(;n>rc;)n&Cn&&(o=o.add(s)),s=s.double(),n>>=Cn;return o},precomputeWindow(e,n){let{windows:o,windowSize:s}=ws(n,t),i=[],a=e,c=a;for(let l=0;l<o;l++){c=a,i.push(c);for(let u=1;u<s;u++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(e,n,o){let{windows:s,windowSize:i}=ws(e,t),a=r.ZERO,c=r.BASE,l=BigInt(2**e-1),u=2**e,f=BigInt(e);for(let d=0;d<s;d++){let g=d*i,b=Number(o&l);o>>=f,b>i&&(b-=u,o+=Cn);let m=g,h=g+Math.abs(b)-1,w=d%2!==0,x=b<0;b===0?c=c.add(ys(w,n[m])):a=a.add(ys(x,n[h]))}return{p:a,f:c}},wNAFUnsafe(e,n,o,s=r.ZERO){let{windows:i,windowSize:a}=ws(e,t),c=BigInt(2**e-1),l=2**e,u=BigInt(e);for(let f=0;f<i;f++){let d=f*a;if(o===rc)break;let g=Number(o&c);if(o>>=u,g>a&&(g-=l,o+=Cn),g===0)continue;let b=n[d+Math.abs(g)-1];g<0&&(b=b.negate()),s=s.add(b)}return s},getPrecomputes(e,n,o){let s=bs.get(n);return s||(s=this.precomputeWindow(n,e),e!==1&&bs.set(n,o(s))),s},wNAFCached(e,n,o){let s=xs(e);return this.wNAF(s,this.getPrecomputes(s,e,o),n)},wNAFCachedUnsafe(e,n,o,s){let i=xs(e);return i===1?this.unsafeLadder(e,n,s):this.wNAFUnsafe(i,this.getPrecomputes(i,e,o),n,s)},setWindowSize(e,n){nc(n,t),oc.set(e,n),bs.delete(e)}}}function Rn(r,t,e,n){if(_h(e,r),Rh(n,t),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let o=r.ZERO,s=us(BigInt(e.length)),i=s>12?s-3:s>4?s-2:s?2:1,a=(1<<i)-1,c=new Array(a+1).fill(o),l=Math.floor((t.BITS-1)/i)*i,u=o;for(let f=l;f>=0;f-=i){c.fill(o);for(let g=0;g<n.length;g++){let b=n[g],m=Number(b>>BigInt(f)&BigInt(a));c[m]=c[m].add(e[g])}let d=o;for(let g=c.length-1,b=o;g>0;g--)b=b.add(c[g]),d=d.add(b);if(u=u.add(d),f!==0)for(let g=0;g<i;g++)u=u.double()}return u}function Nr(r){return ps(r.Fp),Kt(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ms(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Wt=BigInt(0),Dt=BigInt(1),Pn=BigInt(2),Ph=BigInt(8),Dh={zip215:!0};function Nh(r){let t=Nr(r);return Kt(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function sc(r){let t=Nh(r),{Fp:e,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=t,l=Pn<<BigInt(a*8)-Dt,u=e.create,f=ve(t.n,t.nBitLength),d=t.uvRatio||((E,y)=>{try{return{isValid:!0,value:e.sqrt(E*e.inv(y))}}catch{return{isValid:!1,value:Wt}}}),g=t.adjustScalarBytes||(E=>E),b=t.domain||((E,y,A)=>{if(Gt("phflag",A),y.length||A)throw new Error("Contexts/pre-hash are not supported");return E});function m(E,y){xt("coordinate "+E,y,Wt,l)}function h(E){if(!(E instanceof p))throw new Error("ExtendedPoint expected")}let w=Me((E,y)=>{let{ex:A,ey:S,ez:P}=E,D=E.is0();y==null&&(y=D?Ph:e.inv(P));let k=u(A*y),H=u(S*y),K=u(P*y);if(D)return{x:Wt,y:Dt};if(K!==Dt)throw new Error("invZ was invalid");return{x:k,y:H}}),x=Me(E=>{let{a:y,d:A}=t;if(E.is0())throw new Error("bad point: ZERO");let{ex:S,ey:P,ez:D,et:k}=E,H=u(S*S),K=u(P*P),G=u(D*D),X=u(G*G),st=u(H*y),it=u(G*u(st+K)),lt=u(X+u(A*u(H*K)));if(it!==lt)throw new Error("bad point: equation left != right (1)");let St=u(S*P),Pt=u(D*k);if(St!==Pt)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(y,A,S,P){this.ex=y,this.ey=A,this.ez=S,this.et=P,m("x",y),m("y",A),m("z",S),m("t",P),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(y){if(y instanceof p)throw new Error("extended point not allowed");let{x:A,y:S}=y||{};return m("x",A),m("y",S),new p(A,S,Dt,u(A*S))}static normalizeZ(y){let A=e.invertBatch(y.map(S=>S.ez));return y.map((S,P)=>S.toAffine(A[P])).map(p.fromAffine)}static msm(y,A){return Rn(p,f,y,A)}_setWindowSize(y){_.setWindowSize(this,y)}assertValidity(){x(this)}equals(y){h(y);let{ex:A,ey:S,ez:P}=this,{ex:D,ey:k,ez:H}=y,K=u(A*H),G=u(D*P),X=u(S*H),st=u(k*P);return K===G&&X===st}is0(){return this.equals(p.ZERO)}negate(){return new p(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:y}=t,{ex:A,ey:S,ez:P}=this,D=u(A*A),k=u(S*S),H=u(Pn*u(P*P)),K=u(y*D),G=A+S,X=u(u(G*G)-D-k),st=K+k,it=st-H,lt=K-k,St=u(X*it),Pt=u(st*lt),_t=u(X*lt),Jt=u(it*st);return new p(St,Pt,Jt,_t)}add(y){h(y);let{a:A,d:S}=t,{ex:P,ey:D,ez:k,et:H}=this,{ex:K,ey:G,ez:X,et:st}=y;if(A===BigInt(-1)){let xa=u((D-P)*(G+K)),Ea=u((D+P)*(G-K)),Go=u(Ea-xa);if(Go===Wt)return this.double();let Sa=u(k*Pn*st),Aa=u(H*Pn*X),va=Aa+Sa,Ia=Ea+xa,Ta=Aa-Sa,Gu=u(va*Go),zu=u(Ia*Ta),Wu=u(va*Ta),$u=u(Go*Ia);return new p(Gu,zu,$u,Wu)}let it=u(P*K),lt=u(D*G),St=u(H*S*st),Pt=u(k*X),_t=u((P+D)*(K+G)-it-lt),Jt=Pt-St,re=Pt+St,Ir=u(lt-A*it),Fu=u(_t*Jt),Hu=u(re*Ir),Vu=u(_t*Ir),qu=u(Jt*re);return new p(Fu,Hu,qu,Vu)}subtract(y){return this.add(y.negate())}wNAF(y){return _.wNAFCached(this,y,p.normalizeZ)}multiply(y){let A=y;xt("scalar",A,Dt,n);let{p:S,f:P}=this.wNAF(A);return p.normalizeZ([S,P])[0]}multiplyUnsafe(y,A=p.ZERO){let S=y;return xt("scalar",S,Wt,n),S===Wt?R:this.is0()||S===Dt?this:_.wNAFCachedUnsafe(this,S,p.normalizeZ,A)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(y){return w(this,y)}clearCofactor(){let{h:y}=t;return y===Dt?this:this.multiplyUnsafe(y)}static fromHex(y,A=!1){let{d:S,a:P}=t,D=e.BYTES;y=ot("pointHex",y,D),Gt("zip215",A);let k=y.slice(),H=y[D-1];k[D-1]=H&-129;let K=zt(k),G=A?l:e.ORDER;xt("pointHex.y",K,Wt,G);let X=u(K*K),st=u(X-Dt),it=u(S*X-P),{isValid:lt,value:St}=d(st,it);if(!lt)throw new Error("Point.fromHex: invalid y coordinate");let Pt=(St&Dt)===Dt,_t=(H&128)!==0;if(!A&&St===Wt&&_t)throw new Error("Point.fromHex: x=0 and x_0=1");return _t!==Pt&&(St=u(-St)),p.fromAffine({x:St,y:K})}static fromPrivateKey(y){return L(y).point}toRawBytes(){let{x:y,y:A}=this.toAffine(),S=le(A,e.BYTES);return S[S.length-1]|=y&Dt?128:0,S}toHex(){return ae(this.toRawBytes())}}p.BASE=new p(t.Gx,t.Gy,Dt,u(t.Gx*t.Gy)),p.ZERO=new p(Wt,Dt,Dt,Wt);let{BASE:I,ZERO:R}=p,_=_n(p,a*8);function v(E){return Z(E,n)}function C(E){return v(zt(E))}function L(E){let y=e.BYTES;E=ot("private key",E,y);let A=ot("hashed private key",s(E),2*y),S=g(A.slice(0,y)),P=A.slice(y,2*y),D=C(S),k=I.multiply(D),H=k.toRawBytes();return{head:S,prefix:P,scalar:D,point:k,pointBytes:H}}function M(E){return L(E).pointBytes}function N(E=new Uint8Array,...y){let A=ue(...y);return C(s(b(A,ot("context",E),!!o)))}function O(E,y,A={}){E=ot("message",E),o&&(E=o(E));let{prefix:S,scalar:P,pointBytes:D}=L(y),k=N(A.context,S,E),H=I.multiply(k).toRawBytes(),K=N(A.context,H,D,E),G=v(k+K*P);xt("signature.s",G,Wt,n);let X=ue(H,le(G,e.BYTES));return ot("result",X,e.BYTES*2)}let F=Dh;function T(E,y,A,S=F){let{context:P,zip215:D}=S,k=e.BYTES;E=ot("signature",E,2*k),y=ot("message",y),A=ot("publicKey",A,k),D!==void 0&&Gt("zip215",D),o&&(y=o(y));let H=zt(E.slice(k,2*k)),K,G,X;try{K=p.fromHex(A,D),G=p.fromHex(E.slice(0,k),D),X=I.multiplyUnsafe(H)}catch{return!1}if(!D&&K.isSmallOrder())return!1;let st=N(P,G.toRawBytes(),K.toRawBytes(),y);return G.add(K.multiplyUnsafe(st)).subtract(X).clearCofactor().equals(p.ZERO)}return I._setWindowSize(8),{CURVE:t,getPublicKey:M,sign:O,verify:T,ExtendedPoint:p,utils:{getExtendedPublicKey:L,randomPrivateKey:()=>i(e.BYTES),precompute(E=8,y=p.BASE){return y._setWindowSize(E),y.multiply(BigInt(3)),y}}}}var cr=BigInt(0),Es=BigInt(1);function Uh(r){return Kt(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function ic(r){let t=Uh(r),{P:e}=t,n=x=>Z(x,e),o=t.montgomeryBits,s=Math.ceil(o/8),i=t.nByteLength,a=t.adjustScalarBytes||(x=>x),c=t.powPminus2||(x=>ds(x,e-BigInt(2),e));function l(x,p,I){let R=n(x*(p-I));return p=n(p-R),I=n(I+R),[p,I]}let u=(t.a-BigInt(2))/BigInt(4);function f(x,p){xt("u",x,cr,e),xt("scalar",p,cr,e);let I=p,R=x,_=Es,v=cr,C=x,L=Es,M=cr,N;for(let F=BigInt(o-1);F>=cr;F--){let T=I>>F&Es;M^=T,N=l(M,_,C),_=N[0],C=N[1],N=l(M,v,L),v=N[0],L=N[1],M=T;let B=_+v,E=n(B*B),y=_-v,A=n(y*y),S=E-A,P=C+L,D=C-L,k=n(D*B),H=n(P*y),K=k+H,G=k-H;C=n(K*K),L=n(R*n(G*G)),_=n(E*A),v=n(S*(E+n(u*S)))}N=l(M,_,C),_=N[0],C=N[1],N=l(M,v,L),v=N[0],L=N[1];let O=c(v);return n(_*O)}function d(x){return le(n(x),s)}function g(x){let p=ot("u coordinate",x,s);return i===32&&(p[31]&=127),zt(p)}function b(x){let p=ot("scalar",x),I=p.length;if(I!==s&&I!==i){let R=""+s+" or "+i;throw new Error("invalid scalar, expected "+R+" bytes, got "+I)}return zt(a(p))}function m(x,p){let I=g(p),R=b(x),_=f(I,R);if(_===cr)throw new Error("invalid private or public key received");return d(_)}let h=d(t.Gu);function w(x){return m(x,h)}return{scalarMult:m,scalarMultBase:w,getSharedSecret:(x,p)=>m(x,p),getPublicKey:x=>w(x),utils:{randomPrivateKey:()=>t.randomBytes(t.nByteLength)},GuBytes:h}}var Ur=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),ac=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),F0=BigInt(0),kh=BigInt(1),cc=BigInt(2),Oh=BigInt(3),Mh=BigInt(5),Kh=BigInt(8);function lc(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),o=BigInt(80),s=Ur,a=r*r%s*r%s,c=at(a,cc,s)*a%s,l=at(c,kh,s)*r%s,u=at(l,Mh,s)*l%s,f=at(u,t,s)*u%s,d=at(f,e,s)*f%s,g=at(d,n,s)*d%s,b=at(g,o,s)*g%s,m=at(b,o,s)*g%s,h=at(m,t,s)*u%s;return{pow_p_5_8:at(h,cc,s)*r%s,b2:a}}function uc(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function Fh(r,t){let e=Ur,n=Z(t*t*t,e),o=Z(n*n*t,e),s=lc(r*o).pow_p_5_8,i=Z(r*n*s,e),a=Z(t*i*i,e),c=i,l=Z(i*ac,e),u=a===r,f=a===Z(-r,e),d=a===Z(-r*ac,e);return u&&(i=c),(f||d)&&(i=l),Qa(i,e)&&(i=Z(-i,e)),{isValid:u||f,value:i}}var Hh=ve(Ur,void 0,!0),Vh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Hh,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:Kh,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Xa,randomBytes:Rr,adjustScalarBytes:uc,uvRatio:Fh},fc=sc(Vh);var kr=ic({P:Ur,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let t=Ur,{pow_p_5_8:e,b2:n}=lc(r);return Z(at(e,Oh,t)*n,t)},adjustScalarBytes:uc,randomBytes:Rr});var Dn=32;function hc(r,t,e){return fc.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}var Nn=class{type="Ed25519";raw;constructor(t){this.raw=Ss(t,Dn)}toMultihash(){return se.digest(lr(this))}toCID(){return bt.createV1(114,this.toMultihash())}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return hc(this.raw,e,t)}};function As(r){return r=Ss(r,Dn),new Nn(r)}function Ss(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new rt(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}function mt(r=0){return new Uint8Array(r)}function dt(r=0){return new Uint8Array(r)}var Gh=Math.pow(2,7),zh=Math.pow(2,14),Wh=Math.pow(2,21),vs=Math.pow(2,28),Is=Math.pow(2,35),Ts=Math.pow(2,42),Ls=Math.pow(2,49),j=128,It=127;function Q(r){if(r<Gh)return 1;if(r<zh)return 2;if(r<Wh)return 3;if(r<vs)return 4;if(r<Is)return 5;if(r<Ts)return 6;if(r<Ls)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Bs(r,t,e=0){switch(Q(r)){case 8:t[e++]=r&255|j,r/=128;case 7:t[e++]=r&255|j,r/=128;case 6:t[e++]=r&255|j,r/=128;case 5:t[e++]=r&255|j,r/=128;case 4:t[e++]=r&255|j,r>>>=7;case 3:t[e++]=r&255|j,r>>>=7;case 2:t[e++]=r&255|j,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function $h(r,t,e=0){switch(Q(r)){case 8:t.set(e++,r&255|j),r/=128;case 7:t.set(e++,r&255|j),r/=128;case 6:t.set(e++,r&255|j),r/=128;case 5:t.set(e++,r&255|j),r/=128;case 4:t.set(e++,r&255|j),r>>>=7;case 3:t.set(e++,r&255|j),r>>>=7;case 2:t.set(e++,r&255|j),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Cs(r,t){let e=r[t],n=0;if(n+=e&It,e<j||(e=r[t+1],n+=(e&It)<<7,e<j)||(e=r[t+2],n+=(e&It)<<14,e<j)||(e=r[t+3],n+=(e&It)<<21,e<j)||(e=r[t+4],n+=(e&It)*vs,e<j)||(e=r[t+5],n+=(e&It)*Is,e<j)||(e=r[t+6],n+=(e&It)*Ts,e<j)||(e=r[t+7],n+=(e&It)*Ls,e<j))return n;throw new RangeError("Could not decode varint")}function Xh(r,t){let e=r.get(t),n=0;if(n+=e&It,e<j||(e=r.get(t+1),n+=(e&It)<<7,e<j)||(e=r.get(t+2),n+=(e&It)<<14,e<j)||(e=r.get(t+3),n+=(e&It)<<21,e<j)||(e=r.get(t+4),n+=(e&It)*vs,e<j)||(e=r.get(t+5),n+=(e&It)*Is,e<j)||(e=r.get(t+6),n+=(e&It)*Ts,e<j)||(e=r.get(t+7),n+=(e&It)*Ls,e<j))return n;throw new RangeError("Could not decode varint")}function Ft(r,t,e=0){return t==null&&(t=dt(Q(r))),t instanceof Uint8Array?Bs(r,t,e):$h(r,t,e)}function Ut(r,t=0){return r instanceof Uint8Array?Cs(r,t):Xh(r,t)}var _s=new Float32Array([-0]),Ie=new Uint8Array(_s.buffer);function pc(r,t,e){_s[0]=r,t[e]=Ie[0],t[e+1]=Ie[1],t[e+2]=Ie[2],t[e+3]=Ie[3]}function mc(r,t){return Ie[0]=r[t],Ie[1]=r[t+1],Ie[2]=r[t+2],Ie[3]=r[t+3],_s[0]}var Rs=new Float64Array([-0]),Tt=new Uint8Array(Rs.buffer);function gc(r,t,e){Rs[0]=r,t[e]=Tt[0],t[e+1]=Tt[1],t[e+2]=Tt[2],t[e+3]=Tt[3],t[e+4]=Tt[4],t[e+5]=Tt[5],t[e+6]=Tt[6],t[e+7]=Tt[7]}function yc(r,t){return Tt[0]=r[t],Tt[1]=r[t+1],Tt[2]=r[t+2],Tt[3]=r[t+3],Tt[4]=r[t+4],Tt[5]=r[t+5],Tt[6]=r[t+6],Tt[7]=r[t+7],Rs[0]}var Zh=BigInt(Number.MAX_SAFE_INTEGER),Yh=BigInt(Number.MIN_SAFE_INTEGER),kt=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return He;if(t<Zh&&t>Yh)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>wc&&(o=0n,++n>wc&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return He;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):He}},He=new kt(0,0);He.toBigInt=function(){return 0n};He.zzEncode=He.zzDecode=function(){return this};He.length=function(){return 1};var wc=4294967296n;function bc(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function xc(r,t,e){if(e-t<1)return"";let o,s=[],i=0,a;for(;t<e;)a=r[t++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Ps(r,t,e){let n=e,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function $t(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Un(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var Ds=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,$t(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw $t(this,4);return Un(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw $t(this,4);return Un(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw $t(this,4);let t=mc(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw $t(this,4);let t=yc(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw $t(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return xc(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw $t(this,t);this.pos+=t}else do if(this.pos>=this.len)throw $t(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new kt(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw $t(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw $t(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw $t(this,8);let t=Un(this.buf,this.pos+=4),e=Un(this.buf,this.pos+=4);return new kt(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=Cs(this.buf,this.pos);return this.pos+=Q(t),t}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Ns(r){return new Ds(r instanceof Uint8Array?r:r.subarray())}function Xt(r,t,e){let n=Ns(r);return t.decode(n,void 0,e)}var Us={};At(Us,{base10:()=>jh});var jh=ye({prefix:"9",name:"base10",alphabet:"0123456789"});var ks={};At(ks,{base16:()=>Jh,base16upper:()=>Qh});var Jh=ft({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Qh=ft({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Os={};At(Os,{base2:()=>td});var td=ft({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ms={};At(Ms,{base256emoji:()=>sd});var Sc=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),ed=Sc.reduce((r,t,e)=>(r[e]=t,r),[]),rd=Sc.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function nd(r){return r.reduce((t,e)=>(t+=ed[e],t),"")}function od(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let o=rd[n];if(o==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(o)}return new Uint8Array(t)}var sd=tr({prefix:"\u{1F680}",name:"base256emoji",encode:nd,decode:od});var Ks={};At(Ks,{base64:()=>id,base64pad:()=>ad,base64url:()=>Or,base64urlpad:()=>cd});var id=ft({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ad=ft({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Or=ft({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),cd=ft({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Fs={};At(Fs,{base8:()=>ld});var ld=ft({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Hs={};At(Hs,{identity:()=>ud});var ud=tr({prefix:"\0",name:"identity",encode:r=>Ra(r),decode:r=>_a(r)});var Sg=new TextEncoder,Ag=new TextDecoder;var Gs={};At(Gs,{sha256:()=>fe,sha512:()=>dd});function qs({name:r,code:t,encode:e}){return new Vs(r,t,e)}var Vs=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?vt(this.code,e):e.then(n=>vt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function vc(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var fe=qs({name:"sha2-256",code:18,encode:vc("SHA-256")}),dd=qs({name:"sha2-512",code:19,encode:vc("SHA-512")});var Ve={...Hs,...Os,...Fs,...Us,...ks,...Jo,...Qo,...jo,...Ks,...Ms},Ug={...Gs,...ns};function Tc(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Ic=Tc("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),zs=Tc("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=dt(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),pd={utf8:Ic,"utf-8":Ic,hex:Ve.base16,latin1:zs,ascii:zs,binary:zs,...Ve},kn=pd;function J(r,t="utf8"){let e=kn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function Ws(r){let t=r??8192,e=t>>>1,n,o=t;return function(i){if(i<1||i>e)return dt(i);o+i>t&&(n=dt(t),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var qe=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function $s(){}var Zs=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},md=Ws();function gd(r){return globalThis.Buffer!=null?dt(r):md(r)}var Kr=class{len;head;tail;states;constructor(){this.len=0,this.head=new qe($s,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new qe(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new Ys((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(On,10,kt.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=kt.fromBigInt(t);return this._push(On,e.length(),e)}uint64Number(t){return this._push(Bs,Q(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=kt.fromBigInt(t).zzEncode();return this._push(On,e.length(),e)}sint64Number(t){let e=kt.fromNumber(t).zzEncode();return this._push(On,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(Xs,1,t?1:0)}fixed32(t){return this._push(Mr,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=kt.fromBigInt(t);return this._push(Mr,4,e.lo)._push(Mr,4,e.hi)}fixed64Number(t){let e=kt.fromNumber(t);return this._push(Mr,4,e.lo)._push(Mr,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(pc,4,t)}double(t){return this._push(gc,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(Xs,1,0):this.uint32(e)._push(wd,e,t)}string(t){let e=bc(t);return e!==0?this.uint32(e)._push(Ps,e,t):this._push(Xs,1,0)}fork(){return this.states=new Zs(this),this.head=this.tail=new qe($s,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new qe($s,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=gd(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function Xs(r,t,e){t[e]=r&255}function yd(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var Ys=class extends qe{next;constructor(t,e){super(yd,t,e),this.next=void 0}};function On(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Mr(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function wd(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Kr.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(bd,t,r),this},Kr.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(xd,t,r),this});function bd(r,t,e){t.set(r,e)}function xd(r,t,e){r.length<40?Ps(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(J(r),e)}function js(){return new Kr}function Zt(r,t){let e=js();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var ur;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(ur||(ur={}));function Mn(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Ge(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(s,i){let a=t(s);i.int32(a)},n=function(s){let i=s.int32();return t(i)};return Mn("enum",ur.VARINT,e,n)}function Yt(r,t){return Mn("message",ur.LENGTH_DELIMITED,r,t)}var gt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(gt||(gt={}));var Js;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(Js||(Js={}));(function(r){r.codec=()=>Ge(Js)})(gt||(gt={}));var Qt;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),gt.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=gt.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Zt(e,r.codec()),r.decode=(e,n)=>Xt(e,r.codec(),n)})(Qt||(Qt={}));var Qs;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),gt.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=gt.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Zt(e,r.codec()),r.decode=(e,n)=>Xt(e,r.codec(),n)})(Qs||(Qs={}));var Vr={};At(Vr,{MAX_RSA_KEY_SIZE:()=>oi,generateRSAKeyPair:()=>Hc,jwkToJWKKeyPair:()=>Vc,jwkToPkcs1:()=>Dd,jwkToPkix:()=>ii,jwkToRSAPrivateKey:()=>Fc,pkcs1ToJwk:()=>Oc,pkcs1ToRSAPrivateKey:()=>Kc,pkixToJwk:()=>Mc,pkixToRSAPublicKey:()=>ai});var Ed=new Uint32Array([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]),Te=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Le=new Uint32Array(64),ti=class extends ir{constructor(){super(64,32,8,!1),this.A=Te[0]|0,this.B=Te[1]|0,this.C=Te[2]|0,this.D=Te[3]|0,this.E=Te[4]|0,this.F=Te[5]|0,this.G=Te[6]|0,this.H=Te[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(t,e){for(let f=0;f<16;f++,e+=4)Le[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=Le[f-15],g=Le[f-2],b=qt(d,7)^qt(d,18)^d>>>3,m=qt(g,17)^qt(g,19)^g>>>10;Le[f]=m+Le[f-7]+b+Le[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=qt(a,6)^qt(a,11)^qt(a,25),g=u+d+za(a,c,l)+Ed[f]+Le[f]|0,m=(qt(n,2)^qt(n,13)^qt(n,22))+Wa(n,o,s)|0;u=l,l=c,c=a,a=i+g|0,i=s,s=o,o=n,n=g+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){Le.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var te=An(()=>new ti);function q(r,t="utf8"){let e=kn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}function yt(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=dt(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return e}var Cc=Symbol.for("@achingbrain/uint8arraylist");function Bc(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function Kn(r){return!!r?.[Cc]}var z=class r{bufs;length;[Cc]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Kn(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Kn(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Bc(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Bc(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Kn(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return yt(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:yt(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,t>=c)continue;let l=t>=a&&t<c,u=e>a&&e<=c;if(l&&u){if(t===a&&e===c){n.push(i);break}let f=t-a;n.push(i.subarray(f,f+(e-t)));break}if(l){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(u){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Kn(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=e;f<=c;f+=u){u=0;for(let d=l;d>=0;d--){let g=this.get(f+d);if(n[d]!==g){u=Math.max(1,d-a[g]);break}}if(u===0)return f}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=dt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=mt(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=dt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=mt(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Rt(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};var Ad=parseInt("11111",2),ri=parseInt("10000000",2),vd=parseInt("01111111",2),_c={2:Id,3:Bd,5:Ld,6:Td,16:ei,22:ei,48:ei};function Fr(r,t={offset:0}){let e=r[t.offset]&Ad;if(t.offset++,_c[e]!=null)return _c[e](r,t);throw new Error("No decoder for tag "+e)}function Fn(r,t){let e=0;if((r[t.offset]&ri)===ri){let n=r[t.offset]&vd,o="0x";t.offset++;for(let s=0;s<n;s++,t.offset++)o+=r[t.offset].toString(16).padStart(2,"0");e=parseInt(o,16)}else e=r[t.offset],t.offset++;return e}function ei(r,t){Fn(r,t);let e=[];for(;!(t.offset>=r.byteLength);){let n=Fr(r,t);if(n===null)break;e.push(n)}return e}function Id(r,t){let e=Fn(r,t),n=t.offset,o=t.offset+e,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return t.offset+=e,Uint8Array.from(s)}function Td(r,t){let e=Fn(r,t);return t.offset+=e,["oid-unimplemented"]}function Ld(r,t){return t.offset++,null}function Bd(r,t){let e=Fn(r,t),n=r[t.offset];t.offset++;let o=r.subarray(t.offset,t.offset+e);if(t.offset+=e,n!==0)throw new Error("Unused bits in bit string is unimplemented");return Fr(o,{offset:0})}function Cd(r){let t=r.toString(16);t.length%2===1&&(t="0"+t);let e=new z;for(let n=0;n<t.length;n+=2)e.append(Uint8Array.from([parseInt(`${t[n]}${t[n+1]}`,16)]));return e}function ni(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let t=Cd(r.byteLength);return new z(Uint8Array.from([t.byteLength|ri]),t)}function Ht(r){let t=new z,e=parseInt("10000000",2);return(r.subarray()[0]&e)===e&&t.append(Uint8Array.from([0])),t.append(r),new z(Uint8Array.from([2]),ni(t),t)}function Rc(r){let t=Uint8Array.from([0]),e=new z(t,r);return new z(Uint8Array.from([3]),ni(e),e)}function Hn(r){let t=new z;for(let e of r)t.append(e);return new z(Uint8Array.from([48]),ni(t),t)}var Hr=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},Vn=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var Pc={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new Vn("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return t}};var Be=Pc;async function Dc(r){let t=await Be.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await _d(t);return{privateKey:e[0],publicKey:e[1]}}async function Nc(r,t){let e=await Be.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Be.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function Uc(r,t,e){let n=await Be.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Be.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function _d(r){if(r.privateKey==null||r.publicKey==null)throw new rt("Private and public key are required");return Promise.all([Be.get().subtle.exportKey("jwk",r.privateKey),Be.get().subtle.exportKey("jwk",r.publicKey)])}function kc(r){if(r.kty!=="RSA")throw new rt("invalid key type");if(r.n==null)throw new rt("invalid key modulus");return J(r.n,"base64url").length*8}var fr=class{type="RSA";_key;_raw;_multihash;constructor(t,e){this._key=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=Vr.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return bt.createV1(114,this._multihash)}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return Uc(this._key,e,t)}},qr=class{type="RSA";_key;_raw;publicKey;constructor(t,e){this._key=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=Vr.jwkToPkcs1(this._key)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}sign(t){return Nc(this._key,t)}};var oi=8192,si=18,Rd=1062,Pd=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Oc(r){let t=Fr(r);return{n:q(t[1],"base64url"),e:q(t[2],"base64url"),d:q(t[3],"base64url"),p:q(t[4],"base64url"),q:q(t[5],"base64url"),dp:q(t[6],"base64url"),dq:q(t[7],"base64url"),qi:q(t[8],"base64url"),kty:"RSA"}}function Dd(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new rt("JWK was missing components");return Hn([Ht(Uint8Array.from([0])),Ht(J(r.n,"base64url")),Ht(J(r.e,"base64url")),Ht(J(r.d,"base64url")),Ht(J(r.p,"base64url")),Ht(J(r.q,"base64url")),Ht(J(r.dp,"base64url")),Ht(J(r.dq,"base64url")),Ht(J(r.qi,"base64url"))]).subarray()}function Mc(r){let t=Fr(r,{offset:0});return{kty:"RSA",n:q(t[1][0],"base64url"),e:q(t[1][1],"base64url")}}function ii(r){if(r.n==null||r.e==null)throw new rt("JWK was missing components");return Hn([Pd,Rc(Hn([Ht(J(r.n,"base64url")),Ht(J(r.e,"base64url"))]))]).subarray()}function Kc(r){let t=Oc(r);return Fc(t)}function ai(r,t){if(r.byteLength>=Rd)throw new je("Key size is too large");let e=Mc(r);if(t==null){let n=te(Qt.encode({Type:gt.RSA,Data:r}));t=vt(si,n)}return new fr(e,t)}function Fc(r){if(kc(r)>oi)throw new rt("Key size is too large");let t=Vc(r),e=te(Qt.encode({Type:gt.RSA,Data:ii(t.publicKey)})),n=vt(si,e);return new qr(t.privateKey,new fr(t.publicKey,n))}async function Hc(r){if(r>oi)throw new rt("Key size is too large");let t=await Dc(r),e=te(Qt.encode({Type:gt.RSA,Data:ii(t.publicKey)})),n=vt(si,e);return new qr(t.privateKey,new fr(t.publicKey,n))}function Vc(r){if(r==null)throw new rt("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var qn=class extends sr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,_r(t);let n=be(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?t.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=t.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(t){return or(this),this.iHash.update(t),this}digestInto(t){or(this),nr(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},hr=(r,t,e)=>new qn(r,t).update(e).digest();hr.create=(r,t)=>new qn(r,t);function qc(r){r.lowS!==void 0&&Gt("lowS",r.lowS),r.prehash!==void 0&&Gt("prehash",r.prehash)}function Nd(r){let t=Nr(r);Kt(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Ud,hexToBytes:kd}=Ln,ci=class extends Error{constructor(t=""){super(t)}},he={Err:ci,_tlv:{encode:(r,t)=>{let{Err:e}=he;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,o=ke(n);if(o.length/2&128)throw new e("tlv.encode: long form length too big");let s=n>127?ke(o.length/2|128):"";return ke(r)+s+o+t},decode(r,t){let{Err:e}=he,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let o=t[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let l=t.subarray(n,n+c);if(l.length!==c)throw new e("tlv.decode: length bytes not complete");if(l[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=he;if(r<de)throw new t("integer: negative integers are not allowed");let e=ke(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return e},decode(r){let{Err:t}=he;if(r[0]&128)throw new t("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ud(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=he,o=typeof r=="string"?kd(r):r;ar(o);let{v:s,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new t("invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(l)}},hexFromSig(r){let{_tlv:t,_int:e}=he,n=t.encode(2,e.encode(r.r)),o=t.encode(2,e.encode(r.s)),s=n+o;return t.encode(48,s)}},de=BigInt(0),wt=BigInt(1),rw=BigInt(2),Gc=BigInt(3),nw=BigInt(4);function Od(r){let t=Nd(r),{Fp:e}=t,n=ve(t.n,t.nBitLength),o=t.toBytes||((m,h,w)=>{let x=h.toAffine();return ue(Uint8Array.from([4]),e.toBytes(x.x),e.toBytes(x.y))}),s=t.fromBytes||(m=>{let h=m.subarray(1),w=e.fromBytes(h.subarray(0,e.BYTES)),x=e.fromBytes(h.subarray(e.BYTES,2*e.BYTES));return{x:w,y:x}});function i(m){let{a:h,b:w}=t,x=e.sqr(m),p=e.mul(x,m);return e.add(e.add(p,e.mul(m,h)),w)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return Pr(m,wt,t.n)}function c(m){let{allowedPrivateKeyLengths:h,nByteLength:w,wrapPrivateKey:x,n:p}=t;if(h&&typeof m!="bigint"){if(Se(m)&&(m=ae(m)),typeof m!="string"||!h.includes(m.length))throw new Error("invalid private key");m=m.padStart(w*2,"0")}let I;try{I=typeof m=="bigint"?m:ce(ot("private key",m,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof m)}return x&&(I=Z(I,p)),xt("private key",I,wt,p),I}function l(m){if(!(m instanceof d))throw new Error("ProjectivePoint expected")}let u=Me((m,h)=>{let{px:w,py:x,pz:p}=m;if(e.eql(p,e.ONE))return{x:w,y:x};let I=m.is0();h==null&&(h=I?e.ONE:e.inv(p));let R=e.mul(w,h),_=e.mul(x,h),v=e.mul(p,h);if(I)return{x:e.ZERO,y:e.ZERO};if(!e.eql(v,e.ONE))throw new Error("invZ was invalid");return{x:R,y:_}}),f=Me(m=>{if(m.is0()){if(t.allowInfinityPoint&&!e.is0(m.py))return;throw new Error("bad point: ZERO")}let{x:h,y:w}=m.toAffine();if(!e.isValid(h)||!e.isValid(w))throw new Error("bad point: x or y not FE");let x=e.sqr(w),p=i(h);if(!e.eql(x,p))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(h,w,x){if(this.px=h,this.py=w,this.pz=x,h==null||!e.isValid(h))throw new Error("x required");if(w==null||!e.isValid(w))throw new Error("y required");if(x==null||!e.isValid(x))throw new Error("z required");Object.freeze(this)}static fromAffine(h){let{x:w,y:x}=h||{};if(!h||!e.isValid(w)||!e.isValid(x))throw new Error("invalid affine point");if(h instanceof d)throw new Error("projective point not allowed");let p=I=>e.eql(I,e.ZERO);return p(w)&&p(x)?d.ZERO:new d(w,x,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(h){let w=e.invertBatch(h.map(x=>x.pz));return h.map((x,p)=>x.toAffine(w[p])).map(d.fromAffine)}static fromHex(h){let w=d.fromAffine(s(ot("pointHex",h)));return w.assertValidity(),w}static fromPrivateKey(h){return d.BASE.multiply(c(h))}static msm(h,w){return Rn(d,n,h,w)}_setWindowSize(h){b.setWindowSize(this,h)}assertValidity(){f(this)}hasEvenY(){let{y:h}=this.toAffine();if(e.isOdd)return!e.isOdd(h);throw new Error("Field doesn't support isOdd")}equals(h){l(h);let{px:w,py:x,pz:p}=this,{px:I,py:R,pz:_}=h,v=e.eql(e.mul(w,_),e.mul(I,p)),C=e.eql(e.mul(x,_),e.mul(R,p));return v&&C}negate(){return new d(this.px,e.neg(this.py),this.pz)}double(){let{a:h,b:w}=t,x=e.mul(w,Gc),{px:p,py:I,pz:R}=this,_=e.ZERO,v=e.ZERO,C=e.ZERO,L=e.mul(p,p),M=e.mul(I,I),N=e.mul(R,R),O=e.mul(p,I);return O=e.add(O,O),C=e.mul(p,R),C=e.add(C,C),_=e.mul(h,C),v=e.mul(x,N),v=e.add(_,v),_=e.sub(M,v),v=e.add(M,v),v=e.mul(_,v),_=e.mul(O,_),C=e.mul(x,C),N=e.mul(h,N),O=e.sub(L,N),O=e.mul(h,O),O=e.add(O,C),C=e.add(L,L),L=e.add(C,L),L=e.add(L,N),L=e.mul(L,O),v=e.add(v,L),N=e.mul(I,R),N=e.add(N,N),L=e.mul(N,O),_=e.sub(_,L),C=e.mul(N,M),C=e.add(C,C),C=e.add(C,C),new d(_,v,C)}add(h){l(h);let{px:w,py:x,pz:p}=this,{px:I,py:R,pz:_}=h,v=e.ZERO,C=e.ZERO,L=e.ZERO,M=t.a,N=e.mul(t.b,Gc),O=e.mul(w,I),F=e.mul(x,R),T=e.mul(p,_),B=e.add(w,x),E=e.add(I,R);B=e.mul(B,E),E=e.add(O,F),B=e.sub(B,E),E=e.add(w,p);let y=e.add(I,_);return E=e.mul(E,y),y=e.add(O,T),E=e.sub(E,y),y=e.add(x,p),v=e.add(R,_),y=e.mul(y,v),v=e.add(F,T),y=e.sub(y,v),L=e.mul(M,E),v=e.mul(N,T),L=e.add(v,L),v=e.sub(F,L),L=e.add(F,L),C=e.mul(v,L),F=e.add(O,O),F=e.add(F,O),T=e.mul(M,T),E=e.mul(N,E),F=e.add(F,T),T=e.sub(O,T),T=e.mul(M,T),E=e.add(E,T),O=e.mul(F,E),C=e.add(C,O),O=e.mul(y,E),v=e.mul(B,v),v=e.sub(v,O),O=e.mul(B,F),L=e.mul(y,L),L=e.add(L,O),new d(v,C,L)}subtract(h){return this.add(h.negate())}is0(){return this.equals(d.ZERO)}wNAF(h){return b.wNAFCached(this,h,d.normalizeZ)}multiplyUnsafe(h){let{endo:w,n:x}=t;xt("scalar",h,de,x);let p=d.ZERO;if(h===de)return p;if(this.is0()||h===wt)return this;if(!w||b.hasPrecomputes(this))return b.wNAFCachedUnsafe(this,h,d.normalizeZ);let{k1neg:I,k1:R,k2neg:_,k2:v}=w.splitScalar(h),C=p,L=p,M=this;for(;R>de||v>de;)R&wt&&(C=C.add(M)),v&wt&&(L=L.add(M)),M=M.double(),R>>=wt,v>>=wt;return I&&(C=C.negate()),_&&(L=L.negate()),L=new d(e.mul(L.px,w.beta),L.py,L.pz),C.add(L)}multiply(h){let{endo:w,n:x}=t;xt("scalar",h,wt,x);let p,I;if(w){let{k1neg:R,k1:_,k2neg:v,k2:C}=w.splitScalar(h),{p:L,f:M}=this.wNAF(_),{p:N,f:O}=this.wNAF(C);L=b.constTimeNegate(R,L),N=b.constTimeNegate(v,N),N=new d(e.mul(N.px,w.beta),N.py,N.pz),p=L.add(N),I=M.add(O)}else{let{p:R,f:_}=this.wNAF(h);p=R,I=_}return d.normalizeZ([p,I])[0]}multiplyAndAddUnsafe(h,w,x){let p=d.BASE,I=(_,v)=>v===de||v===wt||!_.equals(p)?_.multiplyUnsafe(v):_.multiply(v),R=I(this,w).add(I(h,x));return R.is0()?void 0:R}toAffine(h){return u(this,h)}isTorsionFree(){let{h,isTorsionFree:w}=t;if(h===wt)return!0;if(w)return w(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h,clearCofactor:w}=t;return h===wt?this:w?w(d,this):this.multiplyUnsafe(t.h)}toRawBytes(h=!0){return Gt("isCompressed",h),this.assertValidity(),o(d,this,h)}toHex(h=!0){return Gt("isCompressed",h),ae(this.toRawBytes(h))}}d.BASE=new d(t.Gx,t.Gy,e.ONE),d.ZERO=new d(e.ZERO,e.ONE,e.ZERO);let g=t.nBitLength,b=_n(d,t.endo?Math.ceil(g/2):g);return{CURVE:t,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function Md(r){let t=Nr(r);return Kt(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function zc(r){let t=Md(r),{Fp:e,n}=t,o=e.BYTES+1,s=2*e.BYTES+1;function i(T){return Z(T,n)}function a(T){return Bn(T,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=Od({...t,toBytes(T,B,E){let y=B.toAffine(),A=e.toBytes(y.x),S=ue;return Gt("isCompressed",E),E?S(Uint8Array.from([B.hasEvenY()?2:3]),A):S(Uint8Array.from([4]),A,e.toBytes(y.y))},fromBytes(T){let B=T.length,E=T[0],y=T.subarray(1);if(B===o&&(E===2||E===3)){let A=ce(y);if(!Pr(A,wt,e.ORDER))throw new Error("Point is not on curve");let S=u(A),P;try{P=e.sqrt(S)}catch(H){let K=H instanceof Error?": "+H.message:"";throw new Error("Point is not on curve"+K)}let D=(P&wt)===wt;return(E&1)===1!==D&&(P=e.neg(P)),{x:A,y:P}}else if(B===s&&E===4){let A=e.fromBytes(y.subarray(0,e.BYTES)),S=e.fromBytes(y.subarray(e.BYTES,2*e.BYTES));return{x:A,y:S}}else{let A=o,S=s;throw new Error("invalid Point, expected length of "+A+", or uncompressed "+S+", got "+B)}}}),d=T=>ae(Ae(T,t.nByteLength));function g(T){let B=n>>wt;return T>B}function b(T){return g(T)?i(-T):T}let m=(T,B,E)=>ce(T.slice(B,E));class h{constructor(B,E,y){this.r=B,this.s=E,this.recovery=y,this.assertValidity()}static fromCompact(B){let E=t.nByteLength;return B=ot("compactSignature",B,E*2),new h(m(B,0,E),m(B,E,2*E))}static fromDER(B){let{r:E,s:y}=he.toSig(ot("DER",B));return new h(E,y)}assertValidity(){xt("r",this.r,wt,n),xt("s",this.s,wt,n)}addRecoveryBit(B){return new h(this.r,this.s,B)}recoverPublicKey(B){let{r:E,s:y,recovery:A}=this,S=_(ot("msgHash",B));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let P=A===2||A===3?E+t.n:E;if(P>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let D=(A&1)===0?"02":"03",k=c.fromHex(D+d(P)),H=a(P),K=i(-S*H),G=i(y*H),X=c.BASE.multiplyAndAddUnsafe(k,K,G);if(!X)throw new Error("point at infinify");return X.assertValidity(),X}hasHighS(){return g(this.s)}normalizeS(){return this.hasHighS()?new h(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return Oe(this.toDERHex())}toDERHex(){return he.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Oe(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}let w={isValidPrivateKey(T){try{return l(T),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let T=gs(t.n);return ec(t.randomBytes(T),t.n)},precompute(T=8,B=c.BASE){return B._setWindowSize(T),B.multiply(BigInt(3)),B}};function x(T,B=!0){return c.fromPrivateKey(T).toRawBytes(B)}function p(T){let B=Se(T),E=typeof T=="string",y=(B||E)&&T.length;return B?y===o||y===s:E?y===2*o||y===2*s:T instanceof c}function I(T,B,E=!0){if(p(T))throw new Error("first arg must be private key");if(!p(B))throw new Error("second arg must be public key");return c.fromHex(B).multiply(l(T)).toRawBytes(E)}let R=t.bits2int||function(T){if(T.length>8192)throw new Error("input is too large");let B=ce(T),E=T.length*8-t.nBitLength;return E>0?B>>BigInt(E):B},_=t.bits2int_modN||function(T){return i(R(T))},v=Dr(t.nBitLength);function C(T){return xt("num < 2^"+t.nBitLength,T,de,v),Ae(T,t.nByteLength)}function L(T,B,E=M){if(["recovered","canonical"].some(it=>it in E))throw new Error("sign() legacy options not supported");let{hash:y,randomBytes:A}=t,{lowS:S,prehash:P,extraEntropy:D}=E;S==null&&(S=!0),T=ot("msgHash",T),qc(E),P&&(T=ot("prehashed msgHash",y(T)));let k=_(T),H=l(B),K=[C(H),C(k)];if(D!=null&&D!==!1){let it=D===!0?A(e.BYTES):D;K.push(ot("extraEntropy",it))}let G=ue(...K),X=k;function st(it){let lt=R(it);if(!f(lt))return;let St=a(lt),Pt=c.BASE.multiply(lt).toAffine(),_t=i(Pt.x);if(_t===de)return;let Jt=i(St*i(X+_t*H));if(Jt===de)return;let re=(Pt.x===_t?0:2)|Number(Pt.y&wt),Ir=Jt;return S&&g(Jt)&&(Ir=b(Jt),re^=1),new h(_t,Ir,re)}return{seed:G,k2sig:st}}let M={lowS:t.lowS,prehash:!1},N={lowS:t.lowS,prehash:!1};function O(T,B,E=M){let{seed:y,k2sig:A}=L(T,B,E),S=t;return fs(S.hash.outputLen,S.nByteLength,S.hmac)(y,A)}c.BASE._setWindowSize(8);function F(T,B,E,y=N){let A=T;B=ot("msgHash",B),E=ot("publicKey",E);let{lowS:S,prehash:P,format:D}=y;if(qc(y),"strict"in y)throw new Error("options.strict was renamed to lowS");if(D!==void 0&&D!=="compact"&&D!=="der")throw new Error("format must be compact or der");let k=typeof A=="string"||Se(A),H=!k&&!D&&typeof A=="object"&&A!==null&&typeof A.r=="bigint"&&typeof A.s=="bigint";if(!k&&!H)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let K,G;try{if(H&&(K=new h(A.r,A.s)),k){try{D!=="compact"&&(K=h.fromDER(A))}catch(re){if(!(re instanceof he.Err))throw re}!K&&D!=="der"&&(K=h.fromCompact(A))}G=c.fromHex(E)}catch{return!1}if(!K||S&&K.hasHighS())return!1;P&&(B=t.hash(B));let{r:X,s:st}=K,it=_(B),lt=a(st),St=i(it*lt),Pt=i(X*lt),_t=c.BASE.multiplyAndAddUnsafe(G,St,Pt)?.toAffine();return _t?i(_t.x)===X:!1}return{CURVE:t,getPublicKey:x,getSharedSecret:I,sign:O,verify:F,ProjectivePoint:c,Signature:h,utils:w}}function Kd(r){return{hash:r,hmac:(t,...e)=>hr(r,t,os(...e)),randomBytes:Rr}}function Wc(r,t){let e=n=>zc({...r,...Kd(n)});return{...e(t),create:e}}var Zc=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),$c=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Fd=BigInt(1),li=BigInt(2),Xc=(r,t)=>(r+t/li)/t;function Hd(r){let t=Zc,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%t,u=l*l*r%t,f=at(u,e,t)*u%t,d=at(f,e,t)*u%t,g=at(d,li,t)*l%t,b=at(g,o,t)*g%t,m=at(b,s,t)*b%t,h=at(m,a,t)*m%t,w=at(h,c,t)*h%t,x=at(w,a,t)*m%t,p=at(x,e,t)*u%t,I=at(p,i,t)*b%t,R=at(I,n,t)*l%t,_=at(R,li,t);if(!ui.eql(ui.sqr(_),r))throw new Error("Cannot find square root");return _}var ui=ve(Zc,void 0,void 0,{sqrt:Hd}),ze=Wc({a:BigInt(0),b:BigInt(7),Fp:ui,n:$c,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=$c,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Fd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=Xc(s*r,t),c=Xc(-n*r,t),l=Z(r-a*e-c*o,t),u=Z(-a*n-c*s,t),f=l>i,d=u>i;if(f&&(l=t-l),d&&(u=t-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}}},te),hw=BigInt(0);var dw=ze.ProjectivePoint;function Yc(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function jc(r,t,e){let n=fe.digest(e instanceof Uint8Array?e:e.subarray());if(Yc(n))return n.then(({digest:o})=>ze.verify(t,o,r)).catch(o=>{throw new Hr(String(o))});try{return ze.verify(t,n.digest,r)}catch(o){throw new Hr(String(o))}}var Gn=class{type="secp256k1";raw;_key;constructor(t){this._key=Qc(t),this.raw=Jc(this._key)}toMultihash(){return se.digest(lr(this))}toCID(){return bt.createV1(114,this.toMultihash())}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return jc(this._key,e,t)}};function fi(r){return new Gn(r)}function Jc(r){return ze.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Qc(r){try{return ze.ProjectivePoint.fromHex(r),r}catch(t){throw new je(String(t))}}function Gr(r,t){let{Type:e,Data:n}=Qt.decode(r),o=n??new Uint8Array;switch(e){case gt.RSA:return ai(o,t);case gt.Ed25519:return As(o);case gt.secp256k1:return fi(o);default:throw new De}}function tl(r){let{Type:t,Data:e}=Qt.decode(r.digest),n=e??new Uint8Array;switch(t){case gt.Ed25519:return As(n);case gt.secp256k1:return fi(n);default:throw new De}}function lr(r){return Qt.encode({Type:gt[r.type],Data:r.raw})}var el=Symbol.for("nodejs.util.inspect.custom"),Vd=114,zr=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Wo]=!0;toString(){return this.string==null&&(this.string=nt.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return bt.createV1(Vd,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return Rt(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return Rt(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[el](){return`PeerId(${this.toString()})`}},Wr=class extends zr{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},$r=class extends zr{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},Xr=class extends zr{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},qd=2336,zn=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=se.digest(J(this.url))}[el](){return`PeerId(${this.url})`}[Wo]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return bt.createV1(qd,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=q(t)),t.toString()===this.toString())}};function dr(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=we(nt.decode(`z${r}`));else{if(t==null)throw new rt('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=we(t.decode(r))}return Gd(e)}function hi(r){if(r.type==="Ed25519")return new $r({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Xr({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Wr({multihash:r.toCID().multihash,publicKey:r});throw new De}function Gd(r){if(Wd(r))return new Wr({multihash:r});if(zd(r))try{let t=tl(r);if(t.type==="Ed25519")return new $r({multihash:r,publicKey:t});if(t.type==="secp256k1")return new Xr({multihash:r,publicKey:t})}catch{let e=q(r.digest);return new zn(new URL(e))}throw new yn("Supplied PeerID Multihash is invalid")}function zd(r){return r.code===se.code}function Wd(r){return r.code===fe.code}var Wn=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,t);if(!Number.isNaN(d))return d});if(u===void 0)break;if(s*=t,s+=u,s>l||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var rl=45,$d=15,pr=new Wn;function di(r){if(!(r.length>$d))return pr.new(r).parseWith(()=>pr.readIPv4Addr())}function pi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>rl))return pr.new(r).parseWith(()=>pr.readIPv6Addr())}function $n(r,t=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>rl)return;let e=pr.new(r).parseWith(()=>pr.readIPAddr());if(e)return t&&e.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,e[0],e[1],e[2],e[3]]):e}var vb=parseInt("0xFFFF",16),Ib=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Xn(r){return!!di(r)}function Zn(r){return!!pi(r)}function Yn(r){return!!$n(r)}var sl=Xn,Jd=Zn,mi=function(r){let t=0;if(r=r.toString().trim(),sl(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Jd(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=sl(e[n]),i;s&&(i=mi(e[n]),e[n]=q(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,q(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},il=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var mr={},gi={},tp=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];tp.forEach(r=>{let t=ep(...r);gi[t.code]=t,mr[t.name]=t});function ep(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function et(r){if(typeof r=="number"){if(gi[r]!=null)return gi[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(mr[r]!=null)return mr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var cx=et("ip4"),lx=et("ip6"),ux=et("ipcidr");function xi(r,t){switch(et(r).code){case 4:case 41:return np(t);case 42:return bi(t);case 43:return q(t,"base10");case 6:case 273:case 33:case 132:return ll(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return bi(t);case 421:return ap(t);case 444:return cl(t);case 445:return cl(t);case 466:return ip(t);case 481:return globalThis.encodeURIComponent(bi(t));default:return q(t,"base16")}}function Ei(r,t){switch(et(r).code){case 4:return al(t);case 41:return al(t);case 42:return wi(t);case 43:return J(t,"base10");case 6:case 273:case 33:case 132:return Si(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return wi(t);case 421:return op(t);case 444:return cp(t);case 445:return lp(t);case 466:return sp(t);case 481:return wi(globalThis.decodeURIComponent(t));default:return J(t,"base16")}}var yi=Object.values(Ve).map(r=>r.decoder),rp=function(){let r=yi[0].or(yi[1]);return yi.slice(2).forEach(t=>r=r.or(t)),r}();function al(r){if(!Yn(r))throw new Error("invalid ip address");return mi(r)}function np(r){let t=il(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Yn(t))throw new Error("invalid ip address");return t}function Si(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function ll(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function wi(r){let t=J(r),e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function bi(r){let t=Ut(r);if(r=r.slice(Q(t)),r.length!==t)throw new Error("inconsistent lengths");return q(r)}function op(r){let t;r[0]==="Q"||r[0]==="1"?t=we(nt.decode(`z${r}`)).bytes:t=bt.parse(r).multihash.bytes;let e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function sp(r){let t=rp.decode(r),e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function ip(r){let t=Ut(r),e=r.slice(Q(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+q(e,"base64url")}function ap(r){let t=Ut(r),e=r.slice(Q(t));if(e.length!==t)throw new Error("inconsistent lengths");return q(e,"base58btc")}function cp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=oe.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Si(n);return yt([e,o],e.length+o.length)}function lp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=oe.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Si(n);return yt([e,o],e.length+o.length)}function cl(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=q(t,"base32"),o=ll(e);return`${n}:${o}`}function ul(r){r=Ai(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=et(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw new jn("invalid address: "+r);if(a.path===!0){n=Ai(o.slice(s).join("/")),t.push([a.code,Ei(a.code,n)]),e.push([a.code,n]);break}let c=Ei(a.code,o[s]);t.push([a.code,c]),e.push([a.code,xi(a.code,c)])}return{string:fl(e),bytes:Jn(t),tuples:t,stringTuples:e,path:n}}function vi(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=Ut(r,o),i=Q(s),a=et(s),c=up(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw new jn("Invalid address Uint8Array: "+q(r,"base16"));t.push([s,l]);let u=xi(s,l);if(e.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:fl(e),tuples:t,stringTuples:e,path:n}}function fl(r){let t=[];return r.map(e=>{let n=et(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Ai(t.join("/"))}function Jn(r){return yt(r.map(t=>{let e=et(t[0]),n=Uint8Array.from(Ft(e.code));return t.length>1&&t[1]!=null&&(n=yt([n,t[1]])),n}))}function up(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=Ut(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Q(e)}}function Ai(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}var jn=class extends Error{static name="ParseError";name="ParseError";constructor(t){super(`Error parsing address: ${t}`)}};var fp=Symbol.for("nodejs.util.inspect.custom"),Ti=Symbol.for("@multiformats/js-multiaddr/multiaddr"),hp=[et("dns").code,et("dns4").code,et("dns6").code,et("dnsaddr").code],Ii=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},Qn=class r{bytes;#t;#e;#r;#n;[Ti]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=vi(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=ul(t)}else if(dl(t))e=vi(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=et("tcp"),a=et("udp"),c=et("ip4"),l=et("ip6"),u=et("dns6"),f=et("ip6zone");for(let[g,b]of this.stringTuples())g===f.code&&(s=`%${b??""}`),hp.includes(g)&&(e=i.name==="tcp"?"tcp":"udp",o=443,n=`${b??""}${s}`,t=g===u.code?6:4),(g===i.code||g===a.code)&&(e=et(g).name==="tcp"?"tcp":"udp",o=parseInt(b??"")),(g===c.code||g===l.code)&&(e=et(g).name==="tcp"?"tcp":"udp",n=`${b??""}${s}`,t=g===l.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},et(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>et(t).name)}tuples(){return this.#e.map(([t,e])=>e==null?[t]:[t,e])}stringTuples(){return this.#r.map(([t,e])=>e==null?[t]:[t,e])}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Jn(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===mr.p2p.code&&t.push([n,o]),n===mr["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?q(nt.decode(`z${n}`),"base58btc"):q(bt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return Rt(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=hl.get(e.name);if(n==null)throw new Ii(`no available resolver for ${e.name}`);return(await n(this,t)).map(s=>ee(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[fp](){return`Multiaddr(${this.#t})`}};var hl=new Map;function dl(r){return!!r?.[Ti]}function ee(r){return new Qn(r)}var dp=r=>r.toString().split("/").slice(1),gr=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),W=r=>({match:t=>gr(e=>e===r).match(t),pattern:r}),We=()=>({match:r=>gr(t=>typeof t=="string").match(r),pattern:"{string}"}),Zr=()=>({match:r=>gr(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),tt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{nt.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Yr=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Or.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Y=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),Lt=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),$=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function ct(...r){function t(o){let s=dp(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matchers:r,matches:e,exactMatch:n}}var eo=$(W("dns4"),We()),ro=$(W("dns6"),We()),no=$(W("dnsaddr"),We()),Bi=$(W("dns"),We()),Hx=ct(eo,Y(tt())),Vx=ct(ro,Y(tt())),qx=ct(no,Y(tt())),Gx=ct(Lt(Bi,no,eo,ro),Y(tt())),pl=$(W("ip4"),gr(Xn)),ml=$(W("ip6"),gr(Zn)),Ci=Lt(pl,ml),pe=Lt(Ci,Bi,eo,ro,no),zx=ct(Lt(Ci,$(Lt(Bi,no,eo,ro),Y(tt())))),Wx=ct(pl),$x=ct(ml),Xx=ct(Ci),_i=$(pe,W("tcp"),Zr()),jr=$(pe,W("udp"),Zr()),Zx=ct($(_i,Y(tt()))),Yx=ct(jr),Ri=$(jr,W("quic"),Y(tt())),oo=$(jr,W("quic-v1"),Y(tt())),pp=Lt(Ri,oo),jx=ct(Ri),Jx=ct(oo),Li=Lt(pe,_i,jr,Ri,oo),gl=Lt($(Li,W("ws"),Y(tt()))),Qx=ct(gl),yl=Lt($(Li,W("wss"),Y(tt())),$(Li,W("tls"),Y($(W("sni"),We())),W("ws"),Y(tt()))),t1=ct(yl),wl=$(jr,W("webrtc-direct"),Y(Yr()),Y(Yr()),Y(tt())),bl=ct(wl),xl=$(oo,W("webtransport"),Y(Yr()),Y(Yr()),Y(tt())),e1=ct(xl),to=Lt(gl,yl,$(_i,Y(tt())),$(pp,Y(tt())),$(pe,Y(tt())),wl,xl,tt()),El=ct(to),mp=$(to,W("p2p-circuit"),tt()),r1=ct(mp),gp=Lt($(to,W("p2p-circuit"),W("webrtc"),Y(tt())),$(to,W("webrtc"),Y(tt())),$(W("webrtc"),Y(tt()))),Sl=ct(gp),yp=Lt($(pe,W("tcp"),Zr(),W("http"),Y(tt())),$(pe,W("http"),Y(tt()))),n1=ct(yp),wp=Lt($(pe,W("tcp"),Lt($(W("443"),W("http")),$(Zr(),W("https"))),Y(tt())),$(pe,W("tls"),W("http"),Y(tt())),$(pe,W("https"),Y(tt()))),o1=ct(wp),bp=Lt($(W("memory"),We(),Y(tt()))),s1=ct(bp);var Bt;(function(r){let t;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(t=r.Flag||(r.Flag={}));let e;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(e||(e={})),function(o){o.codec=()=>Ge(e)}(t=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=Yt((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.flag=r.Flag.codec().decode(o);break}case 2:{a.message=o.bytes();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Zt(o,r.codec()),r.decode=(o,s)=>Xt(o,r.codec(),s)})(Bt||(Bt={}));var Al=["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478","stun:stun.cloudflare.com:3478","stun:stun.services.mozilla.com:3478"],Pi=Array.from("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"),vl="libp2p+webrtc+v1/";var Il=466,Tl=2*1024*1024,Ll=30*1e3,yr=16*1024;function xp(r=yr){let t=Q(r-Q(r)),e=1+Q(Object.keys(Bt.Flag).length-1),n=1,o=r-t-e-n,s=Q(o);return t+e+n+s}var Bl=xp(),Cl=5e3,_l=5e3,Rl=301e3,Di="/webrtc",Jr="/webrtc-signaling/0.0.1";var Pl=function(r,t,e){if(e||arguments.length===2)for(var n=0,o=t.length,s;n<o;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return r.concat(s||Array.prototype.slice.call(t))},Ep=function(){function r(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"}return r}();var Sp=function(){function r(t){this.version=t,this.type="node",this.name="node",this.os=process.platform}return r}();var Ap=function(){function r(t,e,n,o){this.name=t,this.version=e,this.os=n,this.bot=o,this.type="bot-device"}return r}();var vp=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var Ip=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var Tp=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,Lp=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,Dl=3,Bp=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",Tp]],Nl=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function kl(r){return r?Ul(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Ip:typeof navigator<"u"?Ul(navigator.userAgent):Rp()}function Cp(r){return r!==""&&Bp.reduce(function(t,e){var n=e[0],o=e[1];if(t)return t;var s=o.exec(r);return!!s&&[n,s]},!1)}function Ul(r){var t=Cp(r);if(!t)return null;var e=t[0],n=t[1];if(e==="searchbot")return new vp;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<Dl&&(o=Pl(Pl([],o,!0),Pp(Dl-o.length),!0)):o=[];var s=o.join("."),i=_p(r),a=Lp.exec(r);return a&&a[1]?new Ap(e,s,i,a[1]):new Ep(e,s,i)}function _p(r){for(var t=0,e=Nl.length;t<e;t++){var n=Nl[t],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function Rp(){var r=typeof process<"u"&&process.version;return r?new Sp(process.version.slice(1)):null}function Pp(r){for(var t=[],e=0;e<r;e++)t.push("0");return t}function ht(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ni=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},Ui=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},Ol=r=>globalThis.DOMException===void 0?new Ui(r):new DOMException(r),Ml=r=>{let t=r.reason===void 0?Ol("This operation was aborted."):r.reason;return t instanceof Error?t:Ol(t)};function Qr(r,t){let{milliseconds:e,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=t,i,a,l=new Promise((u,f)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(t.signal){let{signal:g}=t;g.aborted&&f(Ml(g)),a=()=>{f(Ml(g))},g.addEventListener("abort",a,{once:!0})}if(e===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new Ni;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(g){f(g)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${e} milliseconds`,f(d))},e),(async()=>{try{u(await r)}catch(g){f(g)}})()}).finally(()=>{l.clear(),a&&t.signal&&t.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var Kl=kl(),tn=Kl!=null&&Kl.name==="firefox",so=async function*(){},io=async r=>{};function Fl(r,t,e=Rl,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",t,r.bufferedAmount);let o=ht(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",t),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await Qr(o.promise,{milliseconds:e})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}async function ki(r){return r=r??{},typeof r=="function"&&(r=await r()),r.iceServers=r.iceServers??Al.map(t=>({urls:[t]})),r}var Hl=(r=32)=>vl+[...Array(r)].map(()=>Pi.at(Math.floor(Math.random()*Pi.length))).join("");var $e=class{log;peerConnection;remoteAddr;timeline;metrics;source=so();sink=io;constructor(t,e){this.log=t.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=e.remoteAddr,this.timeline=e.timeline,this.peerConnection=e.peerConnection;let n=this.peerConnection,o=n.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",n.connectionState,"initial state",o),(n.connectionState==="disconnected"||n.connectionState==="failed"||n.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(t){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(t){this.log.error("closing connection due to error",t),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var ao=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||(t-1&t)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},wr=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new ao(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new ao(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var Oi=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Ce(r={}){return Dp(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Dp(r,t){t=t??{};let e=t.onEnd,n=new wr,o,s,i,a=ht(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((h,w)=>{s=x=>{s=null,n.push(x);try{h(r(n))}catch(p){w(p)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ht()})}},l=h=>s!=null?s(h):(n.push(h),o),u=h=>(n=new wr,s!=null?s({error:h}):(n.push({error:h}),o)),f=h=>{if(i)return o;if(t?.objectMode!==!0&&h?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:h})},d=h=>i?o:(i=!0,h!=null?u(h):l({done:!0})),g=()=>(n=new wr,d(),{done:!0}),b=h=>(d(h),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:g,throw:b,push:f,end:d,get readableLength(){return n.size},onEmpty:async h=>{let w=h?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let x,p;w!=null&&(x=new Promise((I,R)=>{p=()=>{R(new Oi)},w.addEventListener("abort",p)}));try{await Promise.race([a.promise,x])}finally{p!=null&&w!=null&&w?.removeEventListener("abort",p)}}},e==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(h){return m.throw(h),e!=null&&(e(h),e=void 0),{done:!0}},return(){return m.return(),e!=null&&(e(),e=void 0),{done:!0}},push:f,end(h){return m.end(h),e!=null&&(e(h),e=void 0),o},get readableLength(){return m.readableLength},onEmpty:h=>m.onEmpty(h)},o}var co=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function jt(r,t,e){if(t==null)return r;if(t.aborted)return r.catch(()=>{}),Promise.reject(new co(e?.errorMessage,e?.errorCode,e?.errorName));let n,o=new co(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}function Vl(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function ql(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Gl(r,t){let e=Vl(r).return?.();ql(e)&&e.catch(n=>{t.error("could not cause iterator to return",n)})}var Np=5e3;function Mi(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var lo=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(t){this.sinkController=new AbortController,this.sinkEnd=ht(),this.closed=ht(),this.log=t.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=t.id,this.metadata=t.metadata??{},this.direction=t.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=t.sendCloseWriteTimeout??Np,this.onEnd=t.onEnd,this.onCloseRead=t?.onCloseRead,this.onCloseWrite=t?.onCloseWrite,this.onReset=t?.onReset,this.onAbort=t?.onAbort,this.source=this.streamSource=Ce({onEnd:e=>{e!=null?this.log.trace("source ended with error",e):this.log.trace("source ended"),this.onSourceEnd(e)}}),this.sink=this.sink.bind(this)}async sink(t){if(this.writeStatus!=="ready")throw new Pe(`writable end state is "${this.writeStatus}" not "ready"`);try{this.writeStatus="writing";let e={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(e);Mi(o)&&await o}let n=()=>{Gl(t,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of t){o=o instanceof Uint8Array?new z(o):o;let s=this.sendData(o,e);Mi(s)&&(this.sendingData=ht(),await s,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(e){throw this.log.trace("sink ended with error, calling abort with error",e),this.abort(e),e}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(t){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",t!=null&&this.endErr==null&&(this.endErr=t),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(t){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",t!=null&&this.endErr==null&&(this.endErr=t),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(t){this.status==="open"&&(this.log.trace("closing gracefully"),this.status="closing",await jt(Promise.all([this.closeWrite(t),this.closeRead(t),this.closed.promise]),t?.signal),this.status="closed",this.log.trace("closed gracefully"))}async closeRead(t={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let e=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(t)),e==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(t={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await jt(this.sink([]),t.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await jt(this.sendingData.promise,t.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await jt(this.sinkEnd.promise,t.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(t){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",t),this.log("try to send reset to remote");let e=this.sendReset();Mi(e)&&e.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(t),this.onAbort?.(t)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let t=new gn("stream reset");this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(t),this.onReset?.()}_closeSinkAndSource(t){this._closeSink(t),this._closeSource(t)}_closeSink(t){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(t)}_closeSource(t){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(t))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(t){this.streamSource.push(t)}sourceReadableLength(){return this.streamSource.readableLength}};function Ki(r){let t=new globalThis.AbortController;function e(){t.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}for(let s of r){if(s?.aborted===!0){e();break}s?.addEventListener!=null&&s.addEventListener("abort",e)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}let o=t.signal;return o.clear=n,o}var uo=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},br=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},fo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},en=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ho(r){return r[Symbol.asyncIterator]!=null}function zl(r,t){if(r.byteLength>t)throw new br("Message length too long")}var mo=r=>{let t=Q(r),e=dt(t);return Ft(r,e),mo.bytes=t,e};mo.bytes=0;function rn(r,t){t=t??{};let e=t.lengthEncoder??mo,n=t?.maxDataLength??4194304;function*o(s){zl(s,n);let i=e(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ho(r)?async function*(){for await(let s of r)yield*o(s)}():function*(){for(let s of r)yield*o(s)}()}rn.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??mo,n=t?.maxDataLength??4194304;return zl(r,n),new z(e(r.byteLength),r)};var Xe;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Xe||(Xe={}));var Fi=r=>{let t=Ut(r);return Fi.bytes=Q(t),t};Fi.bytes=0;function nn(r,t){let e=new z,n=Xe.LENGTH,o=-1,s=t?.lengthDecoder??Fi,i=t?.maxLengthLength??8,a=t?.maxDataLength??4194304;function*c(){for(;e.byteLength>0;){if(n===Xe.LENGTH)try{if(o=s(e),o<0)throw new uo("Invalid message length");if(o>a)throw new br("Message length too long");let l=s.bytes;e.consume(l),t?.onLength!=null&&t.onLength(o),n=Xe.DATA}catch(l){if(l instanceof RangeError){if(e.byteLength>i)throw new fo("Message length length too long");break}throw l}if(n===Xe.DATA){if(e.byteLength<o)break;let l=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(l),yield l,n=Xe.LENGTH}}}return ho(r)?async function*(){for await(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new en("Unexpected end of input")}():function*(){for(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new en("Unexpected end of input")}()}nn.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return nn(n,{...t??{},onLength:s=>{e=s}})};var Hi=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function on(r,t,e,n){let o=new Hi(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){e?.removeEventListener("abort",u),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(d){a(),i(d);return}a(),s(f)},l=f=>{a(),i(f.detail)},u=()=>{a(),i(o)};e?.addEventListener("abort",u),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Vi=class extends lo{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;closeController;constructor(t){let e=t.onEnd;switch(t.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await Qr(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),this.channel.close(),e?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(t),this.channel=t.channel,this.channel.binaryType="arraybuffer",this.incomingData=Ce(),this.bufferedAmountLowEventTimeout=t.bufferedAmountLowEventTimeout??Ll,this.maxBufferedAmount=t.maxBufferedAmount??Tl,this.maxMessageSize=(t.maxMessageSize??yr)-Bl,this.receiveFinAck=ht(),this.finAckTimeout=t.closeTimeout??Cl,this.openTimeout=t.openTimeout??_l,this.closeController=new AbortController,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new Pe("Unknown datachannel state")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.log.trace("received onclose event"),this.closeController.abort(),this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{this.log.trace("received onerror event"),this.closeController.abort();let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of nn(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new z(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(t,e=!0){if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new Pe(`Invalid datachannel state - ${this.channel.readyState}`);if(this.channel.readyState!=="open"){let n=AbortSignal.timeout(this.openTimeout),o=Ki([this.closeController.signal,n]);try{this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await on(this.channel,"open",o)}finally{o.clear()}this.log('channel state is now "%s", sending data',this.channel.readyState)}if(e&&this.channel.bufferedAmount>this.maxBufferedAmount){let n=AbortSignal.timeout(this.bufferedAmountLowEventTimeout),o=Ki([this.closeController.signal,n]);try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await on(this.channel,"bufferedamountlow",o)}catch(s){throw n.aborted?new bn(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`):s}finally{o.clear()}}try{this.channel.send(t.subarray())}catch(n){this.log.error("error while sending message",n)}}async sendData(t){for(this.log.trace("-> will send %d bytes",t.byteLength),t=t.sublist();t.byteLength>0;){let e=Math.min(t.byteLength,this.maxMessageSize),n=t.subarray(0,e),o=Bt.encode({message:n}),s=rn.single(o);this.log.trace("-> sending message %s",this.channel.readyState),await this._sendMessage(s),this.log.trace("-> sent message %s",this.channel.readyState),t.consume(e)}this.log.trace("-> sent data %s",this.channel.readyState)}async sendReset(){try{await this._sendFlag(Bt.Flag.RESET)}catch(t){this.log.error("failed to send reset - %e",t)}}async sendCloseWrite(t){if(this.channel.readyState!=="open"){this.receiveFinAck.resolve();return}if(await this._sendFlag(Bt.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await jt(this.receiveFinAck.promise,t?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorName:"FinAckNotReceivedError"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){this.channel.readyState==="open"&&await this._sendFlag(Bt.Flag.STOP_SENDING)}processIncomingProtobuf(t){let e=Bt.decode(t);if(e.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',e.flag,this.writeStatus,this.readStatus),e.flag===Bt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Bt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),e.flag===Bt.Flag.RESET&&this.reset(),e.flag===Bt.Flag.STOP_SENDING&&this.remoteCloseRead(),e.flag===Bt.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return e.message}async _sendFlag(t){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,t.toString()),!1;this.log.trace("sending flag %s",t.toString());let e=Bt.encode({flag:t}),n=rn.single(e);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s - %e",t.toString(),o)}return!1}};function xr(r){let{channel:t,direction:e}=r;return new Vi({id:e==="inbound"?`i${t.id}`:`r${t.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${e}:${t.id}`),...r})}var _e=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(t,e){this.components=t,this.peerConnection=e.peerConnection,this.metrics=e.metrics,this.protocol=e.protocol??Di,this.dataChannelOptions=e.dataChannelOptions??{},this.log=t.logger.forComponent("libp2p:webrtc:muxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=xr({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:t.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(t){return new qi(this.components,{...t,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},qi=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(t,e){this.init=e,this.log=t.logger.forComponent("libp2p:webrtc:muxer"),this.logger=t.logger,this.streams=e.streams.map(n=>n.stream),this.peerConnection=e.peerConnection,this.protocol=e.protocol??Di,this.metrics=e.metrics,this.dataChannelOptions=e.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=n.id,s=xr({channel:n,direction:"inbound",onEnd:()=>{this.#t(s,n),this.log("incoming channel %s ended",o)},logger:this.logger,...this.dataChannelOptions});this.streams.push(s),this.metrics?.increment({incoming_stream:!0}),e?.onIncomingStream?.(s)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#t(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#t(t,e){this.log.trace("stream %s %s %s onEnd",t.direction,t.id,t.protocol),Fl(e,`${t.direction} ${t.id} ${t.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==t.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(t)}async close(t){try{await Promise.all(this.streams.map(async e=>e.close(t)))}catch(e){this.abort(e)}}abort(t){for(let e of this.streams)e.abort(t)}source=so();sink=io;newStream(){let t=this.peerConnection.createDataChannel(""),e=t.id;this.log.trace("opened outgoing datachannel with channel id %s",e);let n=xr({channel:t,direction:"outbound",onEnd:()=>{this.#t(n,t),this.log("outgoing channel %s ended",e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(n),this.metrics?.increment({outgoing_stream:!0}),n}};var go=globalThis.RTCPeerConnection,yo=globalThis.RTCSessionDescription,Wl=globalThis.RTCIceCandidate;var Gi=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ht(),this.haveNext=ht()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ht(),t}async throw(t){return this.ended=!0,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ht(),await jt(this.readNext.promise,e?.signal,e)}};function $l(){return new Gi}var wo=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var zi=class extends Error{code;constructor(t,e){super(t),this.code=e}},Wi=class extends zi{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Xl(r,t){let e=$l();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new z;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new Wi("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:f,value:d}=await Promise.race([n.next(),l]);return f===!0?new z:d}for(;o.byteLength<i;){let{value:f,done:d}=await Promise.race([n.next(),l]);if(d===!0)throw new wo("unexpected end of input");o.append(f)}let u=o.sublist(0,i);return o.consume(i),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var bo=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},xo=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Eo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function sn(r,t={}){let e=Xl(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=Q(t.maxDataLength));let n=t?.lengthDecoder??Ut,o=t?.lengthEncoder??Ft;return{read:async i=>{let a=-1,c=new z;for(;;){c.append(await e.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new bo("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Eo("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new xo("message length too long");return e.read(a,i)},write:async(i,a)=>{await e.write(new z(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new z(...i.flatMap(l=>[o(l.byteLength),l]));await e.write(c,a)},unwrap:()=>e.unwrap()}}function So(r,t){let e=sn(r,t),n={read:async(o,s)=>{let i=await e.read(s);return o.decode(i)},write:async(o,s,i)=>{await e.write(s.encode(o),i)},writeV:async(o,s,i)=>{await e.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var Ot=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Re=class extends Error{constructor(t){super(`WebRTC transport error: ${t}`),this.name="WebRTCTransportError"}},Vt=class extends Re{constructor(t="SDP handshake failed"){super(t),this.name="SDPHandshakeFailedError"}};var Ao=class extends Re{constructor(t,e){super(`Invalid fingerprint "${t}" within ${e}`),this.name="WebRTC/InvalidFingerprintError"}};var vo=class extends Re{constructor(t){super(`A method (${t}) was called though it has been intentionally left unimplemented.`),this.name="WebRTC/UnimplementedError"}},Io=class extends Re{constructor(t){super(`unsupported hash algorithm code: ${t} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `),this.name="WebRTC/UnsupportedHashAlgorithmError"}};var Nt;(function(r){let t;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(t=r.Type||(r.Type={}));let e;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(e||(e={})),function(o){o.codec=()=>Ge(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Yt((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(o);break}case 2:{a.data=o.string();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Zt(o,r.codec()),r.decode=(o,s)=>Xt(o,r.codec(),s)})(Nt||(Nt={}));var To=async(r,t,e)=>{try{let n=ht();for(Op(r,n);;){let o=await Promise.race([n.promise,t.read({signal:e.signal}).catch(()=>{})]);if(o==null){e.signal?.throwIfAborted();break}if(o.type!==Nt.Type.ICE_CANDIDATE)throw new wn("ICE candidate message expected");let s=JSON.parse(o.data??"null");if(s===""||s===null){e.onProgress?.(new Ot("webrtc:end-of-ice-candidates")),e.log.trace("end-of-candidates received");continue}let i=new Wl(s);e.log.trace("%s received new ICE candidate %o",e.direction,s);try{e.onProgress?.(new Ot("webrtc:add-ice-candidate",i.candidate)),await r.addIceCandidate(i)}catch(a){e.log.error("%s bad candidate received",e.direction,s,a)}}}catch(n){if(e.log.error("%s error parsing ICE candidate",e.direction,n),e.signal?.aborted===!0&&Lo(r)!=="connected")throw n}};function Lo(r){return tn?r.iceConnectionState:r.connectionState}function Op(r,t){r[tn?"oniceconnectionstatechange":"onconnectionstatechange"]=e=>{switch(Lo(r)){case"connected":t.resolve();break;case"failed":case"disconnected":case"closed":t.reject(new mn("RTCPeerConnection was closed"));break;default:break}}}async function Zl({rtcConfiguration:r,dataChannel:t,signal:e,metrics:n,multiaddr:o,connectionManager:s,transportManager:i,log:a,logger:c,onProgress:l}){let{baseAddr:u}=Yl(o);n?.dialerEvents.increment({open:!0}),a.trace("dialing base address: %a",u);let f=u.getPeerId();if(f==null)throw new rt("Relay peer was missing");let d=s.getConnections(dr(f)),g,b=!1;d.length===0?(l?.(new Ot("webrtc:dial-relay")),g=await i.dial(u,{signal:e,onProgress:l}),b=!0):(l?.(new Ot("webrtc:reuse-relay-connection")),g=d[0]);try{l?.(new Ot("webrtc:open-signaling-stream"));let m=await g.newStream(Jr,{signal:e,runOnLimitedConnection:!0}),h=So(m).pb(Nt),w=new go(r),x=new _e({logger:c},{peerConnection:w,dataChannelOptions:t});try{let p=w.createDataChannel("init");w.onicecandidate=({candidate:v})=>{let C=JSON.stringify(v?.toJSON()??null);a.trace("initiator sending ICE candidate %o",v),h.write({type:Nt.Type.ICE_CANDIDATE,data:C},{signal:e}).catch(L=>{a.error("error sending ICE candidate",L)})},w.onicecandidateerror=v=>{a.error("initiator ICE candidate error",v)};let I=await w.createOffer().catch(v=>{throw a.error("could not execute createOffer",v),new Vt("Failed to set createOffer")});a.trace("initiator send SDP offer %s",I.sdp),l?.(new Ot("webrtc:send-sdp-offer")),await h.write({type:Nt.Type.SDP_OFFER,data:I.sdp},{signal:e}),await w.setLocalDescription(I).catch(v=>{throw a.error("could not execute setLocalDescription",v),new Vt("Failed to set localDescription")}),l?.(new Ot("webrtc:read-sdp-answer")),a.trace("initiator read SDP answer");let R=await h.read({signal:e});if(R.type!==Nt.Type.SDP_ANSWER)throw new Vt("Remote should send an SDP answer");a.trace("initiator received SDP answer %s",R.data);let _=new yo({type:"answer",sdp:R.data});return await w.setRemoteDescription(_).catch(v=>{throw a.error("could not execute setRemoteDescription",v),new Vt("Failed to set remoteDescription")}),a.trace("initiator read candidates until connected"),l?.(new Ot("webrtc:read-ice-candidates")),await To(w,h,{direction:"initiator",signal:e,log:a,onProgress:l}),a.trace("initiator connected, closing init channel"),p.close(),l?.(new Ot("webrtc:close-signaling-stream")),a.trace("closing signaling channel"),await m.close({signal:e}),a.trace("initiator connected to remote address %s",o),{remoteAddress:o,peerConnection:w,muxerFactory:x}}catch(p){throw a.error("outgoing signaling error",p),w.close(),m.abort(p),p}finally{w.onicecandidate=null,w.onicecandidateerror=null}}finally{if(b)try{await g.close({signal:e})}catch(m){g.abort(m)}}}var jl=ct(El.matchers[0],W("p2p-circuit")),Bo=class r extends Je{transportManager;shutdownController;events;constructor(t,e){super(),this.transportManager=t.transportManager,this.events=t.events,this.shutdownController=e.shutdownController,this.onTransportListening=this.onTransportListening.bind(this)}async listen(){this.events.addEventListener("transport:listening",this.onTransportListening)}onTransportListening(t){t.detail.getAddrs().filter(n=>jl.exactMatch(n)).map(n=>n.encapsulate("/webrtc")).length>0&&this.safeDispatchEvent("listening")}getAddrs(){return this.transportManager.getListeners().filter(t=>!(t instanceof r)).map(t=>t.getAddrs().filter(e=>jl.exactMatch(e)).map(e=>e.encapsulate("/webrtc"))).flat()}updateAnnounceAddrs(){}async close(){this.events.removeEventListener("transport:listening",this.onTransportListening),this.shutdownController.abort(),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};async function Jl({peerConnection:r,stream:t,signal:e,connection:n,log:o}){o.trace("new inbound signaling stream");let s=So(t).pb(Nt);try{r.onicecandidate=({candidate:u})=>{let f=JSON.stringify(u?.toJSON()??null);o.trace("recipient sending ICE candidate %s",f),s.write({type:Nt.Type.ICE_CANDIDATE,data:f},{signal:e}).catch(d=>{o.error("error sending ICE candidate",d)})},o.trace("recipient read SDP offer");let a=await s.read({signal:e});if(a.type!==Nt.Type.SDP_OFFER)throw new Vt(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `);o.trace("recipient received SDP offer %s",a.data);let c=new yo({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(u=>{throw o.error("could not execute setRemoteDescription",u),new Vt("Failed to set remoteDescription")});let l=await r.createAnswer().catch(u=>{throw o.error("could not execute createAnswer",u),new Vt("Failed to create answer")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:Nt.Type.SDP_ANSWER,data:l.sdp},{signal:e}),await r.setLocalDescription(l).catch(u=>{throw o.error("could not execute setLocalDescription",u),new Vt("Failed to set localDescription")}),o.trace("recipient read candidates until connected"),await To(r,s,{direction:"recipient",signal:e,log:o})}catch(a){if(Lo(r)!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=ee(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var Co=class{components;init;log;_started=!1;metrics;shutdownController;constructor(t,e={}){this.components=t,this.init=e,this.log=t.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,this.shutdownController.signal,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:t.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}[dn]=!0;[Symbol.toStringTag]="@libp2p/webrtc";[Qe]=["@libp2p/transport"];[Ba]=["@libp2p/identify","@libp2p/circuit-relay-v2-transport"];isStarted(){return this._started}async start(){await this.components.registrar.handle(Jr,t=>{let e=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);this._onProtocol(t,e).catch(n=>{this.log.error("failed to handle incoming connect from %p",t.connection.remotePeer,n)}).finally(()=>{e.clear()})},{runOnLimitedConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(Jr),this._started=!1}createListener(t){return new Bo(this.components,{shutdownController:this.shutdownController})}listenFilter(t){return t.filter(Sl.exactMatch)}dialFilter(t){return this.listenFilter(t)}async dial(t,e){this.log.trace("dialing address: %a",t);let{remoteAddress:n,peerConnection:o,muxerFactory:s}=await Zl({rtcConfiguration:await ki(this.init.rtcConfiguration),dataChannel:this.init.dataChannel,multiaddr:t,dataChannelOptions:this.init.dataChannel,signal:e.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log,logger:this.components.logger,onProgress:e.onProgress}),i=new $e(this.components,{peerConnection:o,timeline:{open:Date.now()},remoteAddr:n,metrics:this.metrics?.dialerEvents}),a=await e.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:s,onProgress:e.onProgress,signal:e.signal});return this._closeOnShutdown(o,i),a}async _onProtocol({connection:t,stream:e},n){let o=new go(await ki(this.init.rtcConfiguration)),s=new _e(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await Jl({peerConnection:o,connection:t,stream:e,signal:n,log:this.log});await e.close({signal:n});let a=new $e(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s,signal:n}),this._closeOnShutdown(o,a)}catch(i){throw this.log.error("incoming signaling error",i),o.close(),e.abort(i),i}}_closeOnShutdown(t,e){let n=()=>{e.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),t.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function Yl(r){let t=r.toString().split("/webrtc/");if(t.length!==2)throw new rt("webrtc protocol was not present in multiaddr");if(!t[0].includes("/p2p-circuit"))throw new rt("p2p-circuit protocol was not present in multiaddr");let e=ee(t[0]),o=ee("/"+t[1]).getPeerId();if(o==null)throw new rt("destination peer id was missing");let s=e.protos().pop();if(s===void 0)throw new rt("invalid multiaddr");return s.name!=="p2p"&&(e=e.encapsulate(`/p2p/${o}`)),{baseAddr:e,peerId:dr(o)}}var _o=class extends Je{async listen(){throw new vo("WebRTCTransport.createListener")}getAddrs(){return[]}updateAnnounceAddrs(){}async close(){}};function Ro(r){return r[Symbol.asyncIterator]!=null}var Po=r=>{let t=Q(r),e=dt(t);return Ft(r,e),Po.bytes=t,e};Po.bytes=0;function Ql(r,t){t=t??{};let e=t.lengthEncoder??Po;function*n(o){let s=e(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Ro(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Ql.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??Po;return new z(e(r.byteLength),r)};var Do=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},No=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Uo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},an=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var Mp=8,Kp=1024*1024*4,Ze;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ze||(Ze={}));var $i=r=>{let t=Ut(r);return $i.bytes=Q(t),t};$i.bytes=0;function cn(r,t){let e=new z,n=Ze.LENGTH,o=-1,s=t?.lengthDecoder??$i,i=t?.maxLengthLength??Mp,a=t?.maxDataLength??Kp;function*c(){for(;e.byteLength>0;){if(n===Ze.LENGTH)try{if(o=s(e),o<0)throw new Do("Invalid message length");if(o>a)throw new No("Message length too long");let l=s.bytes;e.consume(l),t?.onLength!=null&&t.onLength(o),n=Ze.DATA}catch(l){if(l instanceof RangeError){if(e.byteLength>i)throw new Uo("Message length length too long");break}throw l}if(n===Ze.DATA){if(e.byteLength<o)break;let l=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(l),yield l,n=Ze.LENGTH}}}return Ro(r)?async function*(){for await(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new an("Unexpected end of input")}():function*(){for(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new an("Unexpected end of input")}()}cn.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return cn(n,{...t??{},onLength:s=>{e=s}})};function Xi(){let r=ht(),t=!1;return{sink:async e=>{if(t)throw new Error("already piped");t=!0,r.resolve(e)},source:async function*(){yield*await r.promise}()}}function tu(){let r=Xi(),t=Xi();return[{source:r.source,sink:t.sink},{source:t.source,sink:r.sink}]}function Fp(r){return r[Symbol.asyncIterator]!=null}function Hp(...r){let t=[];for(let e of r)Fp(e)||t.push(e);return t.length===r.length?function*(){for(let e of t)yield*e}():async function*(){let e=Ce({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)e.push(o)})),e.end()}catch(n){e.end(n)}}),yield*e}()}var eu=Hp;function ru(r,...t){if(r==null)throw new Error("Empty pipeline");if(Zi(r)){let n=r;r=()=>n.source}else if(ou(r)||nu(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&Zi(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)Zi(e[n])&&(e[n]=qp(e[n]));return Vp(...e)}var Vp=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},nu=r=>r?.[Symbol.asyncIterator]!=null,ou=r=>r?.[Symbol.iterator]!=null,Zi=r=>r==null?!1:r.sink!=null&&r.source!=null,qp=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=Ce({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(nu(s))o=async function*(){yield*s,n.end()};else if(ou(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return eu(n,o())}return r.source};var Er=!!globalThis.process?.env?.DUMP_SESSION_KEYS;function ko(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Yi(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Ct(r,...t){if(!Yi(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function ji(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function su(r,t){Ct(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function Ji(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}var me=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4)),iu=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Gp=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Gp)throw new Error("Non little-endian hardware is not supported");function zp(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function Oo(r){if(typeof r=="string")r=zp(r);else if(Yi(r))r=Mo(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function au(r,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(r,t)}function cu(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}var Qi=(r,t)=>{function e(n,...o){if(Ct(n),r.nonceLength!==void 0){let u=o[0];if(!u)throw new Error("nonce / iv required");r.varSizeNonce?Ct(u):Ct(u,r.nonceLength)}let s=r.tagLength;s&&o[1]!==void 0&&Ct(o[1]);let i=t(n,...o),a=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ct(f)}},c=!1;return{encrypt(u,f){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,Ct(u),a(i.encrypt.length,f),i.encrypt(u,f)},decrypt(u,f){if(Ct(u),s&&u.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return a(i.decrypt.length,f),i.decrypt(u,f)}}}return Object.assign(e,r),e};function ta(r,t,e=!0){if(t===void 0)return new Uint8Array(r);if(t.length!==r)throw new Error("invalid output length, expected "+r+", got: "+t.length);if(e&&!Wp(t))throw new Error("invalid output, must be aligned");return t}function ea(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,l=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+l,a,n)}function Wp(r){return r.byteOffset%4===0}function Mo(r){return Uint8Array.from(r)}function ge(...r){for(let t=0;t<r.length;t++)r[t].fill(0)}var uu=r=>Uint8Array.from(r.split("").map(t=>t.charCodeAt(0))),$p=uu("expand 16-byte k"),Xp=uu("expand 32-byte k"),Zp=me($p),Yp=me(Xp);function U(r,t){return r<<t|r>>>32-t}function ra(r){return r.byteOffset%4===0}var Ko=64,jp=16,fu=2**32-1,lu=new Uint32Array;function Jp(r,t,e,n,o,s,i,a){let c=o.length,l=new Uint8Array(Ko),u=me(l),f=ra(o)&&ra(s),d=f?me(o):lu,g=f?me(s):lu;for(let b=0;b<c;i++){if(r(t,e,n,u,i,a),i>=fu)throw new Error("arx: counter overflow");let m=Math.min(Ko,c-b);if(f&&m===Ko){let h=b/4;if(b%4!==0)throw new Error("arx: invalid block position");for(let w=0,x;w<jp;w++)x=h+w,g[x]=d[x]^u[w];b+=Ko;continue}for(let h=0,w;h<m;h++)w=b+h,s[w]=o[w]^l[h];b+=m}}function na(r,t){let{allowShortKeys:e,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=au({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof r!="function")throw new Error("core must be a function");return ko(o),ko(i),Ji(s),Ji(e),(a,c,l,u,f=0)=>{Ct(a),Ct(c),Ct(l);let d=l.length;if(u===void 0&&(u=new Uint8Array(d)),Ct(u),ko(f),f<0||f>=fu)throw new Error("arx: counter overflow");if(u.length<d)throw new Error(`arx: output (${u.length}) is shorter than data (${d})`);let g=[],b=a.length,m,h;if(b===32)g.push(m=Mo(a)),h=Yp;else if(b===16&&e)m=new Uint8Array(32),m.set(a),m.set(a,16),h=Zp,g.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${b}`);ra(c)||g.push(c=Mo(c));let w=me(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(h,w,me(c.subarray(0,16)),w),c=c.subarray(16)}let x=16-o;if(x!==c.length)throw new Error(`arx: nonce must be ${x} or 16 bytes`);if(x!==12){let I=new Uint8Array(12);I.set(c,s?0:12-c.length),c=I,g.push(c)}let p=me(c);return Jp(r,h,w,p,l,u,f,i),ge(...g),u}}var Et=(r,t)=>r[t++]&255|(r[t++]&255)<<8,oa=class{constructor(t){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,t=Oo(t),Ct(t,32);let e=Et(t,0),n=Et(t,2),o=Et(t,4),s=Et(t,6),i=Et(t,8),a=Et(t,10),c=Et(t,12),l=Et(t,14);this.r[0]=e&8191,this.r[1]=(e>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=Et(t,16+2*u)}process(t,e,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],u=i[3],f=i[4],d=i[5],g=i[6],b=i[7],m=i[8],h=i[9],w=Et(t,e+0),x=Et(t,e+2),p=Et(t,e+4),I=Et(t,e+6),R=Et(t,e+8),_=Et(t,e+10),v=Et(t,e+12),C=Et(t,e+14),L=s[0]+(w&8191),M=s[1]+((w>>>13|x<<3)&8191),N=s[2]+((x>>>10|p<<6)&8191),O=s[3]+((p>>>7|I<<9)&8191),F=s[4]+((I>>>4|R<<12)&8191),T=s[5]+(R>>>1&8191),B=s[6]+((R>>>14|_<<2)&8191),E=s[7]+((_>>>11|v<<5)&8191),y=s[8]+((v>>>8|C<<8)&8191),A=s[9]+(C>>>5|o),S=0,P=S+L*a+M*(5*h)+N*(5*m)+O*(5*b)+F*(5*g);S=P>>>13,P&=8191,P+=T*(5*d)+B*(5*f)+E*(5*u)+y*(5*l)+A*(5*c),S+=P>>>13,P&=8191;let D=S+L*c+M*a+N*(5*h)+O*(5*m)+F*(5*b);S=D>>>13,D&=8191,D+=T*(5*g)+B*(5*d)+E*(5*f)+y*(5*u)+A*(5*l),S+=D>>>13,D&=8191;let k=S+L*l+M*c+N*a+O*(5*h)+F*(5*m);S=k>>>13,k&=8191,k+=T*(5*b)+B*(5*g)+E*(5*d)+y*(5*f)+A*(5*u),S+=k>>>13,k&=8191;let H=S+L*u+M*l+N*c+O*a+F*(5*h);S=H>>>13,H&=8191,H+=T*(5*m)+B*(5*b)+E*(5*g)+y*(5*d)+A*(5*f),S+=H>>>13,H&=8191;let K=S+L*f+M*u+N*l+O*c+F*a;S=K>>>13,K&=8191,K+=T*(5*h)+B*(5*m)+E*(5*b)+y*(5*g)+A*(5*d),S+=K>>>13,K&=8191;let G=S+L*d+M*f+N*u+O*l+F*c;S=G>>>13,G&=8191,G+=T*a+B*(5*h)+E*(5*m)+y*(5*b)+A*(5*g),S+=G>>>13,G&=8191;let X=S+L*g+M*d+N*f+O*u+F*l;S=X>>>13,X&=8191,X+=T*c+B*a+E*(5*h)+y*(5*m)+A*(5*b),S+=X>>>13,X&=8191;let st=S+L*b+M*g+N*d+O*f+F*u;S=st>>>13,st&=8191,st+=T*l+B*c+E*a+y*(5*h)+A*(5*m),S+=st>>>13,st&=8191;let it=S+L*m+M*b+N*g+O*d+F*f;S=it>>>13,it&=8191,it+=T*u+B*l+E*c+y*a+A*(5*h),S+=it>>>13,it&=8191;let lt=S+L*h+M*m+N*b+O*g+F*d;S=lt>>>13,lt&=8191,lt+=T*f+B*u+E*l+y*c+A*a,S+=lt>>>13,lt&=8191,S=(S<<2)+S|0,S=S+P|0,P=S&8191,S=S>>>13,D+=S,s[0]=P,s[1]=D,s[2]=k,s[3]=H,s[4]=K,s[5]=G,s[6]=X,s[7]=st,s[8]=it,s[9]=lt}finalize(){let{h:t,pad:e}=this,n=new Uint16Array(10),o=t[1]>>>13;t[1]&=8191;for(let a=2;a<10;a++)t[a]+=o,o=t[a]>>>13,t[a]&=8191;t[0]+=o*5,o=t[0]>>>13,t[0]&=8191,t[1]+=o,o=t[1]>>>13,t[1]&=8191,t[2]+=o,n[0]=t[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=t[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)t[a]=t[a]&s|n[a];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let i=t[0]+e[0];t[0]=i&65535;for(let a=1;a<8;a++)i=(t[a]+e[a]|0)+(i>>>16)|0,t[a]=i&65535;ge(n)}update(t){ji(this);let{buffer:e,blockLen:n}=this;t=Oo(t);let o=t.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(t,s);continue}e.set(t.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(e,0,!1),this.pos=0)}return this}destroy(){ge(this.h,this.r,this.buffer,this.pad)}digestInto(t){ji(this),su(t,this),this.finished=!0;let{buffer:e,h:n}=this,{pos:o}=this;if(o){for(e[o++]=1;o<16;o++)e[o]=0;this.process(e,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)t[s++]=n[i]>>>0,t[s++]=n[i]>>>8;return t}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}};function Qp(r){let t=(n,o)=>r(o).update(Oo(n)).digest(),e=r(new Uint8Array(32));return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>r(n),t}var hu=Qp(r=>new oa(r));function mu(r,t,e,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],u=t[0],f=t[1],d=t[2],g=t[3],b=t[4],m=t[5],h=t[6],w=t[7],x=o,p=e[0],I=e[1],R=e[2],_=i,v=a,C=c,L=l,M=u,N=f,O=d,F=g,T=b,B=m,E=h,y=w,A=x,S=p,P=I,D=R;for(let H=0;H<s;H+=2)_=_+M|0,A=U(A^_,16),T=T+A|0,M=U(M^T,12),_=_+M|0,A=U(A^_,8),T=T+A|0,M=U(M^T,7),v=v+N|0,S=U(S^v,16),B=B+S|0,N=U(N^B,12),v=v+N|0,S=U(S^v,8),B=B+S|0,N=U(N^B,7),C=C+O|0,P=U(P^C,16),E=E+P|0,O=U(O^E,12),C=C+O|0,P=U(P^C,8),E=E+P|0,O=U(O^E,7),L=L+F|0,D=U(D^L,16),y=y+D|0,F=U(F^y,12),L=L+F|0,D=U(D^L,8),y=y+D|0,F=U(F^y,7),_=_+N|0,D=U(D^_,16),E=E+D|0,N=U(N^E,12),_=_+N|0,D=U(D^_,8),E=E+D|0,N=U(N^E,7),v=v+O|0,A=U(A^v,16),y=y+A|0,O=U(O^y,12),v=v+O|0,A=U(A^v,8),y=y+A|0,O=U(O^y,7),C=C+F|0,S=U(S^C,16),T=T+S|0,F=U(F^T,12),C=C+F|0,S=U(S^C,8),T=T+S|0,F=U(F^T,7),L=L+M|0,P=U(P^L,16),B=B+P|0,M=U(M^B,12),L=L+M|0,P=U(P^L,8),B=B+P|0,M=U(M^B,7);let k=0;n[k++]=i+_|0,n[k++]=a+v|0,n[k++]=c+C|0,n[k++]=l+L|0,n[k++]=u+M|0,n[k++]=f+N|0,n[k++]=d+O|0,n[k++]=g+F|0,n[k++]=b+T|0,n[k++]=m+B|0,n[k++]=h+E|0,n[k++]=w+y|0,n[k++]=x+A|0,n[k++]=p+S|0,n[k++]=I+P|0,n[k++]=R+D|0}function tm(r,t,e,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=t[0],l=t[1],u=t[2],f=t[3],d=t[4],g=t[5],b=t[6],m=t[7],h=e[0],w=e[1],x=e[2],p=e[3];for(let R=0;R<20;R+=2)o=o+c|0,h=U(h^o,16),d=d+h|0,c=U(c^d,12),o=o+c|0,h=U(h^o,8),d=d+h|0,c=U(c^d,7),s=s+l|0,w=U(w^s,16),g=g+w|0,l=U(l^g,12),s=s+l|0,w=U(w^s,8),g=g+w|0,l=U(l^g,7),i=i+u|0,x=U(x^i,16),b=b+x|0,u=U(u^b,12),i=i+u|0,x=U(x^i,8),b=b+x|0,u=U(u^b,7),a=a+f|0,p=U(p^a,16),m=m+p|0,f=U(f^m,12),a=a+f|0,p=U(p^a,8),m=m+p|0,f=U(f^m,7),o=o+l|0,p=U(p^o,16),b=b+p|0,l=U(l^b,12),o=o+l|0,p=U(p^o,8),b=b+p|0,l=U(l^b,7),s=s+u|0,h=U(h^s,16),m=m+h|0,u=U(u^m,12),s=s+u|0,h=U(h^s,8),m=m+h|0,u=U(u^m,7),i=i+f|0,w=U(w^i,16),d=d+w|0,f=U(f^d,12),i=i+f|0,w=U(w^i,8),d=d+w|0,f=U(f^d,7),a=a+c|0,x=U(x^a,16),g=g+x|0,c=U(c^g,12),a=a+c|0,x=U(x^a,8),g=g+x|0,c=U(c^g,7);let I=0;n[I++]=o,n[I++]=s,n[I++]=i,n[I++]=a,n[I++]=h,n[I++]=w,n[I++]=x,n[I++]=p}var em=na(mu,{counterRight:!1,counterLength:4,allowShortKeys:!1}),rm=na(mu,{counterRight:!1,counterLength:8,extendNonceFn:tm,allowShortKeys:!1});var nm=new Uint8Array(16),du=(r,t)=>{r.update(t);let e=t.length%16;e&&r.update(nm.subarray(e))},om=new Uint8Array(32);function pu(r,t,e,n,o){let s=r(t,e,om),i=hu.create(s);o&&du(i,o),du(i,n);let a=new Uint8Array(16),c=iu(a);ea(c,0,BigInt(o?o.length:0),!0),ea(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return ge(s,a),l}var gu=r=>(t,e,n)=>({encrypt(s,i){let a=s.length;i=ta(a+16,i,!1),i.set(s);let c=i.subarray(0,-16);r(t,e,c,c,1);let l=pu(r,t,e,c,n);return i.set(l,a),ge(l),i},decrypt(s,i){i=ta(s.length-16,i,!1);let a=s.subarray(0,-16),c=s.subarray(-16),l=pu(r,t,e,a,n);if(!cu(c,l))throw new Error("invalid tag");return i.set(s.subarray(0,-16)),r(t,e,i,i,1),ge(l),i}}),sa=Qi({blockSize:64,nonceLength:12,tagLength:16},gu(em)),mS=Qi({blockSize:64,nonceLength:24,tagLength:16},gu(rm));function wu(r,t,e){return _r(r),e===void 0&&(e=new Uint8Array(r.outputLen)),hr(r,be(e),be(t))}var ia=new Uint8Array([0]),yu=new Uint8Array;function bu(r,t,e,n=32){if(_r(r),En(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);e===void 0&&(e=yu);let s=new Uint8Array(o*r.outputLen),i=hr.create(r,t),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)ia[0]=l+1,a.update(l===0?yu:c).update(e).update(ia).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),ia.fill(0),s.slice(0,n)}var aa={hashSHA256(r){return te(r.subarray())},getHKDF(r,t){let e=wu(te,t,r),o=bu(te,e,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=kr.utils.randomPrivateKey();return{publicKey:kr.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:kr.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,t){return kr.getSharedSecret(r.subarray(),t.subarray())},chaCha20Poly1305Encrypt(r,t,e,n){return sa(n,t,e).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,t,e,n,o){return sa(n,t,e).decrypt(r.subarray(),o)}};var xu=aa;function Eu(r){return{generateKeypair:r.generateX25519KeyPair,dh:(t,e)=>r.generateX25519SharedKey(t.privateKey,e).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Sr=r=>{let t=dt(2);return t[0]=r>>8,t[1]=r,t};Sr.bytes=2;var ln=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let t=0;return t+=r[0]<<8,t+=r[1],t}return r.getUint16(0)};ln.bytes=2;function Su(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function ca(r,t){!t.enabled||!Er||(r?(t(`LOCAL_STATIC_PUBLIC_KEY ${q(r.publicKey,"hex")}`),t(`LOCAL_STATIC_PRIVATE_KEY ${q(r.privateKey,"hex")}`)):t("Missing local static keys."))}function la(r,t){!t.enabled||!Er||(r?(t(`LOCAL_PUBLIC_EPHEMERAL_KEY ${q(r.publicKey,"hex")}`),t(`LOCAL_PRIVATE_EPHEMERAL_KEY ${q(r.privateKey,"hex")}`)):t("Missing local ephemeral keys."))}function Au(r,t){!t.enabled||!Er||t(r?`REMOTE_STATIC_PUBLIC_KEY ${q(r.subarray(),"hex")}`:"Missing remote static public key.")}function ua(r,t){!t.enabled||!Er||t(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${q(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function fa(r,t,e){!e.enabled||!Er||(e(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&q(r.k,"hex")}`),e(`CIPHER_STATE_2 ${t.n.getUint64()} ${t.k&&q(t.k,"hex")}`))}var Ar=class r extends Error{code;constructor(t="Invalid crypto exchange"){super(t),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var sm=0,im=4294967295,am="Cipherstate has reached maximum n, a new handshake must be performed",Fo=class{n;bytes;view;constructor(t=sm){this.n=t,this.bytes=mt(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,t,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>im)throw new Error(am)}};var Ye=mt(0),vr=class{k;n;crypto;constructor(t,e=void 0,n=0){this.crypto=t,this.k=e,this.n=new Fo(n)}hasKey(){return!!this.k}encryptWithAd(t,e){if(!this.hasKey())return e;this.n.assertValue();let n=this.crypto.encrypt(e,this.n.getBytes(),t,this.k);return this.n.increment(),n}decryptWithAd(t,e,n){if(!this.hasKey())return e;this.n.assertValue();let o=this.crypto.decrypt(e,this.n.getBytes(),t,this.k,n);return this.n.increment(),o}},ha=class{cs;ck;h;crypto;constructor(t,e){this.crypto=t;let n=J(e,"utf-8");this.h=cm(t,n),this.ck=this.h,this.cs=new vr(t)}mixKey(t){let[e,n]=this.crypto.hkdf(this.ck,t);this.ck=e,this.cs=new vr(this.crypto,n)}mixHash(t){this.h=this.crypto.hash(new z(this.h,t))}encryptAndHash(t){let e=this.cs.encryptWithAd(this.h,t);return this.mixHash(e),e}decryptAndHash(t){let e=this.cs.decryptWithAd(this.h,t);return this.mixHash(t),e}split(){let[t,e]=this.crypto.hkdf(this.ck,Ye);return[new vr(this.crypto,t),new vr(this.crypto,e)]}},da=class{ss;s;e;rs;re;initiator;crypto;constructor(t){let{crypto:e,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=t;this.crypto=e,this.ss=new ha(e,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let t=this.crypto.generateKeypair();return this.ss.mixHash(t.publicKey),this.e=t,t.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(t,e=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(t.byteLength<e+32)throw new Error("message is not long enough");this.re=t.sublist(e,e+32),this.ss.mixHash(this.re)}readS(t,e=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(t.byteLength<e+n)throw new Error("message is not long enough");let o=t.sublist(e,e+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},un=class extends da{writeMessageA(t){return new z(this.writeE(),this.ss.encryptAndHash(t))}writeMessageB(t){let e=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new z(e,n,this.ss.encryptAndHash(t))}writeMessageC(t){let e=this.writeS();return this.writeSE(),new z(e,this.ss.encryptAndHash(t))}readMessageA(t){try{return this.readE(t),this.ss.decryptAndHash(t.sublist(32))}catch(e){throw new Ar(`handshake stage 0 validation fail: ${e.message}`)}}readMessageB(t){try{this.readE(t),this.readEE();let e=this.readS(t,32);return this.readES(),this.ss.decryptAndHash(t.sublist(32+e))}catch(e){throw new Ar(`handshake stage 1 validation fail: ${e.message}`)}}readMessageC(t){try{let e=this.readS(t);return this.readSE(),this.ss.decryptAndHash(t.sublist(e))}catch(e){throw new Ar(`handshake stage 2 validation fail: ${e.message}`)}}};function cm(r,t){if(t.length<=32){let e=mt(32);return e.set(t),e}else return r.hash(t)}var Ho;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),e.webtransportCerthashes!=null)for(let s of e.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(e,n)=>{let o={webtransportCerthashes:[]},s=n==null?e.len:e.pos+n;for(;e.pos<s;){let i=e.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(e.bytes());break}default:{e.skipType(i&7);break}}}return o})),t),r.encode=e=>Zt(e,r.codec()),r.decode=e=>Xt(e,r.codec())})(Ho||(Ho={}));var fn;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.identityKey!=null&&e.identityKey.byteLength>0&&(n.uint32(10),n.bytes(e.identityKey)),e.identitySig!=null&&e.identitySig.byteLength>0&&(n.uint32(18),n.bytes(e.identitySig)),e.extensions!=null&&(n.uint32(34),Ho.codec().encode(e.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(e,n)=>{let o={identityKey:mt(0),identitySig:mt(0)},s=n==null?e.len:e.pos+n;for(;e.pos<s;){let i=e.uint32();switch(i>>>3){case 1:{o.identityKey=e.bytes();break}case 2:{o.identitySig=e.bytes();break}case 4:{o.extensions=Ho.codec().decode(e,e.uint32());break}default:{e.skipType(i&7);break}}}return o})),t),r.encode=e=>Zt(e,r.codec()),r.decode=e=>Xt(e,r.codec())})(fn||(fn={}));async function pa(r,t,e){let n=await r.sign(vu(t));return fn.encode({identityKey:lr(r.publicKey),identitySig:n,extensions:e})}async function ma(r,t,e){try{let n=fn.decode(r),o=Gr(n.identityKey);if(e?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${e}`);if(!t)throw new Error("Remote static does not exist");let s=vu(t);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new pn(n.message)}}function vu(r){let t=J("noise-libp2p-static-key:");return r instanceof Uint8Array?yt([t,r],t.length+r.length):(r.prepend(t),r)}async function Iu(r,t){let{log:e,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await pa(s,a.publicKey,l),f=new un({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});ca(f.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await n.write(f.writeMessageA(Ye),t),e.trace("Stage 0 - Initiator finished sending first message."),la(f.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let d=f.readMessageB(await n.read(t));e.trace("Stage 1 - Initiator received the message."),ua(f.re,e),Au(f.rs,e),e.trace("Initiator going to check remote's signature...");let g=await ma(d,f.rs,c);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await n.write(f.writeMessageC(u),t),e.trace("Stage 2 - Initiator sent message with signed payload.");let[b,m]=f.ss.split();return fa(b,m,e),{payload:g,encrypt:h=>b.encryptWithAd(Ye,h),decrypt:(h,w)=>m.decryptWithAd(Ye,h,w)}}async function Tu(r,t){let{log:e,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await pa(s,a.publicKey,l),f=new un({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});ca(f.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await n.read(t)),e.trace("Stage 0 - Responder received first message."),ua(f.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(f.writeMessageB(u),t),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),la(f.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let d=f.readMessageC(await n.read(t));e.trace("Stage 2 - Responder received the message, finished handshake.");let g=await ma(d,f.rs,c),[b,m]=f.ss.split();return fa(b,m,e),{payload:g,encrypt:h=>m.encryptWithAd(Ye,h),decrypt:(h,w)=>b.decryptWithAd(Ye,h,w)}}var Bu=16;function Cu(r,t){return async function*(e){for await(let n of e)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),t?.encryptedPackets.increment(),yield new z(Sr(i.byteLength),i)}}}function _u(r,t){return async function*(e){for await(let n of e)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Bu<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Bu);try{let c=r.decrypt(i,a);t?.decryptedPackets.increment(),yield c}catch(c){throw t?.decryptErrors.increment(),c}}}}var Vo=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(t,e={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=e,{metrics:a}=t;this.components=t;let c=s??xu;this.crypto=Eu(c),this.extensions=o,this.metrics=a?Su(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??mt(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[Qe]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(t,e){let n=sn(t,{lengthEncoder:Sr,lengthDecoder:ln,maxDataLength:65535}),o=await this.performHandshakeInitiator(n,this.components.privateKey,e?.remotePeer?.publicKey,e),s=await this.createSecureConnection(n,o);t.source=s.source,t.sink=s.sink;let i=Gr(o.payload.identityKey);return{conn:t,remoteExtensions:o.payload.extensions,remotePeer:hi(i)}}async secureInbound(t,e){let n=sn(t,{lengthEncoder:Sr,lengthDecoder:ln,maxDataLength:65535}),o=await this.performHandshakeResponder(n,this.components.privateKey,e?.remotePeer?.publicKey,e),s=await this.createSecureConnection(n,o);t.source=s.source,t.sink=s.sink;let i=Gr(o.payload.identityKey);return{conn:t,remoteExtensions:o.payload.extensions,remotePeer:hi(i)}}async performHandshakeInitiator(t,e,n,o){let s;try{s=await Iu({connection:t,privateKey:e,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions},o),this.metrics?.xxHandshakeSuccesses.increment()}catch(i){throw this.metrics?.xxHandshakeErrors.increment(),i}return s}async performHandshakeResponder(t,e,n,o){let s;try{s=await Tu({connection:t,privateKey:e,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions},o),this.metrics?.xxHandshakeSuccesses.increment()}catch(i){throw this.metrics?.xxHandshakeErrors.increment(),i}return s}async createSecureConnection(t,e){let[n,o]=tu(),s=t.unwrap();return await ru(n,Cu(e,this.metrics),s,i=>cn(i,{lengthDecoder:ln}),_u(e,this.metrics),n),o}};function Ru(r={}){return t=>new Vo(t,r)}var ga=Object.values(Ve).map(r=>r.decoder).reduce((r,t)=>r.or(t)),lm=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function Pu(r){return r?.match(lm)?.groups?.fingerprint}function ya(r){let e=r.stringTuples().filter(n=>n[0]===Il).map(n=>n[1])[0];if(e===void 0||e==="")throw new rt(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return e}function um(r){return Mt.decode(ga.decode(r))}function fm(r){let t=um(ya(r)),e=hm(t.code),n=t.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw new Ao(n,r.toString());return`${e} ${o.join(":").toUpperCase()}`}function Du(r){let t=r.split(":").map(o=>parseInt(o,16)),e=Uint8Array.from(t),n=vt(fe.code,e);return ee(`/certhash/${Or.encode(n.bytes)}`)}function hm(r){switch(r){case 17:return"sha-1";case 18:return"sha-256";case 19:return"sha-512";default:throw new Io(r)}}function Nu(r,t){let{host:e,port:n,family:o}=r.toOptions(),s=fm(r);return{type:"answer",sdp:`v=0
2
+ "use strict";var Libp2PWebrtc=(()=>{var zo=Object.defineProperty;var Xu=Object.getOwnPropertyDescriptor;var Zu=Object.getOwnPropertyNames;var Yu=Object.prototype.hasOwnProperty;var At=(r,t)=>{for(var e in t)zo(r,e,{get:t[e],enumerable:!0})},ju=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zu(t))!Yu.call(r,o)&&o!==e&&zo(r,o,{get:()=>t[o],enumerable:!(n=Xu(t,o))||n.enumerable});return r};var Ju=r=>ju(zo({},"__esModule",{value:!0}),r);var bm={};At(bm,{webRTC:()=>wm,webRTCDirect:()=>ym});var Wo=Symbol.for("@libp2p/peer-id");var dn=Symbol.for("@libp2p/transport");var La;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(La||(La={}));var pn=class extends Error{static name="UnexpectedPeerError";constructor(t="Unexpected Peer"){super(t),this.name="UnexpectedPeerError"}};var rt=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},je=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}};var mn=class extends Error{static name="ConnectionFailedError";constructor(t="Connection failed"){super(t),this.name="ConnectionFailedError"}};var gn=class extends Error{static name="StreamResetError";constructor(t="The stream has been reset"){super(t),this.name="StreamResetError"}},Pe=class extends Error{static name="StreamStateError";constructor(t="The stream is in an invalid state"){super(t),this.name="StreamStateError"}};var yn=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}};var wn=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var bn=class extends Error{static name="TimeoutError";constructor(t="Timed out"){super(t),this.name="TimeoutError"}};var De=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Je=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};var Qe=Symbol.for("@libp2p/service-capabilities"),Ba=Symbol.for("@libp2p/service-dependencies");var jo={};At(jo,{base58btc:()=>nt,base58flickr:()=>of});var $m=new Uint8Array(0);function Ca(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ne(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function _a(r){return new TextEncoder().encode(r)}function Ra(r){return new TextDecoder().decode(r)}function Qu(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(b){if(b instanceof Uint8Array||(ArrayBuffer.isView(b)?b=new Uint8Array(b.buffer,b.byteOffset,b.byteLength):Array.isArray(b)&&(b=Uint8Array.from(b))),!(b instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(b.length===0)return"";for(var m=0,h=0,w=0,x=b.length;w!==x&&b[w]===0;)w++,m++;for(var p=(x-w)*u+1>>>0,I=new Uint8Array(p);w!==x;){for(var R=b[w],_=0,v=p-1;(R!==0||_<h)&&v!==-1;v--,_++)R+=256*I[v]>>>0,I[v]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");h=_,w++}for(var C=p-h;C!==p&&I[C]===0;)C++;for(var L=c.repeat(m);C<p;++C)L+=r.charAt(I[C]);return L}function d(b){if(typeof b!="string")throw new TypeError("Expected String");if(b.length===0)return new Uint8Array;var m=0;if(b[m]!==" "){for(var h=0,w=0;b[m]===c;)h++,m++;for(var x=(b.length-m)*l+1>>>0,p=new Uint8Array(x);b[m];){var I=e[b.charCodeAt(m)];if(I===255)return;for(var R=0,_=x-1;(I!==0||R<w)&&_!==-1;_--,R++)I+=a*p[_]>>>0,p[_]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");w=R,m++}if(b[m]!==" "){for(var v=x-w;v!==x&&p[v]===0;)v++;for(var C=new Uint8Array(h+(x-v)),L=h;v!==x;)C[L++]=p[v++];return C}}}function g(b){var m=d(b);if(m)return m;throw new Error(`Non-${t} character`)}return{encode:f,decodeUnsafe:d,decode:g}}var tf=Qu,ef=tf,Da=ef;var $o=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Xo=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let o=e.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Na(this,t)}},Zo=class{decoders;constructor(t){this.decoders=t}or(t){return Na(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Na(r,t){return new Zo({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var Yo=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new $o(t,e,n),this.decoder=new Xo(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function tr({name:r,prefix:t,encode:e,decode:n}){return new Yo(r,t,e,n)}function ye({name:r,prefix:t,alphabet:e}){let{encode:n,decode:o}=Da(e,r);return tr({prefix:t,name:r,encode:n,decode:s=>ne(o(s))})}function rf(r,t,e,n){let o={};for(let u=0;u<t.length;++u)o[t[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*e/8|0),a=0,c=0,l=0;for(let u=0;u<s;++u){let f=o[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<e|f,a+=e,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=e||(255&c<<8-a)!==0)throw new SyntaxError("Unexpected end of data");return i}function nf(r,t,e){let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i!==0&&(s+=t[o&a<<e-i]),n)for(;(s.length*e&7)!==0;)s+="=";return s}function ft({name:r,prefix:t,bitsPerChar:e,alphabet:n}){return tr({prefix:t,name:r,encode(o){return nf(o,n,e)},decode(o){return rf(o,n,e,r)}})}var nt=ye({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),of=ye({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Jo={};At(Jo,{base32:()=>oe,base32hex:()=>lf,base32hexpad:()=>ff,base32hexpadupper:()=>hf,base32hexupper:()=>uf,base32pad:()=>af,base32padupper:()=>cf,base32upper:()=>sf,base32z:()=>df});var oe=ft({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),sf=ft({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),af=ft({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),cf=ft({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),lf=ft({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),uf=ft({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ff=ft({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),hf=ft({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),df=ft({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Qo={};At(Qo,{base36:()=>Tr,base36upper:()=>pf});var Tr=ye({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),pf=ye({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Mt={};At(Mt,{Digest:()=>Ne,create:()=>vt,decode:()=>we,equals:()=>es,hasCode:()=>Df});var mf=Oa,Ua=128,gf=127,yf=~gf,wf=Math.pow(2,31);function Oa(r,t,e){t=t||[],e=e||0;for(var n=e;r>=wf;)t[e++]=r&255|Ua,r/=128;for(;r&yf;)t[e++]=r&255|Ua,r>>>=7;return t[e]=r|0,Oa.bytes=e-n+1,t}var bf=ts,xf=128,ka=127;function ts(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw ts.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&ka)<<o:(i&ka)*Math.pow(2,o),o+=7}while(i>=xf);return ts.bytes=s-n,e}var Ef=Math.pow(2,7),Sf=Math.pow(2,14),Af=Math.pow(2,21),vf=Math.pow(2,28),If=Math.pow(2,35),Tf=Math.pow(2,42),Lf=Math.pow(2,49),Bf=Math.pow(2,56),Cf=Math.pow(2,63),_f=function(r){return r<Ef?1:r<Sf?2:r<Af?3:r<vf?4:r<If?5:r<Tf?6:r<Lf?7:r<Bf?8:r<Cf?9:10},Rf={encode:mf,decode:bf,encodingLength:_f},Pf=Rf,Lr=Pf;function Br(r,t=0){return[Lr.decode(r,t),Lr.decode.bytes]}function er(r,t,e=0){return Lr.encode(r,t,e),t}function rr(r){return Lr.encodingLength(r)}function vt(r,t){let e=t.byteLength,n=rr(r),o=n+rr(e),s=new Uint8Array(o+e);return er(r,s,0),er(e,s,n),s.set(t,o),new Ne(r,e,t,s)}function we(r){let t=ne(r),[e,n]=Br(t),[o,s]=Br(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ne(e,o,i,t)}function es(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Ca(r.bytes,e.bytes)}}var Ne=class{code;size;digest;bytes;constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};function Df(r,t){return r.code===t}function Ma(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return Uf(e,rs(r),t??nt.encoder);default:return kf(e,rs(r),t??oe.encoder)}}var Ka=new WeakMap;function rs(r){let t=Ka.get(r);if(t==null){let e=new Map;return Ka.set(r,e),e}return t}var bt=class r{code;version;multihash;bytes;"/";constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==Cr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==Of)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=vt(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&es(t.multihash,n.multihash)}toString(t){return Ma(this,t)}toJSON(){return{"/":Ma(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i??Fa(n,o,s.bytes))}else if(e[Mf]===!0){let{version:n,multihash:o,code:s}=e,i=we(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Cr)throw new Error(`Version 0 CID must use dag-pb (code: ${Cr}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Fa(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Cr,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=ne(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new Ne(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[f,d]=Br(t.subarray(e));return e+=d,f},o=n(),s=Cr;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),c=n(),l=e+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(t,e){let[n,o]=Nf(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return rs(s).set(n,t),s}};function Nf(r,t){switch(r[0]){case"Q":{let e=t??nt;return[nt.prefix,e.decode(`${nt.prefix}${r}`)]}case nt.prefix:{let e=t??nt;return[nt.prefix,e.decode(r)]}case oe.prefix:{let e=t??oe;return[oe.prefix,e.decode(r)]}case Tr.prefix:{let e=t??Tr;return[Tr.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function Uf(r,t,e){let{prefix:n}=e;if(n!==nt.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o}function kf(r,t,e){let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o}var Cr=112,Of=18;function Fa(r,t,e){let n=rr(r),o=n+rr(t),s=new Uint8Array(o+e.byteLength);return er(r,s,0),er(t,s,n),s.set(e,o),s}var Mf=Symbol.for("@ipld/js-cid/CID");var ns={};At(ns,{identity:()=>se});var Ha=0,Kf="identity",Va=ne;function Ff(r){return vt(Ha,Va(r))}var se={code:Ha,name:Kf,encode:Va,digest:Ff};function Rt(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function En(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Hf(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function nr(r,...t){if(!Hf(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function _r(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");En(r.outputLen),En(r.blockLen)}function or(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function qa(r,t){nr(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}var Ue=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Sn(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function qt(r,t){return r<<32-t|r>>>t}function Ga(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function be(r){return typeof r=="string"&&(r=Ga(r)),nr(r),r}function os(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];nr(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var sr=class{clone(){return this._cloneInto()}};function An(r){let t=n=>r().update(be(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Rr(r=32){if(Ue&&typeof Ue.getRandomValues=="function")return Ue.getRandomValues(new Uint8Array(r));if(Ue&&typeof Ue.randomBytes=="function")return Ue.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Vf(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,l=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+l,a,n)}function za(r,t,e){return r&t^~r&e}function Wa(r,t,e){return r&t^r&e^t&e}var ir=class extends sr{constructor(t,e,n,o){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Sn(this.buffer)}update(t){or(this);let{view:e,buffer:n,blockLen:o}=this;t=be(t);let s=t.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=Sn(t);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){or(this),qa(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;e[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)e[f]=0;Vf(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=Sn(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return t.length=o,t.pos=a,t.finished=s,t.destroyed=i,o%e&&t.buffer.set(n),t}};var vn=BigInt(4294967295),ss=BigInt(32);function $a(r,t=!1){return t?{h:Number(r&vn),l:Number(r>>ss&vn)}:{h:Number(r>>ss&vn)|0,l:Number(r&vn)|0}}function qf(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=$a(r[o],t);[e[o],n[o]]=[s,i]}return[e,n]}var Gf=(r,t)=>BigInt(r>>>0)<<ss|BigInt(t>>>0),zf=(r,t,e)=>r>>>e,Wf=(r,t,e)=>r<<32-e|t>>>e,$f=(r,t,e)=>r>>>e|t<<32-e,Xf=(r,t,e)=>r<<32-e|t>>>e,Zf=(r,t,e)=>r<<64-e|t>>>e-32,Yf=(r,t,e)=>r>>>e-32|t<<64-e,jf=(r,t)=>t,Jf=(r,t)=>r,Qf=(r,t,e)=>r<<e|t>>>32-e,th=(r,t,e)=>t<<e|r>>>32-e,eh=(r,t,e)=>t<<e-32|r>>>64-e,rh=(r,t,e)=>r<<e-32|t>>>64-e;function nh(r,t,e,n){let o=(t>>>0)+(n>>>0);return{h:r+e+(o/2**32|0)|0,l:o|0}}var oh=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),sh=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,ih=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),ah=(r,t,e,n,o)=>t+e+n+o+(r/2**32|0)|0,ch=(r,t,e,n,o)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),lh=(r,t,e,n,o,s)=>t+e+n+o+s+(r/2**32|0)|0;var uh={fromBig:$a,split:qf,toBig:Gf,shrSH:zf,shrSL:Wf,rotrSH:$f,rotrSL:Xf,rotrBH:Zf,rotrBL:Yf,rotr32H:jf,rotr32L:Jf,rotlSH:Qf,rotlSL:th,rotlBH:eh,rotlBL:rh,add:nh,add3L:oh,add3H:sh,add4L:ih,add4H:ah,add5H:lh,add5L:ch},V=uh;var[fh,hh]=V.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),xe=new Uint32Array(80),Ee=new Uint32Array(80),is=class extends ir{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:t,Al:e,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:d,Gh:g,Gl:b,Hh:m,Hl:h}=this;return[t,e,n,o,s,i,a,c,l,u,f,d,g,b,m,h]}set(t,e,n,o,s,i,a,c,l,u,f,d,g,b,m,h){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=d|0,this.Gh=g|0,this.Gl=b|0,this.Hh=m|0,this.Hl=h|0}process(t,e){for(let p=0;p<16;p++,e+=4)xe[p]=t.getUint32(e),Ee[p]=t.getUint32(e+=4);for(let p=16;p<80;p++){let I=xe[p-15]|0,R=Ee[p-15]|0,_=V.rotrSH(I,R,1)^V.rotrSH(I,R,8)^V.shrSH(I,R,7),v=V.rotrSL(I,R,1)^V.rotrSL(I,R,8)^V.shrSL(I,R,7),C=xe[p-2]|0,L=Ee[p-2]|0,M=V.rotrSH(C,L,19)^V.rotrBH(C,L,61)^V.shrSH(C,L,6),N=V.rotrSL(C,L,19)^V.rotrBL(C,L,61)^V.shrSL(C,L,6),O=V.add4L(v,N,Ee[p-7],Ee[p-16]),F=V.add4H(O,_,M,xe[p-7],xe[p-16]);xe[p]=F|0,Ee[p]=O|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:d,Fh:g,Fl:b,Gh:m,Gl:h,Hh:w,Hl:x}=this;for(let p=0;p<80;p++){let I=V.rotrSH(f,d,14)^V.rotrSH(f,d,18)^V.rotrBH(f,d,41),R=V.rotrSL(f,d,14)^V.rotrSL(f,d,18)^V.rotrBL(f,d,41),_=f&g^~f&m,v=d&b^~d&h,C=V.add5L(x,R,v,hh[p],Ee[p]),L=V.add5H(C,w,I,_,fh[p],xe[p]),M=C|0,N=V.rotrSH(n,o,28)^V.rotrBH(n,o,34)^V.rotrBH(n,o,39),O=V.rotrSL(n,o,28)^V.rotrBL(n,o,34)^V.rotrBL(n,o,39),F=n&s^n&a^s&a,T=o&i^o&c^i&c;w=m|0,x=h|0,m=g|0,h=b|0,g=f|0,b=d|0,{h:f,l:d}=V.add(l|0,u|0,L|0,M|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let B=V.add3L(M,O,T);n=V.add3H(B,L,N,F),o=B|0}({h:n,l:o}=V.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=V.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=V.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=V.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:d}=V.add(this.Eh|0,this.El|0,f|0,d|0),{h:g,l:b}=V.add(this.Fh|0,this.Fl|0,g|0,b|0),{h:m,l:h}=V.add(this.Gh|0,this.Gl|0,m|0,h|0),{h:w,l:x}=V.add(this.Hh|0,this.Hl|0,w|0,x|0),this.set(n,o,s,i,a,c,l,u,f,d,g,b,m,h,w,x)}roundClean(){xe.fill(0),Ee.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Xa=An(()=>new is);var Ln={};At(Ln,{aInRange:()=>xt,abool:()=>Gt,abytes:()=>ar,bitGet:()=>wh,bitLen:()=>us,bitMask:()=>Dr,bitSet:()=>bh,bytesToHex:()=>ae,bytesToNumberBE:()=>ce,bytesToNumberLE:()=>zt,concatBytes:()=>ue,createHmacDrbg:()=>fs,ensureBytes:()=>ot,equalBytes:()=>gh,hexToBytes:()=>Oe,hexToNumber:()=>ls,inRange:()=>Pr,isBytes:()=>Se,memoized:()=>Me,notImplemented:()=>Eh,numberToBytesBE:()=>Ae,numberToBytesLE:()=>le,numberToHexUnpadded:()=>ke,numberToVarBytesBE:()=>mh,utf8ToBytes:()=>yh,validateObject:()=>Kt});var In=BigInt(0),Tn=BigInt(1),dh=BigInt(2);function Se(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function ar(r){if(!Se(r))throw new Error("Uint8Array expected")}function Gt(r,t){if(typeof t!="boolean")throw new Error(r+" boolean expected, got "+t)}var ph=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function ae(r){ar(r);let t="";for(let e=0;e<r.length;e++)t+=ph[r[e]];return t}function ke(r){let t=r.toString(16);return t.length&1?"0"+t:t}function ls(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?In:BigInt("0x"+r)}var ie={_0:48,_9:57,A:65,F:70,a:97,f:102};function Za(r){if(r>=ie._0&&r<=ie._9)return r-ie._0;if(r>=ie.A&&r<=ie.F)return r-(ie.A-10);if(r>=ie.a&&r<=ie.f)return r-(ie.a-10)}function Oe(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let t=r.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let o=0,s=0;o<e;o++,s+=2){let i=Za(r.charCodeAt(s)),a=Za(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function ce(r){return ls(ae(r))}function zt(r){return ar(r),ls(ae(Uint8Array.from(r).reverse()))}function Ae(r,t){return Oe(r.toString(16).padStart(t*2,"0"))}function le(r,t){return Ae(r,t).reverse()}function mh(r){return Oe(ke(r))}function ot(r,t,e){let n;if(typeof t=="string")try{n=Oe(t)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(Se(t))n=Uint8Array.from(t);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof e=="number"&&o!==e)throw new Error(r+" of length "+e+" expected, got "+o);return n}function ue(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];ar(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}function gh(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}function yh(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}var as=r=>typeof r=="bigint"&&In<=r;function Pr(r,t,e){return as(r)&&as(t)&&as(e)&&t<=r&&r<e}function xt(r,t,e,n){if(!Pr(t,e,n))throw new Error("expected valid "+r+": "+e+" <= n < "+n+", got "+t)}function us(r){let t;for(t=0;r>In;r>>=Tn,t+=1);return t}function wh(r,t){return r>>BigInt(t)&Tn}function bh(r,t,e){return r|(e?Tn:In)<<BigInt(t)}var Dr=r=>(dh<<BigInt(r-1))-Tn,cs=r=>new Uint8Array(r),Ya=r=>Uint8Array.from(r);function fs(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=cs(r),o=cs(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...f)=>e(o,n,...f),c=(f=cs())=>{o=a(Ya([0]),f),n=a(),f.length!==0&&(o=a(Ya([1]),f),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,d=[];for(;f<t;){n=a();let g=n.slice();d.push(g),f+=n.length}return ue(...d)};return(f,d)=>{i(),c(f);let g;for(;!(g=d(l()));)c();return i(),g}}var xh={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Se(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Kt(r,t,e={}){let n=(o,s,i)=>{let a=xh[s];if(typeof a!="function")throw new Error("invalid validator function");let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(o)+" is invalid. Expected "+s+", got "+c)};for(let[o,s]of Object.entries(t))n(o,s,!1);for(let[o,s]of Object.entries(e))n(o,s,!0);return r}var Eh=()=>{throw new Error("not implemented")};function Me(r){let t=new WeakMap;return(e,...n)=>{let o=t.get(e);if(o!==void 0)return o;let s=r(e,...n);return t.set(e,s),s}}var pt=BigInt(0),ut=BigInt(1),Ke=BigInt(2),Sh=BigInt(3),hs=BigInt(4),ja=BigInt(5),Ja=BigInt(8),Ah=BigInt(9),vh=BigInt(16);function Z(r,t){let e=r%t;return e>=pt?e:t+e}function ds(r,t,e){if(t<pt)throw new Error("invalid exponent, negatives unsupported");if(e<=pt)throw new Error("invalid modulus");if(e===ut)return pt;let n=ut;for(;t>pt;)t&ut&&(n=n*r%e),r=r*r%e,t>>=ut;return n}function at(r,t,e){let n=r;for(;t-- >pt;)n*=n,n%=e;return n}function Bn(r,t){if(r===pt)throw new Error("invert: expected non-zero number");if(t<=pt)throw new Error("invert: expected positive modulus, got "+t);let e=Z(r,t),n=t,o=pt,s=ut,i=ut,a=pt;for(;e!==pt;){let l=n/e,u=n%e,f=o-i*l,d=s-a*l;n=e,e=u,o=i,s=a,i=f,a=d}if(n!==ut)throw new Error("invert: does not exist");return Z(o,t)}function Ih(r){let t=(r-ut)/Ke,e,n,o;for(e=r-ut,n=0;e%Ke===pt;e/=Ke,n++);for(o=Ke;o<r&&ds(o,t,r)!==r-ut;o++)if(o>1e3)throw new Error("Cannot find square root: likely non-prime P");if(n===1){let i=(r+ut)/hs;return function(c,l){let u=c.pow(l,i);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let s=(e+ut)/Ke;return function(a,c){if(a.pow(c,t)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,o),e),f=a.pow(c,s),d=a.pow(c,e);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let g=1;for(let m=a.sqr(d);g<l&&!a.eql(m,a.ONE);g++)m=a.sqr(m);let b=a.pow(u,ut<<BigInt(l-g-1));u=a.sqr(b),f=a.mul(f,b),d=a.mul(d,u),l=g}return f}}function Th(r){if(r%hs===Sh){let t=(r+ut)/hs;return function(n,o){let s=n.pow(o,t);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%Ja===ja){let t=(r-ja)/Ja;return function(n,o){let s=n.mul(o,Ke),i=n.pow(s,t),a=n.mul(o,i),c=n.mul(n.mul(a,Ke),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%vh,Ih(r)}var Qa=(r,t)=>(Z(r,t)&ut)===ut,Lh=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ps(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=Lh.reduce((n,o)=>(n[o]="function",n),t);return Kt(r,e)}function Bh(r,t,e){if(e<pt)throw new Error("invalid exponent, negatives unsupported");if(e===pt)return r.ONE;if(e===ut)return t;let n=r.ONE,o=t;for(;e>pt;)e&ut&&(n=r.mul(n,o)),o=r.sqr(o),e>>=ut;return n}function Ch(r,t){let e=new Array(t.length),n=t.reduce((s,i,a)=>r.is0(i)?s:(e[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return t.reduceRight((s,i,a)=>r.is0(i)?s:(e[a]=r.mul(s,e[a]),r.mul(s,i)),o),e}function ms(r,t){let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function ve(r,t,e=!1,n={}){if(r<=pt)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:o,nByteLength:s}=ms(r,t);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,isLE:e,BITS:o,BYTES:s,MASK:Dr(o),ZERO:pt,ONE:ut,create:c=>Z(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return pt<=c&&c<r},is0:c=>c===pt,isOdd:c=>(c&ut)===ut,neg:c=>Z(-c,r),eql:(c,l)=>c===l,sqr:c=>Z(c*c,r),add:(c,l)=>Z(c+l,r),sub:(c,l)=>Z(c-l,r),mul:(c,l)=>Z(c*l,r),pow:(c,l)=>Bh(a,c,l),div:(c,l)=>Z(c*Bn(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Bn(c,r),sqrt:n.sqrt||(c=>(i||(i=Th(r)),i(a,c))),invertBatch:c=>Ch(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>e?le(c,s):Ae(c,s),fromBytes:c=>{if(c.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+c.length);return e?zt(c):ce(c)}});return Object.freeze(a)}function tc(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function gs(r){let t=tc(r);return t+Math.ceil(t/2)}function ec(r,t,e=!1){let n=r.length,o=tc(t),s=gs(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=e?zt(r):ce(r),a=Z(i,t-ut)+ut;return e?le(a,o):Ae(a,o)}var rc=BigInt(0),Cn=BigInt(1);function ys(r,t){let e=t.negate();return r?e:t}function nc(r,t){if(!Number.isSafeInteger(r)||r<=0||r>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+r)}function ws(r,t){nc(r,t);let e=Math.ceil(t/r)+1,n=2**(r-1);return{windows:e,windowSize:n}}function _h(r,t){if(!Array.isArray(r))throw new Error("array expected");r.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function Rh(r,t){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}var bs=new WeakMap,oc=new WeakMap;function xs(r){return oc.get(r)||1}function _n(r,t){return{constTimeNegate:ys,hasPrecomputes(e){return xs(e)!==1},unsafeLadder(e,n,o=r.ZERO){let s=e;for(;n>rc;)n&Cn&&(o=o.add(s)),s=s.double(),n>>=Cn;return o},precomputeWindow(e,n){let{windows:o,windowSize:s}=ws(n,t),i=[],a=e,c=a;for(let l=0;l<o;l++){c=a,i.push(c);for(let u=1;u<s;u++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(e,n,o){let{windows:s,windowSize:i}=ws(e,t),a=r.ZERO,c=r.BASE,l=BigInt(2**e-1),u=2**e,f=BigInt(e);for(let d=0;d<s;d++){let g=d*i,b=Number(o&l);o>>=f,b>i&&(b-=u,o+=Cn);let m=g,h=g+Math.abs(b)-1,w=d%2!==0,x=b<0;b===0?c=c.add(ys(w,n[m])):a=a.add(ys(x,n[h]))}return{p:a,f:c}},wNAFUnsafe(e,n,o,s=r.ZERO){let{windows:i,windowSize:a}=ws(e,t),c=BigInt(2**e-1),l=2**e,u=BigInt(e);for(let f=0;f<i;f++){let d=f*a;if(o===rc)break;let g=Number(o&c);if(o>>=u,g>a&&(g-=l,o+=Cn),g===0)continue;let b=n[d+Math.abs(g)-1];g<0&&(b=b.negate()),s=s.add(b)}return s},getPrecomputes(e,n,o){let s=bs.get(n);return s||(s=this.precomputeWindow(n,e),e!==1&&bs.set(n,o(s))),s},wNAFCached(e,n,o){let s=xs(e);return this.wNAF(s,this.getPrecomputes(s,e,o),n)},wNAFCachedUnsafe(e,n,o,s){let i=xs(e);return i===1?this.unsafeLadder(e,n,s):this.wNAFUnsafe(i,this.getPrecomputes(i,e,o),n,s)},setWindowSize(e,n){nc(n,t),oc.set(e,n),bs.delete(e)}}}function Rn(r,t,e,n){if(_h(e,r),Rh(n,t),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let o=r.ZERO,s=us(BigInt(e.length)),i=s>12?s-3:s>4?s-2:s?2:1,a=(1<<i)-1,c=new Array(a+1).fill(o),l=Math.floor((t.BITS-1)/i)*i,u=o;for(let f=l;f>=0;f-=i){c.fill(o);for(let g=0;g<n.length;g++){let b=n[g],m=Number(b>>BigInt(f)&BigInt(a));c[m]=c[m].add(e[g])}let d=o;for(let g=c.length-1,b=o;g>0;g--)b=b.add(c[g]),d=d.add(b);if(u=u.add(d),f!==0)for(let g=0;g<i;g++)u=u.double()}return u}function Nr(r){return ps(r.Fp),Kt(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ms(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Wt=BigInt(0),Dt=BigInt(1),Pn=BigInt(2),Ph=BigInt(8),Dh={zip215:!0};function Nh(r){let t=Nr(r);return Kt(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function sc(r){let t=Nh(r),{Fp:e,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=t,l=Pn<<BigInt(a*8)-Dt,u=e.create,f=ve(t.n,t.nBitLength),d=t.uvRatio||((E,y)=>{try{return{isValid:!0,value:e.sqrt(E*e.inv(y))}}catch{return{isValid:!1,value:Wt}}}),g=t.adjustScalarBytes||(E=>E),b=t.domain||((E,y,A)=>{if(Gt("phflag",A),y.length||A)throw new Error("Contexts/pre-hash are not supported");return E});function m(E,y){xt("coordinate "+E,y,Wt,l)}function h(E){if(!(E instanceof p))throw new Error("ExtendedPoint expected")}let w=Me((E,y)=>{let{ex:A,ey:S,ez:P}=E,D=E.is0();y==null&&(y=D?Ph:e.inv(P));let k=u(A*y),H=u(S*y),K=u(P*y);if(D)return{x:Wt,y:Dt};if(K!==Dt)throw new Error("invZ was invalid");return{x:k,y:H}}),x=Me(E=>{let{a:y,d:A}=t;if(E.is0())throw new Error("bad point: ZERO");let{ex:S,ey:P,ez:D,et:k}=E,H=u(S*S),K=u(P*P),G=u(D*D),X=u(G*G),st=u(H*y),it=u(G*u(st+K)),lt=u(X+u(A*u(H*K)));if(it!==lt)throw new Error("bad point: equation left != right (1)");let St=u(S*P),Pt=u(D*k);if(St!==Pt)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(y,A,S,P){this.ex=y,this.ey=A,this.ez=S,this.et=P,m("x",y),m("y",A),m("z",S),m("t",P),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(y){if(y instanceof p)throw new Error("extended point not allowed");let{x:A,y:S}=y||{};return m("x",A),m("y",S),new p(A,S,Dt,u(A*S))}static normalizeZ(y){let A=e.invertBatch(y.map(S=>S.ez));return y.map((S,P)=>S.toAffine(A[P])).map(p.fromAffine)}static msm(y,A){return Rn(p,f,y,A)}_setWindowSize(y){_.setWindowSize(this,y)}assertValidity(){x(this)}equals(y){h(y);let{ex:A,ey:S,ez:P}=this,{ex:D,ey:k,ez:H}=y,K=u(A*H),G=u(D*P),X=u(S*H),st=u(k*P);return K===G&&X===st}is0(){return this.equals(p.ZERO)}negate(){return new p(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:y}=t,{ex:A,ey:S,ez:P}=this,D=u(A*A),k=u(S*S),H=u(Pn*u(P*P)),K=u(y*D),G=A+S,X=u(u(G*G)-D-k),st=K+k,it=st-H,lt=K-k,St=u(X*it),Pt=u(st*lt),_t=u(X*lt),Jt=u(it*st);return new p(St,Pt,Jt,_t)}add(y){h(y);let{a:A,d:S}=t,{ex:P,ey:D,ez:k,et:H}=this,{ex:K,ey:G,ez:X,et:st}=y;if(A===BigInt(-1)){let xa=u((D-P)*(G+K)),Ea=u((D+P)*(G-K)),Go=u(Ea-xa);if(Go===Wt)return this.double();let Sa=u(k*Pn*st),Aa=u(H*Pn*X),va=Aa+Sa,Ia=Ea+xa,Ta=Aa-Sa,Gu=u(va*Go),zu=u(Ia*Ta),Wu=u(va*Ta),$u=u(Go*Ia);return new p(Gu,zu,$u,Wu)}let it=u(P*K),lt=u(D*G),St=u(H*S*st),Pt=u(k*X),_t=u((P+D)*(K+G)-it-lt),Jt=Pt-St,re=Pt+St,Ir=u(lt-A*it),Fu=u(_t*Jt),Hu=u(re*Ir),Vu=u(_t*Ir),qu=u(Jt*re);return new p(Fu,Hu,qu,Vu)}subtract(y){return this.add(y.negate())}wNAF(y){return _.wNAFCached(this,y,p.normalizeZ)}multiply(y){let A=y;xt("scalar",A,Dt,n);let{p:S,f:P}=this.wNAF(A);return p.normalizeZ([S,P])[0]}multiplyUnsafe(y,A=p.ZERO){let S=y;return xt("scalar",S,Wt,n),S===Wt?R:this.is0()||S===Dt?this:_.wNAFCachedUnsafe(this,S,p.normalizeZ,A)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(y){return w(this,y)}clearCofactor(){let{h:y}=t;return y===Dt?this:this.multiplyUnsafe(y)}static fromHex(y,A=!1){let{d:S,a:P}=t,D=e.BYTES;y=ot("pointHex",y,D),Gt("zip215",A);let k=y.slice(),H=y[D-1];k[D-1]=H&-129;let K=zt(k),G=A?l:e.ORDER;xt("pointHex.y",K,Wt,G);let X=u(K*K),st=u(X-Dt),it=u(S*X-P),{isValid:lt,value:St}=d(st,it);if(!lt)throw new Error("Point.fromHex: invalid y coordinate");let Pt=(St&Dt)===Dt,_t=(H&128)!==0;if(!A&&St===Wt&&_t)throw new Error("Point.fromHex: x=0 and x_0=1");return _t!==Pt&&(St=u(-St)),p.fromAffine({x:St,y:K})}static fromPrivateKey(y){return L(y).point}toRawBytes(){let{x:y,y:A}=this.toAffine(),S=le(A,e.BYTES);return S[S.length-1]|=y&Dt?128:0,S}toHex(){return ae(this.toRawBytes())}}p.BASE=new p(t.Gx,t.Gy,Dt,u(t.Gx*t.Gy)),p.ZERO=new p(Wt,Dt,Dt,Wt);let{BASE:I,ZERO:R}=p,_=_n(p,a*8);function v(E){return Z(E,n)}function C(E){return v(zt(E))}function L(E){let y=e.BYTES;E=ot("private key",E,y);let A=ot("hashed private key",s(E),2*y),S=g(A.slice(0,y)),P=A.slice(y,2*y),D=C(S),k=I.multiply(D),H=k.toRawBytes();return{head:S,prefix:P,scalar:D,point:k,pointBytes:H}}function M(E){return L(E).pointBytes}function N(E=new Uint8Array,...y){let A=ue(...y);return C(s(b(A,ot("context",E),!!o)))}function O(E,y,A={}){E=ot("message",E),o&&(E=o(E));let{prefix:S,scalar:P,pointBytes:D}=L(y),k=N(A.context,S,E),H=I.multiply(k).toRawBytes(),K=N(A.context,H,D,E),G=v(k+K*P);xt("signature.s",G,Wt,n);let X=ue(H,le(G,e.BYTES));return ot("result",X,e.BYTES*2)}let F=Dh;function T(E,y,A,S=F){let{context:P,zip215:D}=S,k=e.BYTES;E=ot("signature",E,2*k),y=ot("message",y),A=ot("publicKey",A,k),D!==void 0&&Gt("zip215",D),o&&(y=o(y));let H=zt(E.slice(k,2*k)),K,G,X;try{K=p.fromHex(A,D),G=p.fromHex(E.slice(0,k),D),X=I.multiplyUnsafe(H)}catch{return!1}if(!D&&K.isSmallOrder())return!1;let st=N(P,G.toRawBytes(),K.toRawBytes(),y);return G.add(K.multiplyUnsafe(st)).subtract(X).clearCofactor().equals(p.ZERO)}return I._setWindowSize(8),{CURVE:t,getPublicKey:M,sign:O,verify:T,ExtendedPoint:p,utils:{getExtendedPublicKey:L,randomPrivateKey:()=>i(e.BYTES),precompute(E=8,y=p.BASE){return y._setWindowSize(E),y.multiply(BigInt(3)),y}}}}var cr=BigInt(0),Es=BigInt(1);function Uh(r){return Kt(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function ic(r){let t=Uh(r),{P:e}=t,n=x=>Z(x,e),o=t.montgomeryBits,s=Math.ceil(o/8),i=t.nByteLength,a=t.adjustScalarBytes||(x=>x),c=t.powPminus2||(x=>ds(x,e-BigInt(2),e));function l(x,p,I){let R=n(x*(p-I));return p=n(p-R),I=n(I+R),[p,I]}let u=(t.a-BigInt(2))/BigInt(4);function f(x,p){xt("u",x,cr,e),xt("scalar",p,cr,e);let I=p,R=x,_=Es,v=cr,C=x,L=Es,M=cr,N;for(let F=BigInt(o-1);F>=cr;F--){let T=I>>F&Es;M^=T,N=l(M,_,C),_=N[0],C=N[1],N=l(M,v,L),v=N[0],L=N[1],M=T;let B=_+v,E=n(B*B),y=_-v,A=n(y*y),S=E-A,P=C+L,D=C-L,k=n(D*B),H=n(P*y),K=k+H,G=k-H;C=n(K*K),L=n(R*n(G*G)),_=n(E*A),v=n(S*(E+n(u*S)))}N=l(M,_,C),_=N[0],C=N[1],N=l(M,v,L),v=N[0],L=N[1];let O=c(v);return n(_*O)}function d(x){return le(n(x),s)}function g(x){let p=ot("u coordinate",x,s);return i===32&&(p[31]&=127),zt(p)}function b(x){let p=ot("scalar",x),I=p.length;if(I!==s&&I!==i){let R=""+s+" or "+i;throw new Error("invalid scalar, expected "+R+" bytes, got "+I)}return zt(a(p))}function m(x,p){let I=g(p),R=b(x),_=f(I,R);if(_===cr)throw new Error("invalid private or public key received");return d(_)}let h=d(t.Gu);function w(x){return m(x,h)}return{scalarMult:m,scalarMultBase:w,getSharedSecret:(x,p)=>m(x,p),getPublicKey:x=>w(x),utils:{randomPrivateKey:()=>t.randomBytes(t.nByteLength)},GuBytes:h}}var Ur=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),ac=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),q0=BigInt(0),kh=BigInt(1),cc=BigInt(2),Oh=BigInt(3),Mh=BigInt(5),Kh=BigInt(8);function lc(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),o=BigInt(80),s=Ur,a=r*r%s*r%s,c=at(a,cc,s)*a%s,l=at(c,kh,s)*r%s,u=at(l,Mh,s)*l%s,f=at(u,t,s)*u%s,d=at(f,e,s)*f%s,g=at(d,n,s)*d%s,b=at(g,o,s)*g%s,m=at(b,o,s)*g%s,h=at(m,t,s)*u%s;return{pow_p_5_8:at(h,cc,s)*r%s,b2:a}}function uc(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function Fh(r,t){let e=Ur,n=Z(t*t*t,e),o=Z(n*n*t,e),s=lc(r*o).pow_p_5_8,i=Z(r*n*s,e),a=Z(t*i*i,e),c=i,l=Z(i*ac,e),u=a===r,f=a===Z(-r,e),d=a===Z(-r*ac,e);return u&&(i=c),(f||d)&&(i=l),Qa(i,e)&&(i=Z(-i,e)),{isValid:u||f,value:i}}var Hh=ve(Ur,void 0,!0),Vh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Hh,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:Kh,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Xa,randomBytes:Rr,adjustScalarBytes:uc,uvRatio:Fh},fc=sc(Vh);var kr=ic({P:Ur,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let t=Ur,{pow_p_5_8:e,b2:n}=lc(r);return Z(at(e,Oh,t)*n,t)},adjustScalarBytes:uc,randomBytes:Rr});var Dn=32;function hc(r,t,e){return fc.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}var Nn=class{type="Ed25519";raw;constructor(t){this.raw=Ss(t,Dn)}toMultihash(){return se.digest(lr(this))}toCID(){return bt.createV1(114,this.toMultihash())}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return hc(this.raw,e,t)}};function As(r){return r=Ss(r,Dn),new Nn(r)}function Ss(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new rt(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}function mt(r=0){return new Uint8Array(r)}function dt(r=0){return new Uint8Array(r)}var Gh=Math.pow(2,7),zh=Math.pow(2,14),Wh=Math.pow(2,21),vs=Math.pow(2,28),Is=Math.pow(2,35),Ts=Math.pow(2,42),Ls=Math.pow(2,49),j=128,It=127;function Q(r){if(r<Gh)return 1;if(r<zh)return 2;if(r<Wh)return 3;if(r<vs)return 4;if(r<Is)return 5;if(r<Ts)return 6;if(r<Ls)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Bs(r,t,e=0){switch(Q(r)){case 8:t[e++]=r&255|j,r/=128;case 7:t[e++]=r&255|j,r/=128;case 6:t[e++]=r&255|j,r/=128;case 5:t[e++]=r&255|j,r/=128;case 4:t[e++]=r&255|j,r>>>=7;case 3:t[e++]=r&255|j,r>>>=7;case 2:t[e++]=r&255|j,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function $h(r,t,e=0){switch(Q(r)){case 8:t.set(e++,r&255|j),r/=128;case 7:t.set(e++,r&255|j),r/=128;case 6:t.set(e++,r&255|j),r/=128;case 5:t.set(e++,r&255|j),r/=128;case 4:t.set(e++,r&255|j),r>>>=7;case 3:t.set(e++,r&255|j),r>>>=7;case 2:t.set(e++,r&255|j),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Cs(r,t){let e=r[t],n=0;if(n+=e&It,e<j||(e=r[t+1],n+=(e&It)<<7,e<j)||(e=r[t+2],n+=(e&It)<<14,e<j)||(e=r[t+3],n+=(e&It)<<21,e<j)||(e=r[t+4],n+=(e&It)*vs,e<j)||(e=r[t+5],n+=(e&It)*Is,e<j)||(e=r[t+6],n+=(e&It)*Ts,e<j)||(e=r[t+7],n+=(e&It)*Ls,e<j))return n;throw new RangeError("Could not decode varint")}function Xh(r,t){let e=r.get(t),n=0;if(n+=e&It,e<j||(e=r.get(t+1),n+=(e&It)<<7,e<j)||(e=r.get(t+2),n+=(e&It)<<14,e<j)||(e=r.get(t+3),n+=(e&It)<<21,e<j)||(e=r.get(t+4),n+=(e&It)*vs,e<j)||(e=r.get(t+5),n+=(e&It)*Is,e<j)||(e=r.get(t+6),n+=(e&It)*Ts,e<j)||(e=r.get(t+7),n+=(e&It)*Ls,e<j))return n;throw new RangeError("Could not decode varint")}function Ft(r,t,e=0){return t==null&&(t=dt(Q(r))),t instanceof Uint8Array?Bs(r,t,e):$h(r,t,e)}function Ut(r,t=0){return r instanceof Uint8Array?Cs(r,t):Xh(r,t)}var _s=new Float32Array([-0]),Ie=new Uint8Array(_s.buffer);function pc(r,t,e){_s[0]=r,t[e]=Ie[0],t[e+1]=Ie[1],t[e+2]=Ie[2],t[e+3]=Ie[3]}function mc(r,t){return Ie[0]=r[t],Ie[1]=r[t+1],Ie[2]=r[t+2],Ie[3]=r[t+3],_s[0]}var Rs=new Float64Array([-0]),Tt=new Uint8Array(Rs.buffer);function gc(r,t,e){Rs[0]=r,t[e]=Tt[0],t[e+1]=Tt[1],t[e+2]=Tt[2],t[e+3]=Tt[3],t[e+4]=Tt[4],t[e+5]=Tt[5],t[e+6]=Tt[6],t[e+7]=Tt[7]}function yc(r,t){return Tt[0]=r[t],Tt[1]=r[t+1],Tt[2]=r[t+2],Tt[3]=r[t+3],Tt[4]=r[t+4],Tt[5]=r[t+5],Tt[6]=r[t+6],Tt[7]=r[t+7],Rs[0]}var Zh=BigInt(Number.MAX_SAFE_INTEGER),Yh=BigInt(Number.MIN_SAFE_INTEGER),kt=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return He;if(t<Zh&&t>Yh)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>wc&&(o=0n,++n>wc&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return He;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):He}},He=new kt(0,0);He.toBigInt=function(){return 0n};He.zzEncode=He.zzDecode=function(){return this};He.length=function(){return 1};var wc=4294967296n;function bc(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function xc(r,t,e){if(e-t<1)return"";let o,s=[],i=0,a;for(;t<e;)a=r[t++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Ps(r,t,e){let n=e,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function $t(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Un(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var Ds=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,$t(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw $t(this,4);return Un(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw $t(this,4);return Un(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw $t(this,4);let t=mc(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw $t(this,4);let t=yc(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw $t(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return xc(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw $t(this,t);this.pos+=t}else do if(this.pos>=this.len)throw $t(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new kt(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw $t(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw $t(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw $t(this,8);let t=Un(this.buf,this.pos+=4),e=Un(this.buf,this.pos+=4);return new kt(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=Cs(this.buf,this.pos);return this.pos+=Q(t),t}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Ns(r){return new Ds(r instanceof Uint8Array?r:r.subarray())}function Xt(r,t,e){let n=Ns(r);return t.decode(n,void 0,e)}var Us={};At(Us,{base10:()=>jh});var jh=ye({prefix:"9",name:"base10",alphabet:"0123456789"});var ks={};At(ks,{base16:()=>Jh,base16upper:()=>Qh});var Jh=ft({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Qh=ft({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Os={};At(Os,{base2:()=>td});var td=ft({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ms={};At(Ms,{base256emoji:()=>sd});var Sc=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),ed=Sc.reduce((r,t,e)=>(r[e]=t,r),[]),rd=Sc.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function nd(r){return r.reduce((t,e)=>(t+=ed[e],t),"")}function od(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let o=rd[n];if(o==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(o)}return new Uint8Array(t)}var sd=tr({prefix:"\u{1F680}",name:"base256emoji",encode:nd,decode:od});var Ks={};At(Ks,{base64:()=>id,base64pad:()=>ad,base64url:()=>Or,base64urlpad:()=>cd});var id=ft({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ad=ft({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Or=ft({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),cd=ft({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Fs={};At(Fs,{base8:()=>ld});var ld=ft({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Hs={};At(Hs,{identity:()=>ud});var ud=tr({prefix:"\0",name:"identity",encode:r=>Ra(r),decode:r=>_a(r)});var Ig=new TextEncoder,Tg=new TextDecoder;var Gs={};At(Gs,{sha256:()=>fe,sha512:()=>dd});function qs({name:r,code:t,encode:e}){return new Vs(r,t,e)}var Vs=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?vt(this.code,e):e.then(n=>vt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function vc(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var fe=qs({name:"sha2-256",code:18,encode:vc("SHA-256")}),dd=qs({name:"sha2-512",code:19,encode:vc("SHA-512")});var Ve={...Hs,...Os,...Fs,...Us,...ks,...Jo,...Qo,...jo,...Ks,...Ms},Mg={...Gs,...ns};function Tc(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Ic=Tc("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),zs=Tc("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=dt(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),pd={utf8:Ic,"utf-8":Ic,hex:Ve.base16,latin1:zs,ascii:zs,binary:zs,...Ve},kn=pd;function J(r,t="utf8"){let e=kn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function Ws(r){let t=r??8192,e=t>>>1,n,o=t;return function(i){if(i<1||i>e)return dt(i);o+i>t&&(n=dt(t),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var qe=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function $s(){}var Zs=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},md=Ws();function gd(r){return globalThis.Buffer!=null?dt(r):md(r)}var Kr=class{len;head;tail;states;constructor(){this.len=0,this.head=new qe($s,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new qe(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new Ys((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(On,10,kt.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=kt.fromBigInt(t);return this._push(On,e.length(),e)}uint64Number(t){return this._push(Bs,Q(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=kt.fromBigInt(t).zzEncode();return this._push(On,e.length(),e)}sint64Number(t){let e=kt.fromNumber(t).zzEncode();return this._push(On,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(Xs,1,t?1:0)}fixed32(t){return this._push(Mr,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=kt.fromBigInt(t);return this._push(Mr,4,e.lo)._push(Mr,4,e.hi)}fixed64Number(t){let e=kt.fromNumber(t);return this._push(Mr,4,e.lo)._push(Mr,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(pc,4,t)}double(t){return this._push(gc,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(Xs,1,0):this.uint32(e)._push(wd,e,t)}string(t){let e=bc(t);return e!==0?this.uint32(e)._push(Ps,e,t):this._push(Xs,1,0)}fork(){return this.states=new Zs(this),this.head=this.tail=new qe($s,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new qe($s,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=gd(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function Xs(r,t,e){t[e]=r&255}function yd(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var Ys=class extends qe{next;constructor(t,e){super(yd,t,e),this.next=void 0}};function On(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Mr(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function wd(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Kr.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(bd,t,r),this},Kr.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(xd,t,r),this});function bd(r,t,e){t.set(r,e)}function xd(r,t,e){r.length<40?Ps(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(J(r),e)}function js(){return new Kr}function Zt(r,t){let e=js();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var ur;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(ur||(ur={}));function Mn(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Ge(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(s,i){let a=t(s);i.int32(a)},n=function(s){let i=s.int32();return t(i)};return Mn("enum",ur.VARINT,e,n)}function Yt(r,t){return Mn("message",ur.LENGTH_DELIMITED,r,t)}var gt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(gt||(gt={}));var Js;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(Js||(Js={}));(function(r){r.codec=()=>Ge(Js)})(gt||(gt={}));var Qt;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),gt.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=gt.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Zt(e,r.codec()),r.decode=(e,n)=>Xt(e,r.codec(),n)})(Qt||(Qt={}));var Qs;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),gt.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=gt.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Zt(e,r.codec()),r.decode=(e,n)=>Xt(e,r.codec(),n)})(Qs||(Qs={}));var Vr={};At(Vr,{MAX_RSA_KEY_SIZE:()=>oi,generateRSAKeyPair:()=>Hc,jwkToJWKKeyPair:()=>Vc,jwkToPkcs1:()=>Dd,jwkToPkix:()=>ii,jwkToRSAPrivateKey:()=>Fc,pkcs1ToJwk:()=>Oc,pkcs1ToRSAPrivateKey:()=>Kc,pkixToJwk:()=>Mc,pkixToRSAPublicKey:()=>ai});var Ed=new Uint32Array([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]),Te=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Le=new Uint32Array(64),ti=class extends ir{constructor(){super(64,32,8,!1),this.A=Te[0]|0,this.B=Te[1]|0,this.C=Te[2]|0,this.D=Te[3]|0,this.E=Te[4]|0,this.F=Te[5]|0,this.G=Te[6]|0,this.H=Te[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(t,e){for(let f=0;f<16;f++,e+=4)Le[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=Le[f-15],g=Le[f-2],b=qt(d,7)^qt(d,18)^d>>>3,m=qt(g,17)^qt(g,19)^g>>>10;Le[f]=m+Le[f-7]+b+Le[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=qt(a,6)^qt(a,11)^qt(a,25),g=u+d+za(a,c,l)+Ed[f]+Le[f]|0,m=(qt(n,2)^qt(n,13)^qt(n,22))+Wa(n,o,s)|0;u=l,l=c,c=a,a=i+g|0,i=s,s=o,o=n,n=g+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){Le.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var te=An(()=>new ti);function q(r,t="utf8"){let e=kn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}function yt(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=dt(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return e}var Cc=Symbol.for("@achingbrain/uint8arraylist");function Bc(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function Kn(r){return!!r?.[Cc]}var z=class r{bufs;length;[Cc]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Kn(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Kn(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Bc(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Bc(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Kn(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return yt(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:yt(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,t>=c)continue;let l=t>=a&&t<c,u=e>a&&e<=c;if(l&&u){if(t===a&&e===c){n.push(i);break}let f=t-a;n.push(i.subarray(f,f+(e-t)));break}if(l){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(u){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Kn(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=e;f<=c;f+=u){u=0;for(let d=l;d>=0;d--){let g=this.get(f+d);if(n[d]!==g){u=Math.max(1,d-a[g]);break}}if(u===0)return f}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=dt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=mt(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=dt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=mt(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=mt(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=mt(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Rt(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};var Ad=parseInt("11111",2),ri=parseInt("10000000",2),vd=parseInt("01111111",2),_c={2:Id,3:Bd,5:Ld,6:Td,16:ei,22:ei,48:ei};function Fr(r,t={offset:0}){let e=r[t.offset]&Ad;if(t.offset++,_c[e]!=null)return _c[e](r,t);throw new Error("No decoder for tag "+e)}function Fn(r,t){let e=0;if((r[t.offset]&ri)===ri){let n=r[t.offset]&vd,o="0x";t.offset++;for(let s=0;s<n;s++,t.offset++)o+=r[t.offset].toString(16).padStart(2,"0");e=parseInt(o,16)}else e=r[t.offset],t.offset++;return e}function ei(r,t){Fn(r,t);let e=[];for(;!(t.offset>=r.byteLength);){let n=Fr(r,t);if(n===null)break;e.push(n)}return e}function Id(r,t){let e=Fn(r,t),n=t.offset,o=t.offset+e,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return t.offset+=e,Uint8Array.from(s)}function Td(r,t){let e=Fn(r,t);return t.offset+=e,["oid-unimplemented"]}function Ld(r,t){return t.offset++,null}function Bd(r,t){let e=Fn(r,t),n=r[t.offset];t.offset++;let o=r.subarray(t.offset,t.offset+e);if(t.offset+=e,n!==0)throw new Error("Unused bits in bit string is unimplemented");return Fr(o,{offset:0})}function Cd(r){let t=r.toString(16);t.length%2===1&&(t="0"+t);let e=new z;for(let n=0;n<t.length;n+=2)e.append(Uint8Array.from([parseInt(`${t[n]}${t[n+1]}`,16)]));return e}function ni(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let t=Cd(r.byteLength);return new z(Uint8Array.from([t.byteLength|ri]),t)}function Ht(r){let t=new z,e=parseInt("10000000",2);return(r.subarray()[0]&e)===e&&t.append(Uint8Array.from([0])),t.append(r),new z(Uint8Array.from([2]),ni(t),t)}function Rc(r){let t=Uint8Array.from([0]),e=new z(t,r);return new z(Uint8Array.from([3]),ni(e),e)}function Hn(r){let t=new z;for(let e of r)t.append(e);return new z(Uint8Array.from([48]),ni(t),t)}var Hr=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},Vn=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var Pc={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new Vn("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return t}};var Be=Pc;async function Dc(r){let t=await Be.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await _d(t);return{privateKey:e[0],publicKey:e[1]}}async function Nc(r,t){let e=await Be.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Be.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function Uc(r,t,e){let n=await Be.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Be.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function _d(r){if(r.privateKey==null||r.publicKey==null)throw new rt("Private and public key are required");return Promise.all([Be.get().subtle.exportKey("jwk",r.privateKey),Be.get().subtle.exportKey("jwk",r.publicKey)])}function kc(r){if(r.kty!=="RSA")throw new rt("invalid key type");if(r.n==null)throw new rt("invalid key modulus");return J(r.n,"base64url").length*8}var fr=class{type="RSA";_key;_raw;_multihash;constructor(t,e){this._key=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=Vr.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return bt.createV1(114,this._multihash)}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return Uc(this._key,e,t)}},qr=class{type="RSA";_key;_raw;publicKey;constructor(t,e){this._key=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=Vr.jwkToPkcs1(this._key)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}sign(t){return Nc(this._key,t)}};var oi=8192,si=18,Rd=1062,Pd=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Oc(r){let t=Fr(r);return{n:q(t[1],"base64url"),e:q(t[2],"base64url"),d:q(t[3],"base64url"),p:q(t[4],"base64url"),q:q(t[5],"base64url"),dp:q(t[6],"base64url"),dq:q(t[7],"base64url"),qi:q(t[8],"base64url"),kty:"RSA"}}function Dd(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new rt("JWK was missing components");return Hn([Ht(Uint8Array.from([0])),Ht(J(r.n,"base64url")),Ht(J(r.e,"base64url")),Ht(J(r.d,"base64url")),Ht(J(r.p,"base64url")),Ht(J(r.q,"base64url")),Ht(J(r.dp,"base64url")),Ht(J(r.dq,"base64url")),Ht(J(r.qi,"base64url"))]).subarray()}function Mc(r){let t=Fr(r,{offset:0});return{kty:"RSA",n:q(t[1][0],"base64url"),e:q(t[1][1],"base64url")}}function ii(r){if(r.n==null||r.e==null)throw new rt("JWK was missing components");return Hn([Pd,Rc(Hn([Ht(J(r.n,"base64url")),Ht(J(r.e,"base64url"))]))]).subarray()}function Kc(r){let t=Oc(r);return Fc(t)}function ai(r,t){if(r.byteLength>=Rd)throw new je("Key size is too large");let e=Mc(r);if(t==null){let n=te(Qt.encode({Type:gt.RSA,Data:r}));t=vt(si,n)}return new fr(e,t)}function Fc(r){if(kc(r)>oi)throw new rt("Key size is too large");let t=Vc(r),e=te(Qt.encode({Type:gt.RSA,Data:ii(t.publicKey)})),n=vt(si,e);return new qr(t.privateKey,new fr(t.publicKey,n))}async function Hc(r){if(r>oi)throw new rt("Key size is too large");let t=await Dc(r),e=te(Qt.encode({Type:gt.RSA,Data:ii(t.publicKey)})),n=vt(si,e);return new qr(t.privateKey,new fr(t.publicKey,n))}function Vc(r){if(r==null)throw new rt("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var qn=class extends sr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,_r(t);let n=be(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?t.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=t.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(t){return or(this),this.iHash.update(t),this}digestInto(t){or(this),nr(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},hr=(r,t,e)=>new qn(r,t).update(e).digest();hr.create=(r,t)=>new qn(r,t);function qc(r){r.lowS!==void 0&&Gt("lowS",r.lowS),r.prehash!==void 0&&Gt("prehash",r.prehash)}function Nd(r){let t=Nr(r);Kt(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Ud,hexToBytes:kd}=Ln,ci=class extends Error{constructor(t=""){super(t)}},he={Err:ci,_tlv:{encode:(r,t)=>{let{Err:e}=he;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,o=ke(n);if(o.length/2&128)throw new e("tlv.encode: long form length too big");let s=n>127?ke(o.length/2|128):"";return ke(r)+s+o+t},decode(r,t){let{Err:e}=he,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let o=t[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let l=t.subarray(n,n+c);if(l.length!==c)throw new e("tlv.decode: length bytes not complete");if(l[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=he;if(r<de)throw new t("integer: negative integers are not allowed");let e=ke(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return e},decode(r){let{Err:t}=he;if(r[0]&128)throw new t("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ud(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=he,o=typeof r=="string"?kd(r):r;ar(o);let{v:s,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new t("invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(l)}},hexFromSig(r){let{_tlv:t,_int:e}=he,n=t.encode(2,e.encode(r.r)),o=t.encode(2,e.encode(r.s)),s=n+o;return t.encode(48,s)}},de=BigInt(0),wt=BigInt(1),sw=BigInt(2),Gc=BigInt(3),iw=BigInt(4);function Od(r){let t=Nd(r),{Fp:e}=t,n=ve(t.n,t.nBitLength),o=t.toBytes||((m,h,w)=>{let x=h.toAffine();return ue(Uint8Array.from([4]),e.toBytes(x.x),e.toBytes(x.y))}),s=t.fromBytes||(m=>{let h=m.subarray(1),w=e.fromBytes(h.subarray(0,e.BYTES)),x=e.fromBytes(h.subarray(e.BYTES,2*e.BYTES));return{x:w,y:x}});function i(m){let{a:h,b:w}=t,x=e.sqr(m),p=e.mul(x,m);return e.add(e.add(p,e.mul(m,h)),w)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return Pr(m,wt,t.n)}function c(m){let{allowedPrivateKeyLengths:h,nByteLength:w,wrapPrivateKey:x,n:p}=t;if(h&&typeof m!="bigint"){if(Se(m)&&(m=ae(m)),typeof m!="string"||!h.includes(m.length))throw new Error("invalid private key");m=m.padStart(w*2,"0")}let I;try{I=typeof m=="bigint"?m:ce(ot("private key",m,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof m)}return x&&(I=Z(I,p)),xt("private key",I,wt,p),I}function l(m){if(!(m instanceof d))throw new Error("ProjectivePoint expected")}let u=Me((m,h)=>{let{px:w,py:x,pz:p}=m;if(e.eql(p,e.ONE))return{x:w,y:x};let I=m.is0();h==null&&(h=I?e.ONE:e.inv(p));let R=e.mul(w,h),_=e.mul(x,h),v=e.mul(p,h);if(I)return{x:e.ZERO,y:e.ZERO};if(!e.eql(v,e.ONE))throw new Error("invZ was invalid");return{x:R,y:_}}),f=Me(m=>{if(m.is0()){if(t.allowInfinityPoint&&!e.is0(m.py))return;throw new Error("bad point: ZERO")}let{x:h,y:w}=m.toAffine();if(!e.isValid(h)||!e.isValid(w))throw new Error("bad point: x or y not FE");let x=e.sqr(w),p=i(h);if(!e.eql(x,p))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(h,w,x){if(this.px=h,this.py=w,this.pz=x,h==null||!e.isValid(h))throw new Error("x required");if(w==null||!e.isValid(w))throw new Error("y required");if(x==null||!e.isValid(x))throw new Error("z required");Object.freeze(this)}static fromAffine(h){let{x:w,y:x}=h||{};if(!h||!e.isValid(w)||!e.isValid(x))throw new Error("invalid affine point");if(h instanceof d)throw new Error("projective point not allowed");let p=I=>e.eql(I,e.ZERO);return p(w)&&p(x)?d.ZERO:new d(w,x,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(h){let w=e.invertBatch(h.map(x=>x.pz));return h.map((x,p)=>x.toAffine(w[p])).map(d.fromAffine)}static fromHex(h){let w=d.fromAffine(s(ot("pointHex",h)));return w.assertValidity(),w}static fromPrivateKey(h){return d.BASE.multiply(c(h))}static msm(h,w){return Rn(d,n,h,w)}_setWindowSize(h){b.setWindowSize(this,h)}assertValidity(){f(this)}hasEvenY(){let{y:h}=this.toAffine();if(e.isOdd)return!e.isOdd(h);throw new Error("Field doesn't support isOdd")}equals(h){l(h);let{px:w,py:x,pz:p}=this,{px:I,py:R,pz:_}=h,v=e.eql(e.mul(w,_),e.mul(I,p)),C=e.eql(e.mul(x,_),e.mul(R,p));return v&&C}negate(){return new d(this.px,e.neg(this.py),this.pz)}double(){let{a:h,b:w}=t,x=e.mul(w,Gc),{px:p,py:I,pz:R}=this,_=e.ZERO,v=e.ZERO,C=e.ZERO,L=e.mul(p,p),M=e.mul(I,I),N=e.mul(R,R),O=e.mul(p,I);return O=e.add(O,O),C=e.mul(p,R),C=e.add(C,C),_=e.mul(h,C),v=e.mul(x,N),v=e.add(_,v),_=e.sub(M,v),v=e.add(M,v),v=e.mul(_,v),_=e.mul(O,_),C=e.mul(x,C),N=e.mul(h,N),O=e.sub(L,N),O=e.mul(h,O),O=e.add(O,C),C=e.add(L,L),L=e.add(C,L),L=e.add(L,N),L=e.mul(L,O),v=e.add(v,L),N=e.mul(I,R),N=e.add(N,N),L=e.mul(N,O),_=e.sub(_,L),C=e.mul(N,M),C=e.add(C,C),C=e.add(C,C),new d(_,v,C)}add(h){l(h);let{px:w,py:x,pz:p}=this,{px:I,py:R,pz:_}=h,v=e.ZERO,C=e.ZERO,L=e.ZERO,M=t.a,N=e.mul(t.b,Gc),O=e.mul(w,I),F=e.mul(x,R),T=e.mul(p,_),B=e.add(w,x),E=e.add(I,R);B=e.mul(B,E),E=e.add(O,F),B=e.sub(B,E),E=e.add(w,p);let y=e.add(I,_);return E=e.mul(E,y),y=e.add(O,T),E=e.sub(E,y),y=e.add(x,p),v=e.add(R,_),y=e.mul(y,v),v=e.add(F,T),y=e.sub(y,v),L=e.mul(M,E),v=e.mul(N,T),L=e.add(v,L),v=e.sub(F,L),L=e.add(F,L),C=e.mul(v,L),F=e.add(O,O),F=e.add(F,O),T=e.mul(M,T),E=e.mul(N,E),F=e.add(F,T),T=e.sub(O,T),T=e.mul(M,T),E=e.add(E,T),O=e.mul(F,E),C=e.add(C,O),O=e.mul(y,E),v=e.mul(B,v),v=e.sub(v,O),O=e.mul(B,F),L=e.mul(y,L),L=e.add(L,O),new d(v,C,L)}subtract(h){return this.add(h.negate())}is0(){return this.equals(d.ZERO)}wNAF(h){return b.wNAFCached(this,h,d.normalizeZ)}multiplyUnsafe(h){let{endo:w,n:x}=t;xt("scalar",h,de,x);let p=d.ZERO;if(h===de)return p;if(this.is0()||h===wt)return this;if(!w||b.hasPrecomputes(this))return b.wNAFCachedUnsafe(this,h,d.normalizeZ);let{k1neg:I,k1:R,k2neg:_,k2:v}=w.splitScalar(h),C=p,L=p,M=this;for(;R>de||v>de;)R&wt&&(C=C.add(M)),v&wt&&(L=L.add(M)),M=M.double(),R>>=wt,v>>=wt;return I&&(C=C.negate()),_&&(L=L.negate()),L=new d(e.mul(L.px,w.beta),L.py,L.pz),C.add(L)}multiply(h){let{endo:w,n:x}=t;xt("scalar",h,wt,x);let p,I;if(w){let{k1neg:R,k1:_,k2neg:v,k2:C}=w.splitScalar(h),{p:L,f:M}=this.wNAF(_),{p:N,f:O}=this.wNAF(C);L=b.constTimeNegate(R,L),N=b.constTimeNegate(v,N),N=new d(e.mul(N.px,w.beta),N.py,N.pz),p=L.add(N),I=M.add(O)}else{let{p:R,f:_}=this.wNAF(h);p=R,I=_}return d.normalizeZ([p,I])[0]}multiplyAndAddUnsafe(h,w,x){let p=d.BASE,I=(_,v)=>v===de||v===wt||!_.equals(p)?_.multiplyUnsafe(v):_.multiply(v),R=I(this,w).add(I(h,x));return R.is0()?void 0:R}toAffine(h){return u(this,h)}isTorsionFree(){let{h,isTorsionFree:w}=t;if(h===wt)return!0;if(w)return w(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h,clearCofactor:w}=t;return h===wt?this:w?w(d,this):this.multiplyUnsafe(t.h)}toRawBytes(h=!0){return Gt("isCompressed",h),this.assertValidity(),o(d,this,h)}toHex(h=!0){return Gt("isCompressed",h),ae(this.toRawBytes(h))}}d.BASE=new d(t.Gx,t.Gy,e.ONE),d.ZERO=new d(e.ZERO,e.ONE,e.ZERO);let g=t.nBitLength,b=_n(d,t.endo?Math.ceil(g/2):g);return{CURVE:t,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function Md(r){let t=Nr(r);return Kt(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function zc(r){let t=Md(r),{Fp:e,n}=t,o=e.BYTES+1,s=2*e.BYTES+1;function i(T){return Z(T,n)}function a(T){return Bn(T,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=Od({...t,toBytes(T,B,E){let y=B.toAffine(),A=e.toBytes(y.x),S=ue;return Gt("isCompressed",E),E?S(Uint8Array.from([B.hasEvenY()?2:3]),A):S(Uint8Array.from([4]),A,e.toBytes(y.y))},fromBytes(T){let B=T.length,E=T[0],y=T.subarray(1);if(B===o&&(E===2||E===3)){let A=ce(y);if(!Pr(A,wt,e.ORDER))throw new Error("Point is not on curve");let S=u(A),P;try{P=e.sqrt(S)}catch(H){let K=H instanceof Error?": "+H.message:"";throw new Error("Point is not on curve"+K)}let D=(P&wt)===wt;return(E&1)===1!==D&&(P=e.neg(P)),{x:A,y:P}}else if(B===s&&E===4){let A=e.fromBytes(y.subarray(0,e.BYTES)),S=e.fromBytes(y.subarray(e.BYTES,2*e.BYTES));return{x:A,y:S}}else{let A=o,S=s;throw new Error("invalid Point, expected length of "+A+", or uncompressed "+S+", got "+B)}}}),d=T=>ae(Ae(T,t.nByteLength));function g(T){let B=n>>wt;return T>B}function b(T){return g(T)?i(-T):T}let m=(T,B,E)=>ce(T.slice(B,E));class h{constructor(B,E,y){this.r=B,this.s=E,this.recovery=y,this.assertValidity()}static fromCompact(B){let E=t.nByteLength;return B=ot("compactSignature",B,E*2),new h(m(B,0,E),m(B,E,2*E))}static fromDER(B){let{r:E,s:y}=he.toSig(ot("DER",B));return new h(E,y)}assertValidity(){xt("r",this.r,wt,n),xt("s",this.s,wt,n)}addRecoveryBit(B){return new h(this.r,this.s,B)}recoverPublicKey(B){let{r:E,s:y,recovery:A}=this,S=_(ot("msgHash",B));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let P=A===2||A===3?E+t.n:E;if(P>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let D=(A&1)===0?"02":"03",k=c.fromHex(D+d(P)),H=a(P),K=i(-S*H),G=i(y*H),X=c.BASE.multiplyAndAddUnsafe(k,K,G);if(!X)throw new Error("point at infinify");return X.assertValidity(),X}hasHighS(){return g(this.s)}normalizeS(){return this.hasHighS()?new h(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return Oe(this.toDERHex())}toDERHex(){return he.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Oe(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}let w={isValidPrivateKey(T){try{return l(T),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let T=gs(t.n);return ec(t.randomBytes(T),t.n)},precompute(T=8,B=c.BASE){return B._setWindowSize(T),B.multiply(BigInt(3)),B}};function x(T,B=!0){return c.fromPrivateKey(T).toRawBytes(B)}function p(T){let B=Se(T),E=typeof T=="string",y=(B||E)&&T.length;return B?y===o||y===s:E?y===2*o||y===2*s:T instanceof c}function I(T,B,E=!0){if(p(T))throw new Error("first arg must be private key");if(!p(B))throw new Error("second arg must be public key");return c.fromHex(B).multiply(l(T)).toRawBytes(E)}let R=t.bits2int||function(T){if(T.length>8192)throw new Error("input is too large");let B=ce(T),E=T.length*8-t.nBitLength;return E>0?B>>BigInt(E):B},_=t.bits2int_modN||function(T){return i(R(T))},v=Dr(t.nBitLength);function C(T){return xt("num < 2^"+t.nBitLength,T,de,v),Ae(T,t.nByteLength)}function L(T,B,E=M){if(["recovered","canonical"].some(it=>it in E))throw new Error("sign() legacy options not supported");let{hash:y,randomBytes:A}=t,{lowS:S,prehash:P,extraEntropy:D}=E;S==null&&(S=!0),T=ot("msgHash",T),qc(E),P&&(T=ot("prehashed msgHash",y(T)));let k=_(T),H=l(B),K=[C(H),C(k)];if(D!=null&&D!==!1){let it=D===!0?A(e.BYTES):D;K.push(ot("extraEntropy",it))}let G=ue(...K),X=k;function st(it){let lt=R(it);if(!f(lt))return;let St=a(lt),Pt=c.BASE.multiply(lt).toAffine(),_t=i(Pt.x);if(_t===de)return;let Jt=i(St*i(X+_t*H));if(Jt===de)return;let re=(Pt.x===_t?0:2)|Number(Pt.y&wt),Ir=Jt;return S&&g(Jt)&&(Ir=b(Jt),re^=1),new h(_t,Ir,re)}return{seed:G,k2sig:st}}let M={lowS:t.lowS,prehash:!1},N={lowS:t.lowS,prehash:!1};function O(T,B,E=M){let{seed:y,k2sig:A}=L(T,B,E),S=t;return fs(S.hash.outputLen,S.nByteLength,S.hmac)(y,A)}c.BASE._setWindowSize(8);function F(T,B,E,y=N){let A=T;B=ot("msgHash",B),E=ot("publicKey",E);let{lowS:S,prehash:P,format:D}=y;if(qc(y),"strict"in y)throw new Error("options.strict was renamed to lowS");if(D!==void 0&&D!=="compact"&&D!=="der")throw new Error("format must be compact or der");let k=typeof A=="string"||Se(A),H=!k&&!D&&typeof A=="object"&&A!==null&&typeof A.r=="bigint"&&typeof A.s=="bigint";if(!k&&!H)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let K,G;try{if(H&&(K=new h(A.r,A.s)),k){try{D!=="compact"&&(K=h.fromDER(A))}catch(re){if(!(re instanceof he.Err))throw re}!K&&D!=="der"&&(K=h.fromCompact(A))}G=c.fromHex(E)}catch{return!1}if(!K||S&&K.hasHighS())return!1;P&&(B=t.hash(B));let{r:X,s:st}=K,it=_(B),lt=a(st),St=i(it*lt),Pt=i(X*lt),_t=c.BASE.multiplyAndAddUnsafe(G,St,Pt)?.toAffine();return _t?i(_t.x)===X:!1}return{CURVE:t,getPublicKey:x,getSharedSecret:I,sign:O,verify:F,ProjectivePoint:c,Signature:h,utils:w}}function Kd(r){return{hash:r,hmac:(t,...e)=>hr(r,t,os(...e)),randomBytes:Rr}}function Wc(r,t){let e=n=>zc({...r,...Kd(n)});return{...e(t),create:e}}var Zc=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),$c=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Fd=BigInt(1),li=BigInt(2),Xc=(r,t)=>(r+t/li)/t;function Hd(r){let t=Zc,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%t,u=l*l*r%t,f=at(u,e,t)*u%t,d=at(f,e,t)*u%t,g=at(d,li,t)*l%t,b=at(g,o,t)*g%t,m=at(b,s,t)*b%t,h=at(m,a,t)*m%t,w=at(h,c,t)*h%t,x=at(w,a,t)*m%t,p=at(x,e,t)*u%t,I=at(p,i,t)*b%t,R=at(I,n,t)*l%t,_=at(R,li,t);if(!ui.eql(ui.sqr(_),r))throw new Error("Cannot find square root");return _}var ui=ve(Zc,void 0,void 0,{sqrt:Hd}),ze=Wc({a:BigInt(0),b:BigInt(7),Fp:ui,n:$c,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=$c,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Fd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=Xc(s*r,t),c=Xc(-n*r,t),l=Z(r-a*e-c*o,t),u=Z(-a*n-c*s,t),f=l>i,d=u>i;if(f&&(l=t-l),d&&(u=t-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}}},te),mw=BigInt(0);var gw=ze.ProjectivePoint;function Yc(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function jc(r,t,e){let n=fe.digest(e instanceof Uint8Array?e:e.subarray());if(Yc(n))return n.then(({digest:o})=>ze.verify(t,o,r)).catch(o=>{throw new Hr(String(o))});try{return ze.verify(t,n.digest,r)}catch(o){throw new Hr(String(o))}}var Gn=class{type="secp256k1";raw;_key;constructor(t){this._key=Qc(t),this.raw=Jc(this._key)}toMultihash(){return se.digest(lr(this))}toCID(){return bt.createV1(114,this.toMultihash())}toString(){return nt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Rt(this.raw,t.raw)}verify(t,e){return jc(this._key,e,t)}};function fi(r){return new Gn(r)}function Jc(r){return ze.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Qc(r){try{return ze.ProjectivePoint.fromHex(r),r}catch(t){throw new je(String(t))}}function Gr(r,t){let{Type:e,Data:n}=Qt.decode(r),o=n??new Uint8Array;switch(e){case gt.RSA:return ai(o,t);case gt.Ed25519:return As(o);case gt.secp256k1:return fi(o);default:throw new De}}function tl(r){let{Type:t,Data:e}=Qt.decode(r.digest),n=e??new Uint8Array;switch(t){case gt.Ed25519:return As(n);case gt.secp256k1:return fi(n);default:throw new De}}function lr(r){return Qt.encode({Type:gt[r.type],Data:r.raw})}var el=Symbol.for("nodejs.util.inspect.custom"),Vd=114,zr=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Wo]=!0;toString(){return this.string==null&&(this.string=nt.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return bt.createV1(Vd,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return Rt(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return Rt(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[el](){return`PeerId(${this.toString()})`}},Wr=class extends zr{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},$r=class extends zr{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},Xr=class extends zr{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},qd=2336,zn=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=se.digest(J(this.url))}[el](){return`PeerId(${this.url})`}[Wo]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return bt.createV1(qd,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=q(t)),t.toString()===this.toString())}};function dr(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=we(nt.decode(`z${r}`));else{if(t==null)throw new rt('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=we(t.decode(r))}return Gd(e)}function hi(r){if(r.type==="Ed25519")return new $r({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Xr({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Wr({multihash:r.toCID().multihash,publicKey:r});throw new De}function Gd(r){if(Wd(r))return new Wr({multihash:r});if(zd(r))try{let t=tl(r);if(t.type==="Ed25519")return new $r({multihash:r,publicKey:t});if(t.type==="secp256k1")return new Xr({multihash:r,publicKey:t})}catch{let e=q(r.digest);return new zn(new URL(e))}throw new yn("Supplied PeerID Multihash is invalid")}function zd(r){return r.code===se.code}function Wd(r){return r.code===fe.code}var Wn=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,t);if(!Number.isNaN(d))return d});if(u===void 0)break;if(s*=t,s+=u,s>l||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var rl=45,$d=15,pr=new Wn;function di(r){if(!(r.length>$d))return pr.new(r).parseWith(()=>pr.readIPv4Addr())}function pi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>rl))return pr.new(r).parseWith(()=>pr.readIPv6Addr())}function $n(r,t=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>rl)return;let e=pr.new(r).parseWith(()=>pr.readIPAddr());if(e)return t&&e.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,e[0],e[1],e[2],e[3]]):e}var Lb=parseInt("0xFFFF",16),Bb=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Xn(r){return!!di(r)}function Zn(r){return!!pi(r)}function Yn(r){return!!$n(r)}var sl=Xn,Jd=Zn,mi=function(r){let t=0;if(r=r.toString().trim(),sl(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Jd(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=sl(e[n]),i;s&&(i=mi(e[n]),e[n]=q(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,q(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},il=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var mr={},gi={},tp=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];tp.forEach(r=>{let t=ep(...r);gi[t.code]=t,mr[t.name]=t});function ep(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function et(r){if(typeof r=="number"){if(gi[r]!=null)return gi[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(mr[r]!=null)return mr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var fx=et("ip4"),hx=et("ip6"),dx=et("ipcidr");function xi(r,t){switch(et(r).code){case 4:case 41:return np(t);case 42:return bi(t);case 43:return q(t,"base10");case 6:case 273:case 33:case 132:return ll(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return bi(t);case 421:return ap(t);case 444:return cl(t);case 445:return cl(t);case 466:return ip(t);case 481:return globalThis.encodeURIComponent(bi(t));default:return q(t,"base16")}}function Ei(r,t){switch(et(r).code){case 4:return al(t);case 41:return al(t);case 42:return wi(t);case 43:return J(t,"base10");case 6:case 273:case 33:case 132:return Si(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return wi(t);case 421:return op(t);case 444:return cp(t);case 445:return lp(t);case 466:return sp(t);case 481:return wi(globalThis.decodeURIComponent(t));default:return J(t,"base16")}}var yi=Object.values(Ve).map(r=>r.decoder),rp=function(){let r=yi[0].or(yi[1]);return yi.slice(2).forEach(t=>r=r.or(t)),r}();function al(r){if(!Yn(r))throw new Error("invalid ip address");return mi(r)}function np(r){let t=il(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Yn(t))throw new Error("invalid ip address");return t}function Si(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function ll(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function wi(r){let t=J(r),e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function bi(r){let t=Ut(r);if(r=r.slice(Q(t)),r.length!==t)throw new Error("inconsistent lengths");return q(r)}function op(r){let t;r[0]==="Q"||r[0]==="1"?t=we(nt.decode(`z${r}`)).bytes:t=bt.parse(r).multihash.bytes;let e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function sp(r){let t=rp.decode(r),e=Uint8Array.from(Ft(t.length));return yt([e,t],e.length+t.length)}function ip(r){let t=Ut(r),e=r.slice(Q(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+q(e,"base64url")}function ap(r){let t=Ut(r),e=r.slice(Q(t));if(e.length!==t)throw new Error("inconsistent lengths");return q(e,"base58btc")}function cp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=oe.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Si(n);return yt([e,o],e.length+o.length)}function lp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=oe.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Si(n);return yt([e,o],e.length+o.length)}function cl(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=q(t,"base32"),o=ll(e);return`${n}:${o}`}function ul(r){r=Ai(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=et(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw new jn("invalid address: "+r);if(a.path===!0){n=Ai(o.slice(s).join("/")),t.push([a.code,Ei(a.code,n)]),e.push([a.code,n]);break}let c=Ei(a.code,o[s]);t.push([a.code,c]),e.push([a.code,xi(a.code,c)])}return{string:fl(e),bytes:Jn(t),tuples:t,stringTuples:e,path:n}}function vi(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=Ut(r,o),i=Q(s),a=et(s),c=up(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw new jn("Invalid address Uint8Array: "+q(r,"base16"));t.push([s,l]);let u=xi(s,l);if(e.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:fl(e),tuples:t,stringTuples:e,path:n}}function fl(r){let t=[];return r.map(e=>{let n=et(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Ai(t.join("/"))}function Jn(r){return yt(r.map(t=>{let e=et(t[0]),n=Uint8Array.from(Ft(e.code));return t.length>1&&t[1]!=null&&(n=yt([n,t[1]])),n}))}function up(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=Ut(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Q(e)}}function Ai(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}var jn=class extends Error{static name="ParseError";name="ParseError";constructor(t){super(`Error parsing address: ${t}`)}};var fp=Symbol.for("nodejs.util.inspect.custom"),Ti=Symbol.for("@multiformats/js-multiaddr/multiaddr"),hp=[et("dns").code,et("dns4").code,et("dns6").code,et("dnsaddr").code],Ii=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},Qn=class r{bytes;#t;#e;#r;#n;[Ti]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=vi(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=ul(t)}else if(dl(t))e=vi(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=et("tcp"),a=et("udp"),c=et("ip4"),l=et("ip6"),u=et("dns6"),f=et("ip6zone");for(let[g,b]of this.stringTuples())g===f.code&&(s=`%${b??""}`),hp.includes(g)&&(e=i.name==="tcp"?"tcp":"udp",o=443,n=`${b??""}${s}`,t=g===u.code?6:4),(g===i.code||g===a.code)&&(e=et(g).name==="tcp"?"tcp":"udp",o=parseInt(b??"")),(g===c.code||g===l.code)&&(e=et(g).name==="tcp"?"tcp":"udp",n=`${b??""}${s}`,t=g===l.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},et(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>et(t).name)}tuples(){return this.#e.map(([t,e])=>e==null?[t]:[t,e])}stringTuples(){return this.#r.map(([t,e])=>e==null?[t]:[t,e])}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Jn(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===mr.p2p.code&&t.push([n,o]),n===mr["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?q(nt.decode(`z${n}`),"base58btc"):q(bt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return Rt(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=hl.get(e.name);if(n==null)throw new Ii(`no available resolver for ${e.name}`);return(await n(this,t)).map(s=>ee(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[fp](){return`Multiaddr(${this.#t})`}};var hl=new Map;function dl(r){return!!r?.[Ti]}function ee(r){return new Qn(r)}var dp=r=>r.toString().split("/").slice(1),gr=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),W=r=>({match:t=>gr(e=>e===r).match(t),pattern:r}),We=()=>({match:r=>gr(t=>typeof t=="string").match(r),pattern:"{string}"}),Zr=()=>({match:r=>gr(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),tt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{nt.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Yr=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Or.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Y=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),Lt=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),$=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function ct(...r){function t(o){let s=dp(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matchers:r,matches:e,exactMatch:n}}var eo=$(W("dns4"),We()),ro=$(W("dns6"),We()),no=$(W("dnsaddr"),We()),Bi=$(W("dns"),We()),Gx=ct(eo,Y(tt())),zx=ct(ro,Y(tt())),Wx=ct(no,Y(tt())),$x=ct(Lt(Bi,no,eo,ro),Y(tt())),pl=$(W("ip4"),gr(Xn)),ml=$(W("ip6"),gr(Zn)),Ci=Lt(pl,ml),pe=Lt(Ci,Bi,eo,ro,no),Xx=ct(Lt(Ci,$(Lt(Bi,no,eo,ro),Y(tt())))),Zx=ct(pl),Yx=ct(ml),jx=ct(Ci),_i=$(pe,W("tcp"),Zr()),jr=$(pe,W("udp"),Zr()),Jx=ct($(_i,Y(tt()))),Qx=ct(jr),Ri=$(jr,W("quic"),Y(tt())),oo=$(jr,W("quic-v1"),Y(tt())),pp=Lt(Ri,oo),t1=ct(Ri),e1=ct(oo),Li=Lt(pe,_i,jr,Ri,oo),gl=Lt($(Li,W("ws"),Y(tt()))),r1=ct(gl),yl=Lt($(Li,W("wss"),Y(tt())),$(Li,W("tls"),Y($(W("sni"),We())),W("ws"),Y(tt()))),n1=ct(yl),wl=$(jr,W("webrtc-direct"),Y(Yr()),Y(Yr()),Y(tt())),bl=ct(wl),xl=$(oo,W("webtransport"),Y(Yr()),Y(Yr()),Y(tt())),o1=ct(xl),to=Lt(gl,yl,$(_i,Y(tt())),$(pp,Y(tt())),$(pe,Y(tt())),wl,xl,tt()),El=ct(to),mp=$(to,W("p2p-circuit"),tt()),s1=ct(mp),gp=Lt($(to,W("p2p-circuit"),W("webrtc"),Y(tt())),$(to,W("webrtc"),Y(tt())),$(W("webrtc"),Y(tt()))),Sl=ct(gp),yp=Lt($(pe,W("tcp"),Zr(),W("http"),Y(tt())),$(pe,W("http"),Y(tt()))),i1=ct(yp),wp=Lt($(pe,W("tcp"),Lt($(W("443"),W("http")),$(Zr(),W("https"))),Y(tt())),$(pe,W("tls"),W("http"),Y(tt())),$(pe,W("https"),Y(tt()))),a1=ct(wp),bp=Lt($(W("memory"),We(),Y(tt()))),c1=ct(bp);var Bt;(function(r){let t;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(t=r.Flag||(r.Flag={}));let e;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(e||(e={})),function(o){o.codec=()=>Ge(e)}(t=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=Yt((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.flag=r.Flag.codec().decode(o);break}case 2:{a.message=o.bytes();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Zt(o,r.codec()),r.decode=(o,s)=>Xt(o,r.codec(),s)})(Bt||(Bt={}));var Al=["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478","stun:stun.cloudflare.com:3478","stun:stun.services.mozilla.com:3478"],Pi=Array.from("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"),vl="libp2p+webrtc+v1/";var Il=466,Tl=2*1024*1024,Ll=30*1e3,yr=16*1024;function xp(r=yr){let t=Q(r-Q(r)),e=1+Q(Object.keys(Bt.Flag).length-1),n=1,o=r-t-e-n,s=Q(o);return t+e+n+s}var Bl=xp(),Cl=5e3,_l=5e3,Rl=301e3,Di="/webrtc",Jr="/webrtc-signaling/0.0.1";var Pl=function(r,t,e){if(e||arguments.length===2)for(var n=0,o=t.length,s;n<o;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return r.concat(s||Array.prototype.slice.call(t))},Ep=function(){function r(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"}return r}();var Sp=function(){function r(t){this.version=t,this.type="node",this.name="node",this.os=process.platform}return r}();var Ap=function(){function r(t,e,n,o){this.name=t,this.version=e,this.os=n,this.bot=o,this.type="bot-device"}return r}();var vp=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var Ip=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var Tp=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,Lp=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,Dl=3,Bp=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",Tp]],Nl=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function kl(r){return r?Ul(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Ip:typeof navigator<"u"?Ul(navigator.userAgent):Rp()}function Cp(r){return r!==""&&Bp.reduce(function(t,e){var n=e[0],o=e[1];if(t)return t;var s=o.exec(r);return!!s&&[n,s]},!1)}function Ul(r){var t=Cp(r);if(!t)return null;var e=t[0],n=t[1];if(e==="searchbot")return new vp;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<Dl&&(o=Pl(Pl([],o,!0),Pp(Dl-o.length),!0)):o=[];var s=o.join("."),i=_p(r),a=Lp.exec(r);return a&&a[1]?new Ap(e,s,i,a[1]):new Ep(e,s,i)}function _p(r){for(var t=0,e=Nl.length;t<e;t++){var n=Nl[t],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function Rp(){var r=typeof process<"u"&&process.version;return r?new Sp(process.version.slice(1)):null}function Pp(r){for(var t=[],e=0;e<r;e++)t.push("0");return t}function ht(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ni=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},Ui=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},Ol=r=>globalThis.DOMException===void 0?new Ui(r):new DOMException(r),Ml=r=>{let t=r.reason===void 0?Ol("This operation was aborted."):r.reason;return t instanceof Error?t:Ol(t)};function Qr(r,t){let{milliseconds:e,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=t,i,a,l=new Promise((u,f)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(t.signal){let{signal:g}=t;g.aborted&&f(Ml(g)),a=()=>{f(Ml(g))},g.addEventListener("abort",a,{once:!0})}if(e===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new Ni;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(g){f(g)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${e} milliseconds`,f(d))},e),(async()=>{try{u(await r)}catch(g){f(g)}})()}).finally(()=>{l.clear(),a&&t.signal&&t.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var Kl=kl(),tn=Kl!=null&&Kl.name==="firefox",so=async function*(){},io=async r=>{};function Fl(r,t,e=Rl,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",t,r.bufferedAmount);let o=ht(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",t),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await Qr(o.promise,{milliseconds:e})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}async function ki(r){return r=r??{},typeof r=="function"&&(r=await r()),r.iceServers=r.iceServers??Al.map(t=>({urls:[t]})),r}var Hl=(r=32)=>vl+[...Array(r)].map(()=>Pi.at(Math.floor(Math.random()*Pi.length))).join("");var $e=class{log;peerConnection;remoteAddr;timeline;metrics;source=so();sink=io;constructor(t,e){this.log=t.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=e.remoteAddr,this.timeline=e.timeline,this.peerConnection=e.peerConnection;let n=this.peerConnection,o=n.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",n.connectionState,"initial state",o),(n.connectionState==="disconnected"||n.connectionState==="failed"||n.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(t){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(t){this.log.error("closing connection due to error",t),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var ao=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||(t-1&t)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},wr=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new ao(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new ao(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var Oi=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Ce(r={}){return Dp(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Dp(r,t){t=t??{};let e=t.onEnd,n=new wr,o,s,i,a=ht(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((h,w)=>{s=x=>{s=null,n.push(x);try{h(r(n))}catch(p){w(p)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ht()})}},l=h=>s!=null?s(h):(n.push(h),o),u=h=>(n=new wr,s!=null?s({error:h}):(n.push({error:h}),o)),f=h=>{if(i)return o;if(t?.objectMode!==!0&&h?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:h})},d=h=>i?o:(i=!0,h!=null?u(h):l({done:!0})),g=()=>(n=new wr,d(),{done:!0}),b=h=>(d(h),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:g,throw:b,push:f,end:d,get readableLength(){return n.size},onEmpty:async h=>{let w=h?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let x,p;w!=null&&(x=new Promise((I,R)=>{p=()=>{R(new Oi)},w.addEventListener("abort",p)}));try{await Promise.race([a.promise,x])}finally{p!=null&&w!=null&&w?.removeEventListener("abort",p)}}},e==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(h){return m.throw(h),e!=null&&(e(h),e=void 0),{done:!0}},return(){return m.return(),e!=null&&(e(),e=void 0),{done:!0}},push:f,end(h){return m.end(h),e!=null&&(e(h),e=void 0),o},get readableLength(){return m.readableLength},onEmpty:h=>m.onEmpty(h)},o}var co=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function jt(r,t,e){if(t==null)return r;if(t.aborted)return r.catch(()=>{}),Promise.reject(new co(e?.errorMessage,e?.errorCode,e?.errorName));let n,o=new co(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}function Vl(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function ql(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Gl(r,t){let e=Vl(r).return?.();ql(e)&&e.catch(n=>{t.error("could not cause iterator to return",n)})}var Np=5e3;function Mi(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var lo=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(t){this.sinkController=new AbortController,this.sinkEnd=ht(),this.closed=ht(),this.log=t.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=t.id,this.metadata=t.metadata??{},this.direction=t.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=t.sendCloseWriteTimeout??Np,this.onEnd=t.onEnd,this.onCloseRead=t?.onCloseRead,this.onCloseWrite=t?.onCloseWrite,this.onReset=t?.onReset,this.onAbort=t?.onAbort,this.source=this.streamSource=Ce({onEnd:e=>{e!=null?this.log.trace("source ended with error",e):this.log.trace("source ended"),this.onSourceEnd(e)}}),this.sink=this.sink.bind(this)}async sink(t){if(this.writeStatus!=="ready")throw new Pe(`writable end state is "${this.writeStatus}" not "ready"`);try{this.writeStatus="writing";let e={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(e);Mi(o)&&await o}let n=()=>{Gl(t,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of t){o=o instanceof Uint8Array?new z(o):o;let s=this.sendData(o,e);Mi(s)&&(this.sendingData=ht(),await s,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(e){throw this.log.trace("sink ended with error, calling abort with error",e),this.abort(e),e}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(t){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",t!=null&&this.endErr==null&&(this.endErr=t),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(t){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",t!=null&&this.endErr==null&&(this.endErr=t),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(t){this.status==="open"&&(this.log.trace("closing gracefully"),this.status="closing",await jt(Promise.all([this.closeWrite(t),this.closeRead(t),this.closed.promise]),t?.signal),this.status="closed",this.log.trace("closed gracefully"))}async closeRead(t={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let e=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(t)),e==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(t={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await jt(this.sink([]),t.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await jt(this.sendingData.promise,t.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await jt(this.sinkEnd.promise,t.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(t){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",t),this.log("try to send reset to remote");let e=this.sendReset();Mi(e)&&e.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(t),this.onAbort?.(t)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let t=new gn("stream reset");this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(t),this.onReset?.()}_closeSinkAndSource(t){this._closeSink(t),this._closeSource(t)}_closeSink(t){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(t)}_closeSource(t){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(t))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(t){this.streamSource.push(t)}sourceReadableLength(){return this.streamSource.readableLength}};function Ki(r){let t=new globalThis.AbortController;function e(){t.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}for(let s of r){if(s?.aborted===!0){e();break}s?.addEventListener!=null&&s.addEventListener("abort",e)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}let o=t.signal;return o.clear=n,o}var uo=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},br=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},fo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},en=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ho(r){return r[Symbol.asyncIterator]!=null}function zl(r,t){if(r.byteLength>t)throw new br("Message length too long")}var mo=r=>{let t=Q(r),e=dt(t);return Ft(r,e),mo.bytes=t,e};mo.bytes=0;function rn(r,t){t=t??{};let e=t.lengthEncoder??mo,n=t?.maxDataLength??4194304;function*o(s){zl(s,n);let i=e(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ho(r)?async function*(){for await(let s of r)yield*o(s)}():function*(){for(let s of r)yield*o(s)}()}rn.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??mo,n=t?.maxDataLength??4194304;return zl(r,n),new z(e(r.byteLength),r)};var Xe;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Xe||(Xe={}));var Fi=r=>{let t=Ut(r);return Fi.bytes=Q(t),t};Fi.bytes=0;function nn(r,t){let e=new z,n=Xe.LENGTH,o=-1,s=t?.lengthDecoder??Fi,i=t?.maxLengthLength??8,a=t?.maxDataLength??4194304;function*c(){for(;e.byteLength>0;){if(n===Xe.LENGTH)try{if(o=s(e),o<0)throw new uo("Invalid message length");if(o>a)throw new br("Message length too long");let l=s.bytes;e.consume(l),t?.onLength!=null&&t.onLength(o),n=Xe.DATA}catch(l){if(l instanceof RangeError){if(e.byteLength>i)throw new fo("Message length length too long");break}throw l}if(n===Xe.DATA){if(e.byteLength<o)break;let l=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(l),yield l,n=Xe.LENGTH}}}return ho(r)?async function*(){for await(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new en("Unexpected end of input")}():function*(){for(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new en("Unexpected end of input")}()}nn.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return nn(n,{...t??{},onLength:s=>{e=s}})};var Hi=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function on(r,t,e,n){let o=new Hi(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){e?.removeEventListener("abort",u),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(d){a(),i(d);return}a(),s(f)},l=f=>{a(),i(f.detail)},u=()=>{a(),i(o)};e?.addEventListener("abort",u),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Vi=class extends lo{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;closeController;constructor(t){let e=t.onEnd;switch(t.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await Qr(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),this.channel.close(),e?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(t),this.channel=t.channel,this.channel.binaryType="arraybuffer",this.incomingData=Ce(),this.bufferedAmountLowEventTimeout=t.bufferedAmountLowEventTimeout??Ll,this.maxBufferedAmount=t.maxBufferedAmount??Tl,this.maxMessageSize=(t.maxMessageSize??yr)-Bl,this.receiveFinAck=ht(),this.finAckTimeout=t.closeTimeout??Cl,this.openTimeout=t.openTimeout??_l,this.closeController=new AbortController,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new Pe("Unknown datachannel state")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.log.trace("received onclose event"),this.closeController.abort(),this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{this.log.trace("received onerror event"),this.closeController.abort();let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of nn(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new z(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(t,e=!0){if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new Pe(`Invalid datachannel state - ${this.channel.readyState}`);if(this.channel.readyState!=="open"){let n=AbortSignal.timeout(this.openTimeout),o=Ki([this.closeController.signal,n]);try{this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await on(this.channel,"open",o)}finally{o.clear()}this.log('channel state is now "%s", sending data',this.channel.readyState)}if(e&&this.channel.bufferedAmount>this.maxBufferedAmount){let n=AbortSignal.timeout(this.bufferedAmountLowEventTimeout),o=Ki([this.closeController.signal,n]);try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await on(this.channel,"bufferedamountlow",o)}catch(s){throw n.aborted?new bn(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`):s}finally{o.clear()}}try{this.channel.send(t.subarray())}catch(n){this.log.error("error while sending message",n)}}async sendData(t){for(this.log.trace("-> will send %d bytes",t.byteLength),t=t.sublist();t.byteLength>0;){let e=Math.min(t.byteLength,this.maxMessageSize),n=t.subarray(0,e),o=Bt.encode({message:n}),s=rn.single(o);this.log.trace("-> sending message %s",this.channel.readyState),await this._sendMessage(s),this.log.trace("-> sent message %s",this.channel.readyState),t.consume(e)}this.log.trace("-> sent data %s",this.channel.readyState)}async sendReset(){try{await this._sendFlag(Bt.Flag.RESET)}catch(t){this.log.error("failed to send reset - %e",t)}}async sendCloseWrite(t){if(this.channel.readyState!=="open"){this.receiveFinAck.resolve();return}if(await this._sendFlag(Bt.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await jt(this.receiveFinAck.promise,t?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorName:"FinAckNotReceivedError"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){this.channel.readyState==="open"&&await this._sendFlag(Bt.Flag.STOP_SENDING)}processIncomingProtobuf(t){let e=Bt.decode(t);if(e.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',e.flag,this.writeStatus,this.readStatus),e.flag===Bt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Bt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),e.flag===Bt.Flag.RESET&&this.reset(),e.flag===Bt.Flag.STOP_SENDING&&this.remoteCloseRead(),e.flag===Bt.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return e.message}async _sendFlag(t){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,t.toString()),!1;this.log.trace("sending flag %s",t.toString());let e=Bt.encode({flag:t}),n=rn.single(e);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s - %e",t.toString(),o)}return!1}};function xr(r){let{channel:t,direction:e}=r;return new Vi({id:e==="inbound"?`i${t.id}`:`r${t.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${e}:${t.id}`),...r})}var _e=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(t,e){this.components=t,this.peerConnection=e.peerConnection,this.metrics=e.metrics,this.protocol=e.protocol??Di,this.dataChannelOptions=e.dataChannelOptions??{},this.log=t.logger.forComponent("libp2p:webrtc:muxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=xr({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:t.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(t){return new qi(this.components,{...t,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},qi=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(t,e){this.init=e,this.log=t.logger.forComponent("libp2p:webrtc:muxer"),this.logger=t.logger,this.streams=e.streams.map(n=>n.stream),this.peerConnection=e.peerConnection,this.protocol=e.protocol??Di,this.metrics=e.metrics,this.dataChannelOptions=e.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=n.id,s=xr({channel:n,direction:"inbound",onEnd:()=>{this.#t(s,n),this.log("incoming channel %s ended",o)},logger:this.logger,...this.dataChannelOptions});this.streams.push(s),this.metrics?.increment({incoming_stream:!0}),e?.onIncomingStream?.(s)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#t(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#t(t,e){this.log.trace("stream %s %s %s onEnd",t.direction,t.id,t.protocol),Fl(e,`${t.direction} ${t.id} ${t.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==t.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(t)}async close(t){try{await Promise.all(this.streams.map(async e=>e.close(t)))}catch(e){this.abort(e)}}abort(t){for(let e of this.streams)e.abort(t)}source=so();sink=io;newStream(){let t=this.peerConnection.createDataChannel(""),e=t.id;this.log.trace("opened outgoing datachannel with channel id %s",e);let n=xr({channel:t,direction:"outbound",onEnd:()=>{this.#t(n,t),this.log("outgoing channel %s ended",e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(n),this.metrics?.increment({outgoing_stream:!0}),n}};var go=globalThis.RTCPeerConnection,yo=globalThis.RTCSessionDescription,Wl=globalThis.RTCIceCandidate;var Gi=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ht(),this.haveNext=ht()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ht(),t}async throw(t){return this.ended=!0,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return this.ended=!0,this.nextResult=t,this.haveNext.resolve(),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ht(),await jt(this.readNext.promise,e?.signal,e)}};function $l(){return new Gi}var wo=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var zi=class extends Error{code;constructor(t,e){super(t),this.code=e}},Wi=class extends zi{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Xl(r,t){let e=$l();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new z;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new Wi("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:f,value:d}=await Promise.race([n.next(),l]);return f===!0?new z:d}for(;o.byteLength<i;){let{value:f,done:d}=await Promise.race([n.next(),l]);if(d===!0)throw new wo("unexpected end of input");o.append(f)}let u=o.sublist(0,i);return o.consume(i),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var bo=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},xo=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Eo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function sn(r,t={}){let e=Xl(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=Q(t.maxDataLength));let n=t?.lengthDecoder??Ut,o=t?.lengthEncoder??Ft;return{read:async i=>{let a=-1,c=new z;for(;;){c.append(await e.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new bo("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Eo("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new xo("message length too long");return e.read(a,i)},write:async(i,a)=>{await e.write(new z(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new z(...i.flatMap(l=>[o(l.byteLength),l]));await e.write(c,a)},unwrap:()=>e.unwrap()}}function So(r,t){let e=sn(r,t),n={read:async(o,s)=>{let i=await e.read(s);return o.decode(i)},write:async(o,s,i)=>{await e.write(s.encode(o),i)},writeV:async(o,s,i)=>{await e.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var Ot=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Re=class extends Error{constructor(t){super(`WebRTC transport error: ${t}`),this.name="WebRTCTransportError"}},Vt=class extends Re{constructor(t="SDP handshake failed"){super(t),this.name="SDPHandshakeFailedError"}};var Ao=class extends Re{constructor(t,e){super(`Invalid fingerprint "${t}" within ${e}`),this.name="WebRTC/InvalidFingerprintError"}};var vo=class extends Re{constructor(t){super(`A method (${t}) was called though it has been intentionally left unimplemented.`),this.name="WebRTC/UnimplementedError"}},Io=class extends Re{constructor(t){super(`unsupported hash algorithm code: ${t} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `),this.name="WebRTC/UnsupportedHashAlgorithmError"}};var Nt;(function(r){let t;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(t=r.Type||(r.Type={}));let e;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(e||(e={})),function(o){o.codec=()=>Ge(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Yt((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(o);break}case 2:{a.data=o.string();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Zt(o,r.codec()),r.decode=(o,s)=>Xt(o,r.codec(),s)})(Nt||(Nt={}));var To=async(r,t,e)=>{try{let n=ht();for(Op(r,n);;){let o=await Promise.race([n.promise,t.read({signal:e.signal}).catch(()=>{})]);if(o==null){e.signal?.throwIfAborted();break}if(o.type!==Nt.Type.ICE_CANDIDATE)throw new wn("ICE candidate message expected");let s=JSON.parse(o.data??"null");if(s===""||s===null){e.onProgress?.(new Ot("webrtc:end-of-ice-candidates")),e.log.trace("end-of-candidates received");continue}let i=new Wl(s);e.log.trace("%s received new ICE candidate %o",e.direction,s);try{e.onProgress?.(new Ot("webrtc:add-ice-candidate",i.candidate)),await r.addIceCandidate(i)}catch(a){e.log.error("%s bad candidate received",e.direction,s,a)}}}catch(n){if(e.log.error("%s error parsing ICE candidate",e.direction,n),e.signal?.aborted===!0&&Lo(r)!=="connected")throw n}};function Lo(r){return tn?r.iceConnectionState:r.connectionState}function Op(r,t){r[tn?"oniceconnectionstatechange":"onconnectionstatechange"]=e=>{switch(Lo(r)){case"connected":t.resolve();break;case"failed":case"disconnected":case"closed":t.reject(new mn("RTCPeerConnection was closed"));break;default:break}}}async function Zl({rtcConfiguration:r,dataChannel:t,signal:e,metrics:n,multiaddr:o,connectionManager:s,transportManager:i,log:a,logger:c,onProgress:l}){let{baseAddr:u}=Yl(o);n?.dialerEvents.increment({open:!0}),a.trace("dialing base address: %a",u);let f=u.getPeerId();if(f==null)throw new rt("Relay peer was missing");let d=s.getConnections(dr(f)),g,b=!1;d.length===0?(l?.(new Ot("webrtc:dial-relay")),g=await i.dial(u,{signal:e,onProgress:l}),b=!0):(l?.(new Ot("webrtc:reuse-relay-connection")),g=d[0]);try{l?.(new Ot("webrtc:open-signaling-stream"));let m=await g.newStream(Jr,{signal:e,runOnLimitedConnection:!0}),h=So(m).pb(Nt),w=new go(r),x=new _e({logger:c},{peerConnection:w,dataChannelOptions:t});try{let p=w.createDataChannel("init");w.onicecandidate=({candidate:v})=>{let C=JSON.stringify(v?.toJSON()??null);a.trace("initiator sending ICE candidate %o",v),h.write({type:Nt.Type.ICE_CANDIDATE,data:C},{signal:e}).catch(L=>{a.error("error sending ICE candidate",L)})},w.onicecandidateerror=v=>{a.error("initiator ICE candidate error",v)};let I=await w.createOffer().catch(v=>{throw a.error("could not execute createOffer",v),new Vt("Failed to set createOffer")});a.trace("initiator send SDP offer %s",I.sdp),l?.(new Ot("webrtc:send-sdp-offer")),await h.write({type:Nt.Type.SDP_OFFER,data:I.sdp},{signal:e}),await w.setLocalDescription(I).catch(v=>{throw a.error("could not execute setLocalDescription",v),new Vt("Failed to set localDescription")}),l?.(new Ot("webrtc:read-sdp-answer")),a.trace("initiator read SDP answer");let R=await h.read({signal:e});if(R.type!==Nt.Type.SDP_ANSWER)throw new Vt("Remote should send an SDP answer");a.trace("initiator received SDP answer %s",R.data);let _=new yo({type:"answer",sdp:R.data});return await w.setRemoteDescription(_).catch(v=>{throw a.error("could not execute setRemoteDescription",v),new Vt("Failed to set remoteDescription")}),a.trace("initiator read candidates until connected"),l?.(new Ot("webrtc:read-ice-candidates")),await To(w,h,{direction:"initiator",signal:e,log:a,onProgress:l}),a.trace("initiator connected, closing init channel"),p.close(),l?.(new Ot("webrtc:close-signaling-stream")),a.trace("closing signaling channel"),await m.close({signal:e}),a.trace("initiator connected to remote address %s",o),{remoteAddress:o,peerConnection:w,muxerFactory:x}}catch(p){throw a.error("outgoing signaling error",p),w.close(),m.abort(p),p}finally{w.onicecandidate=null,w.onicecandidateerror=null}}finally{if(b)try{await g.close({signal:e})}catch(m){g.abort(m)}}}var jl=ct(El.matchers[0],W("p2p-circuit")),Bo=class r extends Je{transportManager;shutdownController;events;constructor(t,e){super(),this.transportManager=t.transportManager,this.events=t.events,this.shutdownController=e.shutdownController,this.onTransportListening=this.onTransportListening.bind(this)}async listen(){this.events.addEventListener("transport:listening",this.onTransportListening)}onTransportListening(t){t.detail.getAddrs().filter(n=>jl.exactMatch(n)).map(n=>n.encapsulate("/webrtc")).length>0&&this.safeDispatchEvent("listening")}getAddrs(){return this.transportManager.getListeners().filter(t=>!(t instanceof r)).map(t=>t.getAddrs().filter(e=>jl.exactMatch(e)).map(e=>e.encapsulate("/webrtc"))).flat()}updateAnnounceAddrs(){}async close(){this.events.removeEventListener("transport:listening",this.onTransportListening),this.shutdownController.abort(),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};async function Jl({peerConnection:r,stream:t,signal:e,connection:n,log:o}){o.trace("new inbound signaling stream");let s=So(t).pb(Nt);try{r.onicecandidate=({candidate:u})=>{let f=JSON.stringify(u?.toJSON()??null);o.trace("recipient sending ICE candidate %s",f),s.write({type:Nt.Type.ICE_CANDIDATE,data:f},{signal:e}).catch(d=>{o.error("error sending ICE candidate",d)})},o.trace("recipient read SDP offer");let a=await s.read({signal:e});if(a.type!==Nt.Type.SDP_OFFER)throw new Vt(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `);o.trace("recipient received SDP offer %s",a.data);let c=new yo({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(u=>{throw o.error("could not execute setRemoteDescription",u),new Vt("Failed to set remoteDescription")});let l=await r.createAnswer().catch(u=>{throw o.error("could not execute createAnswer",u),new Vt("Failed to create answer")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:Nt.Type.SDP_ANSWER,data:l.sdp},{signal:e}),await r.setLocalDescription(l).catch(u=>{throw o.error("could not execute setLocalDescription",u),new Vt("Failed to set localDescription")}),o.trace("recipient read candidates until connected"),await To(r,s,{direction:"recipient",signal:e,log:o})}catch(a){if(Lo(r)!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=ee(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var Co=class{components;init;log;_started=!1;metrics;shutdownController;constructor(t,e={}){this.components=t,this.init=e,this.log=t.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,this.shutdownController.signal,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:t.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}[dn]=!0;[Symbol.toStringTag]="@libp2p/webrtc";[Qe]=["@libp2p/transport"];[Ba]=["@libp2p/identify","@libp2p/circuit-relay-v2-transport"];isStarted(){return this._started}async start(){await this.components.registrar.handle(Jr,t=>{let e=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);this._onProtocol(t,e).catch(n=>{this.log.error("failed to handle incoming connect from %p",t.connection.remotePeer,n)}).finally(()=>{e.clear()})},{runOnLimitedConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(Jr),this._started=!1}createListener(t){return new Bo(this.components,{shutdownController:this.shutdownController})}listenFilter(t){return t.filter(Sl.exactMatch)}dialFilter(t){return this.listenFilter(t)}async dial(t,e){this.log.trace("dialing address: %a",t);let{remoteAddress:n,peerConnection:o,muxerFactory:s}=await Zl({rtcConfiguration:await ki(this.init.rtcConfiguration),dataChannel:this.init.dataChannel,multiaddr:t,dataChannelOptions:this.init.dataChannel,signal:e.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log,logger:this.components.logger,onProgress:e.onProgress}),i=new $e(this.components,{peerConnection:o,timeline:{open:Date.now()},remoteAddr:n,metrics:this.metrics?.dialerEvents}),a=await e.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:s,onProgress:e.onProgress,signal:e.signal});return this._closeOnShutdown(o,i),a}async _onProtocol({connection:t,stream:e},n){let o=new go(await ki(this.init.rtcConfiguration)),s=new _e(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await Jl({peerConnection:o,connection:t,stream:e,signal:n,log:this.log});await e.close({signal:n});let a=new $e(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s,signal:n}),this._closeOnShutdown(o,a)}catch(i){throw this.log.error("incoming signaling error",i),o.close(),e.abort(i),i}}_closeOnShutdown(t,e){let n=()=>{e.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),t.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function Yl(r){let t=r.toString().split("/webrtc/");if(t.length!==2)throw new rt("webrtc protocol was not present in multiaddr");if(!t[0].includes("/p2p-circuit"))throw new rt("p2p-circuit protocol was not present in multiaddr");let e=ee(t[0]),o=ee("/"+t[1]).getPeerId();if(o==null)throw new rt("destination peer id was missing");let s=e.protos().pop();if(s===void 0)throw new rt("invalid multiaddr");return s.name!=="p2p"&&(e=e.encapsulate(`/p2p/${o}`)),{baseAddr:e,peerId:dr(o)}}var _o=class extends Je{async listen(){throw new vo("WebRTCTransport.createListener")}getAddrs(){return[]}updateAnnounceAddrs(){}async close(){}};function Ro(r){return r[Symbol.asyncIterator]!=null}var Po=r=>{let t=Q(r),e=dt(t);return Ft(r,e),Po.bytes=t,e};Po.bytes=0;function Ql(r,t){t=t??{};let e=t.lengthEncoder??Po;function*n(o){let s=e(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Ro(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Ql.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??Po;return new z(e(r.byteLength),r)};var Do=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},No=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Uo=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},an=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var Mp=8,Kp=1024*1024*4,Ze;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ze||(Ze={}));var $i=r=>{let t=Ut(r);return $i.bytes=Q(t),t};$i.bytes=0;function cn(r,t){let e=new z,n=Ze.LENGTH,o=-1,s=t?.lengthDecoder??$i,i=t?.maxLengthLength??Mp,a=t?.maxDataLength??Kp;function*c(){for(;e.byteLength>0;){if(n===Ze.LENGTH)try{if(o=s(e),o<0)throw new Do("Invalid message length");if(o>a)throw new No("Message length too long");let l=s.bytes;e.consume(l),t?.onLength!=null&&t.onLength(o),n=Ze.DATA}catch(l){if(l instanceof RangeError){if(e.byteLength>i)throw new Uo("Message length length too long");break}throw l}if(n===Ze.DATA){if(e.byteLength<o)break;let l=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(l),yield l,n=Ze.LENGTH}}}return Ro(r)?async function*(){for await(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new an("Unexpected end of input")}():function*(){for(let l of r)e.append(l),yield*c();if(e.byteLength>0)throw new an("Unexpected end of input")}()}cn.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return cn(n,{...t??{},onLength:s=>{e=s}})};function Xi(){let r=ht(),t=!1;return{sink:async e=>{if(t)throw new Error("already piped");t=!0,r.resolve(e)},source:async function*(){yield*await r.promise}()}}function tu(){let r=Xi(),t=Xi();return[{source:r.source,sink:t.sink},{source:t.source,sink:r.sink}]}function Fp(r){return r[Symbol.asyncIterator]!=null}async function Hp(r,t){try{await Promise.all(r.map(async e=>{for await(let n of e)t.push(n)})),t.end()}catch(e){t.end(e)}}async function*Vp(r){let t=Ce({objectMode:!0});Hp(r,t).catch(()=>{}),yield*t}function*qp(r){for(let t of r)yield*t}function Gp(...r){let t=[];for(let e of r)Fp(e)||t.push(e);return t.length===r.length?qp(t):Vp(r)}var eu=Gp;function ru(r,...t){if(r==null)throw new Error("Empty pipeline");if(Zi(r)){let n=r;r=()=>n.source}else if(ou(r)||nu(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&Zi(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)Zi(e[n])&&(e[n]=Wp(e[n]));return zp(...e)}var zp=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},nu=r=>r?.[Symbol.asyncIterator]!=null,ou=r=>r?.[Symbol.iterator]!=null,Zi=r=>r==null?!1:r.sink!=null&&r.source!=null,Wp=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=Ce({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(nu(s))o=async function*(){yield*s,n.end()};else if(ou(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return eu(n,o())}return r.source};var Er=!!globalThis.process?.env?.DUMP_SESSION_KEYS;function ko(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Yi(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Ct(r,...t){if(!Yi(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function ji(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function su(r,t){Ct(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function Ji(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}var me=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4)),iu=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),$p=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!$p)throw new Error("Non little-endian hardware is not supported");function Xp(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function Oo(r){if(typeof r=="string")r=Xp(r);else if(Yi(r))r=Mo(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function au(r,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(r,t)}function cu(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}var Qi=(r,t)=>{function e(n,...o){if(Ct(n),r.nonceLength!==void 0){let u=o[0];if(!u)throw new Error("nonce / iv required");r.varSizeNonce?Ct(u):Ct(u,r.nonceLength)}let s=r.tagLength;s&&o[1]!==void 0&&Ct(o[1]);let i=t(n,...o),a=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ct(f)}},c=!1;return{encrypt(u,f){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,Ct(u),a(i.encrypt.length,f),i.encrypt(u,f)},decrypt(u,f){if(Ct(u),s&&u.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return a(i.decrypt.length,f),i.decrypt(u,f)}}}return Object.assign(e,r),e};function ta(r,t,e=!0){if(t===void 0)return new Uint8Array(r);if(t.length!==r)throw new Error("invalid output length, expected "+r+", got: "+t.length);if(e&&!Zp(t))throw new Error("invalid output, must be aligned");return t}function ea(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,l=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+l,a,n)}function Zp(r){return r.byteOffset%4===0}function Mo(r){return Uint8Array.from(r)}function ge(...r){for(let t=0;t<r.length;t++)r[t].fill(0)}var uu=r=>Uint8Array.from(r.split("").map(t=>t.charCodeAt(0))),Yp=uu("expand 16-byte k"),jp=uu("expand 32-byte k"),Jp=me(Yp),Qp=me(jp);function U(r,t){return r<<t|r>>>32-t}function ra(r){return r.byteOffset%4===0}var Ko=64,tm=16,fu=2**32-1,lu=new Uint32Array;function em(r,t,e,n,o,s,i,a){let c=o.length,l=new Uint8Array(Ko),u=me(l),f=ra(o)&&ra(s),d=f?me(o):lu,g=f?me(s):lu;for(let b=0;b<c;i++){if(r(t,e,n,u,i,a),i>=fu)throw new Error("arx: counter overflow");let m=Math.min(Ko,c-b);if(f&&m===Ko){let h=b/4;if(b%4!==0)throw new Error("arx: invalid block position");for(let w=0,x;w<tm;w++)x=h+w,g[x]=d[x]^u[w];b+=Ko;continue}for(let h=0,w;h<m;h++)w=b+h,s[w]=o[w]^l[h];b+=m}}function na(r,t){let{allowShortKeys:e,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=au({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof r!="function")throw new Error("core must be a function");return ko(o),ko(i),Ji(s),Ji(e),(a,c,l,u,f=0)=>{Ct(a),Ct(c),Ct(l);let d=l.length;if(u===void 0&&(u=new Uint8Array(d)),Ct(u),ko(f),f<0||f>=fu)throw new Error("arx: counter overflow");if(u.length<d)throw new Error(`arx: output (${u.length}) is shorter than data (${d})`);let g=[],b=a.length,m,h;if(b===32)g.push(m=Mo(a)),h=Qp;else if(b===16&&e)m=new Uint8Array(32),m.set(a),m.set(a,16),h=Jp,g.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${b}`);ra(c)||g.push(c=Mo(c));let w=me(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(h,w,me(c.subarray(0,16)),w),c=c.subarray(16)}let x=16-o;if(x!==c.length)throw new Error(`arx: nonce must be ${x} or 16 bytes`);if(x!==12){let I=new Uint8Array(12);I.set(c,s?0:12-c.length),c=I,g.push(c)}let p=me(c);return em(r,h,w,p,l,u,f,i),ge(...g),u}}var Et=(r,t)=>r[t++]&255|(r[t++]&255)<<8,oa=class{constructor(t){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,t=Oo(t),Ct(t,32);let e=Et(t,0),n=Et(t,2),o=Et(t,4),s=Et(t,6),i=Et(t,8),a=Et(t,10),c=Et(t,12),l=Et(t,14);this.r[0]=e&8191,this.r[1]=(e>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=Et(t,16+2*u)}process(t,e,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],u=i[3],f=i[4],d=i[5],g=i[6],b=i[7],m=i[8],h=i[9],w=Et(t,e+0),x=Et(t,e+2),p=Et(t,e+4),I=Et(t,e+6),R=Et(t,e+8),_=Et(t,e+10),v=Et(t,e+12),C=Et(t,e+14),L=s[0]+(w&8191),M=s[1]+((w>>>13|x<<3)&8191),N=s[2]+((x>>>10|p<<6)&8191),O=s[3]+((p>>>7|I<<9)&8191),F=s[4]+((I>>>4|R<<12)&8191),T=s[5]+(R>>>1&8191),B=s[6]+((R>>>14|_<<2)&8191),E=s[7]+((_>>>11|v<<5)&8191),y=s[8]+((v>>>8|C<<8)&8191),A=s[9]+(C>>>5|o),S=0,P=S+L*a+M*(5*h)+N*(5*m)+O*(5*b)+F*(5*g);S=P>>>13,P&=8191,P+=T*(5*d)+B*(5*f)+E*(5*u)+y*(5*l)+A*(5*c),S+=P>>>13,P&=8191;let D=S+L*c+M*a+N*(5*h)+O*(5*m)+F*(5*b);S=D>>>13,D&=8191,D+=T*(5*g)+B*(5*d)+E*(5*f)+y*(5*u)+A*(5*l),S+=D>>>13,D&=8191;let k=S+L*l+M*c+N*a+O*(5*h)+F*(5*m);S=k>>>13,k&=8191,k+=T*(5*b)+B*(5*g)+E*(5*d)+y*(5*f)+A*(5*u),S+=k>>>13,k&=8191;let H=S+L*u+M*l+N*c+O*a+F*(5*h);S=H>>>13,H&=8191,H+=T*(5*m)+B*(5*b)+E*(5*g)+y*(5*d)+A*(5*f),S+=H>>>13,H&=8191;let K=S+L*f+M*u+N*l+O*c+F*a;S=K>>>13,K&=8191,K+=T*(5*h)+B*(5*m)+E*(5*b)+y*(5*g)+A*(5*d),S+=K>>>13,K&=8191;let G=S+L*d+M*f+N*u+O*l+F*c;S=G>>>13,G&=8191,G+=T*a+B*(5*h)+E*(5*m)+y*(5*b)+A*(5*g),S+=G>>>13,G&=8191;let X=S+L*g+M*d+N*f+O*u+F*l;S=X>>>13,X&=8191,X+=T*c+B*a+E*(5*h)+y*(5*m)+A*(5*b),S+=X>>>13,X&=8191;let st=S+L*b+M*g+N*d+O*f+F*u;S=st>>>13,st&=8191,st+=T*l+B*c+E*a+y*(5*h)+A*(5*m),S+=st>>>13,st&=8191;let it=S+L*m+M*b+N*g+O*d+F*f;S=it>>>13,it&=8191,it+=T*u+B*l+E*c+y*a+A*(5*h),S+=it>>>13,it&=8191;let lt=S+L*h+M*m+N*b+O*g+F*d;S=lt>>>13,lt&=8191,lt+=T*f+B*u+E*l+y*c+A*a,S+=lt>>>13,lt&=8191,S=(S<<2)+S|0,S=S+P|0,P=S&8191,S=S>>>13,D+=S,s[0]=P,s[1]=D,s[2]=k,s[3]=H,s[4]=K,s[5]=G,s[6]=X,s[7]=st,s[8]=it,s[9]=lt}finalize(){let{h:t,pad:e}=this,n=new Uint16Array(10),o=t[1]>>>13;t[1]&=8191;for(let a=2;a<10;a++)t[a]+=o,o=t[a]>>>13,t[a]&=8191;t[0]+=o*5,o=t[0]>>>13,t[0]&=8191,t[1]+=o,o=t[1]>>>13,t[1]&=8191,t[2]+=o,n[0]=t[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=t[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)t[a]=t[a]&s|n[a];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let i=t[0]+e[0];t[0]=i&65535;for(let a=1;a<8;a++)i=(t[a]+e[a]|0)+(i>>>16)|0,t[a]=i&65535;ge(n)}update(t){ji(this);let{buffer:e,blockLen:n}=this;t=Oo(t);let o=t.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(t,s);continue}e.set(t.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(e,0,!1),this.pos=0)}return this}destroy(){ge(this.h,this.r,this.buffer,this.pad)}digestInto(t){ji(this),su(t,this),this.finished=!0;let{buffer:e,h:n}=this,{pos:o}=this;if(o){for(e[o++]=1;o<16;o++)e[o]=0;this.process(e,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)t[s++]=n[i]>>>0,t[s++]=n[i]>>>8;return t}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}};function rm(r){let t=(n,o)=>r(o).update(Oo(n)).digest(),e=r(new Uint8Array(32));return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>r(n),t}var hu=rm(r=>new oa(r));function mu(r,t,e,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],u=t[0],f=t[1],d=t[2],g=t[3],b=t[4],m=t[5],h=t[6],w=t[7],x=o,p=e[0],I=e[1],R=e[2],_=i,v=a,C=c,L=l,M=u,N=f,O=d,F=g,T=b,B=m,E=h,y=w,A=x,S=p,P=I,D=R;for(let H=0;H<s;H+=2)_=_+M|0,A=U(A^_,16),T=T+A|0,M=U(M^T,12),_=_+M|0,A=U(A^_,8),T=T+A|0,M=U(M^T,7),v=v+N|0,S=U(S^v,16),B=B+S|0,N=U(N^B,12),v=v+N|0,S=U(S^v,8),B=B+S|0,N=U(N^B,7),C=C+O|0,P=U(P^C,16),E=E+P|0,O=U(O^E,12),C=C+O|0,P=U(P^C,8),E=E+P|0,O=U(O^E,7),L=L+F|0,D=U(D^L,16),y=y+D|0,F=U(F^y,12),L=L+F|0,D=U(D^L,8),y=y+D|0,F=U(F^y,7),_=_+N|0,D=U(D^_,16),E=E+D|0,N=U(N^E,12),_=_+N|0,D=U(D^_,8),E=E+D|0,N=U(N^E,7),v=v+O|0,A=U(A^v,16),y=y+A|0,O=U(O^y,12),v=v+O|0,A=U(A^v,8),y=y+A|0,O=U(O^y,7),C=C+F|0,S=U(S^C,16),T=T+S|0,F=U(F^T,12),C=C+F|0,S=U(S^C,8),T=T+S|0,F=U(F^T,7),L=L+M|0,P=U(P^L,16),B=B+P|0,M=U(M^B,12),L=L+M|0,P=U(P^L,8),B=B+P|0,M=U(M^B,7);let k=0;n[k++]=i+_|0,n[k++]=a+v|0,n[k++]=c+C|0,n[k++]=l+L|0,n[k++]=u+M|0,n[k++]=f+N|0,n[k++]=d+O|0,n[k++]=g+F|0,n[k++]=b+T|0,n[k++]=m+B|0,n[k++]=h+E|0,n[k++]=w+y|0,n[k++]=x+A|0,n[k++]=p+S|0,n[k++]=I+P|0,n[k++]=R+D|0}function nm(r,t,e,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=t[0],l=t[1],u=t[2],f=t[3],d=t[4],g=t[5],b=t[6],m=t[7],h=e[0],w=e[1],x=e[2],p=e[3];for(let R=0;R<20;R+=2)o=o+c|0,h=U(h^o,16),d=d+h|0,c=U(c^d,12),o=o+c|0,h=U(h^o,8),d=d+h|0,c=U(c^d,7),s=s+l|0,w=U(w^s,16),g=g+w|0,l=U(l^g,12),s=s+l|0,w=U(w^s,8),g=g+w|0,l=U(l^g,7),i=i+u|0,x=U(x^i,16),b=b+x|0,u=U(u^b,12),i=i+u|0,x=U(x^i,8),b=b+x|0,u=U(u^b,7),a=a+f|0,p=U(p^a,16),m=m+p|0,f=U(f^m,12),a=a+f|0,p=U(p^a,8),m=m+p|0,f=U(f^m,7),o=o+l|0,p=U(p^o,16),b=b+p|0,l=U(l^b,12),o=o+l|0,p=U(p^o,8),b=b+p|0,l=U(l^b,7),s=s+u|0,h=U(h^s,16),m=m+h|0,u=U(u^m,12),s=s+u|0,h=U(h^s,8),m=m+h|0,u=U(u^m,7),i=i+f|0,w=U(w^i,16),d=d+w|0,f=U(f^d,12),i=i+f|0,w=U(w^i,8),d=d+w|0,f=U(f^d,7),a=a+c|0,x=U(x^a,16),g=g+x|0,c=U(c^g,12),a=a+c|0,x=U(x^a,8),g=g+x|0,c=U(c^g,7);let I=0;n[I++]=o,n[I++]=s,n[I++]=i,n[I++]=a,n[I++]=h,n[I++]=w,n[I++]=x,n[I++]=p}var om=na(mu,{counterRight:!1,counterLength:4,allowShortKeys:!1}),sm=na(mu,{counterRight:!1,counterLength:8,extendNonceFn:nm,allowShortKeys:!1});var im=new Uint8Array(16),du=(r,t)=>{r.update(t);let e=t.length%16;e&&r.update(im.subarray(e))},am=new Uint8Array(32);function pu(r,t,e,n,o){let s=r(t,e,am),i=hu.create(s);o&&du(i,o),du(i,n);let a=new Uint8Array(16),c=iu(a);ea(c,0,BigInt(o?o.length:0),!0),ea(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return ge(s,a),l}var gu=r=>(t,e,n)=>({encrypt(s,i){let a=s.length;i=ta(a+16,i,!1),i.set(s);let c=i.subarray(0,-16);r(t,e,c,c,1);let l=pu(r,t,e,c,n);return i.set(l,a),ge(l),i},decrypt(s,i){i=ta(s.length-16,i,!1);let a=s.subarray(0,-16),c=s.subarray(-16),l=pu(r,t,e,a,n);if(!cu(c,l))throw new Error("invalid tag");return i.set(s.subarray(0,-16)),r(t,e,i,i,1),ge(l),i}}),sa=Qi({blockSize:64,nonceLength:12,tagLength:16},gu(om)),wS=Qi({blockSize:64,nonceLength:24,tagLength:16},gu(sm));function wu(r,t,e){return _r(r),e===void 0&&(e=new Uint8Array(r.outputLen)),hr(r,be(e),be(t))}var ia=new Uint8Array([0]),yu=new Uint8Array;function bu(r,t,e,n=32){if(_r(r),En(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);e===void 0&&(e=yu);let s=new Uint8Array(o*r.outputLen),i=hr.create(r,t),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)ia[0]=l+1,a.update(l===0?yu:c).update(e).update(ia).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),ia.fill(0),s.slice(0,n)}var aa={hashSHA256(r){return te(r.subarray())},getHKDF(r,t){let e=wu(te,t,r),o=bu(te,e,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=kr.utils.randomPrivateKey();return{publicKey:kr.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:kr.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,t){return kr.getSharedSecret(r.subarray(),t.subarray())},chaCha20Poly1305Encrypt(r,t,e,n){return sa(n,t,e).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,t,e,n,o){return sa(n,t,e).decrypt(r.subarray(),o)}};var xu=aa;function Eu(r){return{generateKeypair:r.generateX25519KeyPair,dh:(t,e)=>r.generateX25519SharedKey(t.privateKey,e).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Sr=r=>{let t=dt(2);return t[0]=r>>8,t[1]=r,t};Sr.bytes=2;var ln=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let t=0;return t+=r[0]<<8,t+=r[1],t}return r.getUint16(0)};ln.bytes=2;function Su(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function ca(r,t){!t.enabled||!Er||(r?(t(`LOCAL_STATIC_PUBLIC_KEY ${q(r.publicKey,"hex")}`),t(`LOCAL_STATIC_PRIVATE_KEY ${q(r.privateKey,"hex")}`)):t("Missing local static keys."))}function la(r,t){!t.enabled||!Er||(r?(t(`LOCAL_PUBLIC_EPHEMERAL_KEY ${q(r.publicKey,"hex")}`),t(`LOCAL_PRIVATE_EPHEMERAL_KEY ${q(r.privateKey,"hex")}`)):t("Missing local ephemeral keys."))}function Au(r,t){!t.enabled||!Er||t(r?`REMOTE_STATIC_PUBLIC_KEY ${q(r.subarray(),"hex")}`:"Missing remote static public key.")}function ua(r,t){!t.enabled||!Er||t(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${q(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function fa(r,t,e){!e.enabled||!Er||(e(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&q(r.k,"hex")}`),e(`CIPHER_STATE_2 ${t.n.getUint64()} ${t.k&&q(t.k,"hex")}`))}var Ar=class r extends Error{code;constructor(t="Invalid crypto exchange"){super(t),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var cm=0,lm=4294967295,um="Cipherstate has reached maximum n, a new handshake must be performed",Fo=class{n;bytes;view;constructor(t=cm){this.n=t,this.bytes=mt(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,t,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>lm)throw new Error(um)}};var Ye=mt(0),vr=class{k;n;crypto;constructor(t,e=void 0,n=0){this.crypto=t,this.k=e,this.n=new Fo(n)}hasKey(){return!!this.k}encryptWithAd(t,e){if(!this.hasKey())return e;this.n.assertValue();let n=this.crypto.encrypt(e,this.n.getBytes(),t,this.k);return this.n.increment(),n}decryptWithAd(t,e,n){if(!this.hasKey())return e;this.n.assertValue();let o=this.crypto.decrypt(e,this.n.getBytes(),t,this.k,n);return this.n.increment(),o}},ha=class{cs;ck;h;crypto;constructor(t,e){this.crypto=t;let n=J(e,"utf-8");this.h=fm(t,n),this.ck=this.h,this.cs=new vr(t)}mixKey(t){let[e,n]=this.crypto.hkdf(this.ck,t);this.ck=e,this.cs=new vr(this.crypto,n)}mixHash(t){this.h=this.crypto.hash(new z(this.h,t))}encryptAndHash(t){let e=this.cs.encryptWithAd(this.h,t);return this.mixHash(e),e}decryptAndHash(t){let e=this.cs.decryptWithAd(this.h,t);return this.mixHash(t),e}split(){let[t,e]=this.crypto.hkdf(this.ck,Ye);return[new vr(this.crypto,t),new vr(this.crypto,e)]}},da=class{ss;s;e;rs;re;initiator;crypto;constructor(t){let{crypto:e,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=t;this.crypto=e,this.ss=new ha(e,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let t=this.crypto.generateKeypair();return this.ss.mixHash(t.publicKey),this.e=t,t.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(t,e=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(t.byteLength<e+32)throw new Error("message is not long enough");this.re=t.sublist(e,e+32),this.ss.mixHash(this.re)}readS(t,e=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(t.byteLength<e+n)throw new Error("message is not long enough");let o=t.sublist(e,e+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},un=class extends da{writeMessageA(t){return new z(this.writeE(),this.ss.encryptAndHash(t))}writeMessageB(t){let e=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new z(e,n,this.ss.encryptAndHash(t))}writeMessageC(t){let e=this.writeS();return this.writeSE(),new z(e,this.ss.encryptAndHash(t))}readMessageA(t){try{return this.readE(t),this.ss.decryptAndHash(t.sublist(32))}catch(e){throw new Ar(`handshake stage 0 validation fail: ${e.message}`)}}readMessageB(t){try{this.readE(t),this.readEE();let e=this.readS(t,32);return this.readES(),this.ss.decryptAndHash(t.sublist(32+e))}catch(e){throw new Ar(`handshake stage 1 validation fail: ${e.message}`)}}readMessageC(t){try{let e=this.readS(t);return this.readSE(),this.ss.decryptAndHash(t.sublist(e))}catch(e){throw new Ar(`handshake stage 2 validation fail: ${e.message}`)}}};function fm(r,t){if(t.length<=32){let e=mt(32);return e.set(t),e}else return r.hash(t)}var Ho;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),e.webtransportCerthashes!=null)for(let s of e.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(e,n)=>{let o={webtransportCerthashes:[]},s=n==null?e.len:e.pos+n;for(;e.pos<s;){let i=e.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(e.bytes());break}default:{e.skipType(i&7);break}}}return o})),t),r.encode=e=>Zt(e,r.codec()),r.decode=e=>Xt(e,r.codec())})(Ho||(Ho={}));var fn;(function(r){let t;r.codec=()=>(t==null&&(t=Yt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.identityKey!=null&&e.identityKey.byteLength>0&&(n.uint32(10),n.bytes(e.identityKey)),e.identitySig!=null&&e.identitySig.byteLength>0&&(n.uint32(18),n.bytes(e.identitySig)),e.extensions!=null&&(n.uint32(34),Ho.codec().encode(e.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(e,n)=>{let o={identityKey:mt(0),identitySig:mt(0)},s=n==null?e.len:e.pos+n;for(;e.pos<s;){let i=e.uint32();switch(i>>>3){case 1:{o.identityKey=e.bytes();break}case 2:{o.identitySig=e.bytes();break}case 4:{o.extensions=Ho.codec().decode(e,e.uint32());break}default:{e.skipType(i&7);break}}}return o})),t),r.encode=e=>Zt(e,r.codec()),r.decode=e=>Xt(e,r.codec())})(fn||(fn={}));async function pa(r,t,e){let n=await r.sign(vu(t));return fn.encode({identityKey:lr(r.publicKey),identitySig:n,extensions:e})}async function ma(r,t,e){try{let n=fn.decode(r),o=Gr(n.identityKey);if(e?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${e}`);if(!t)throw new Error("Remote static does not exist");let s=vu(t);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new pn(n.message)}}function vu(r){let t=J("noise-libp2p-static-key:");return r instanceof Uint8Array?yt([t,r],t.length+r.length):(r.prepend(t),r)}async function Iu(r,t){let{log:e,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await pa(s,a.publicKey,l),f=new un({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});ca(f.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await n.write(f.writeMessageA(Ye),t),e.trace("Stage 0 - Initiator finished sending first message."),la(f.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let d=f.readMessageB(await n.read(t));e.trace("Stage 1 - Initiator received the message."),ua(f.re,e),Au(f.rs,e),e.trace("Initiator going to check remote's signature...");let g=await ma(d,f.rs,c);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await n.write(f.writeMessageC(u),t),e.trace("Stage 2 - Initiator sent message with signed payload.");let[b,m]=f.ss.split();return fa(b,m,e),{payload:g,encrypt:h=>b.encryptWithAd(Ye,h),decrypt:(h,w)=>m.decryptWithAd(Ye,h,w)}}async function Tu(r,t){let{log:e,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await pa(s,a.publicKey,l),f=new un({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});ca(f.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await n.read(t)),e.trace("Stage 0 - Responder received first message."),ua(f.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(f.writeMessageB(u),t),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),la(f.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let d=f.readMessageC(await n.read(t));e.trace("Stage 2 - Responder received the message, finished handshake.");let g=await ma(d,f.rs,c),[b,m]=f.ss.split();return fa(b,m,e),{payload:g,encrypt:h=>m.encryptWithAd(Ye,h),decrypt:(h,w)=>b.decryptWithAd(Ye,h,w)}}var Bu=16;function Cu(r,t){return async function*(e){for await(let n of e)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),t?.encryptedPackets.increment(),yield new z(Sr(i.byteLength),i)}}}function _u(r,t){return async function*(e){for await(let n of e)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Bu<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Bu);try{let c=r.decrypt(i,a);t?.decryptedPackets.increment(),yield c}catch(c){throw t?.decryptErrors.increment(),c}}}}var Vo=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(t,e={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=e,{metrics:a}=t;this.components=t;let c=s??xu;this.crypto=Eu(c),this.extensions=o,this.metrics=a?Su(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??mt(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[Qe]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(t,e){let n=sn(t,{lengthEncoder:Sr,lengthDecoder:ln,maxDataLength:65535}),o=await this.performHandshakeInitiator(n,this.components.privateKey,e?.remotePeer?.publicKey,e),s=await this.createSecureConnection(n,o);t.source=s.source,t.sink=s.sink;let i=Gr(o.payload.identityKey);return{conn:t,remoteExtensions:o.payload.extensions,remotePeer:hi(i)}}async secureInbound(t,e){let n=sn(t,{lengthEncoder:Sr,lengthDecoder:ln,maxDataLength:65535}),o=await this.performHandshakeResponder(n,this.components.privateKey,e?.remotePeer?.publicKey,e),s=await this.createSecureConnection(n,o);t.source=s.source,t.sink=s.sink;let i=Gr(o.payload.identityKey);return{conn:t,remoteExtensions:o.payload.extensions,remotePeer:hi(i)}}async performHandshakeInitiator(t,e,n,o){let s;try{s=await Iu({connection:t,privateKey:e,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions},o),this.metrics?.xxHandshakeSuccesses.increment()}catch(i){throw this.metrics?.xxHandshakeErrors.increment(),i}return s}async performHandshakeResponder(t,e,n,o){let s;try{s=await Tu({connection:t,privateKey:e,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions},o),this.metrics?.xxHandshakeSuccesses.increment()}catch(i){throw this.metrics?.xxHandshakeErrors.increment(),i}return s}async createSecureConnection(t,e){let[n,o]=tu(),s=t.unwrap();return await ru(n,Cu(e,this.metrics),s,i=>cn(i,{lengthDecoder:ln}),_u(e,this.metrics),n),o}};function Ru(r={}){return t=>new Vo(t,r)}var ga=Object.values(Ve).map(r=>r.decoder).reduce((r,t)=>r.or(t)),hm=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function Pu(r){return r?.match(hm)?.groups?.fingerprint}function ya(r){let e=r.stringTuples().filter(n=>n[0]===Il).map(n=>n[1])[0];if(e===void 0||e==="")throw new rt(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return e}function dm(r){return Mt.decode(ga.decode(r))}function pm(r){let t=dm(ya(r)),e=mm(t.code),n=t.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw new Ao(n,r.toString());return`${e} ${o.join(":").toUpperCase()}`}function Du(r){let t=r.split(":").map(o=>parseInt(o,16)),e=Uint8Array.from(t),n=vt(fe.code,e);return ee(`/certhash/${Or.encode(n.bytes)}`)}function mm(r){switch(r){case 17:return"sha-1";case 18:return"sha-256";case 19:return"sha-512";default:throw new Io(r)}}function Nu(r,t){let{host:e,port:n,family:o}=r.toOptions(),s=pm(r);return{type:"answer",sdp:`v=0
3
3
  o=- 0 0 IN IP${o} ${e}
4
4
  s=-
5
5
  t=0 0
@@ -37,7 +37,7 @@ a=end-of-candidates
37
37
  `:`
38
38
  `;return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
39
39
  a=ice-ufrag:`+t+e).replace(/\na=ice-pwd:[^\n]*\n/,`
40
- a=ice-pwd:`+t+e),r}var ba=J("libp2p-webrtc-noise:");function Ou(r,t,e){let n=r.trim().toLowerCase().replaceAll(":",""),o=J(n,"hex"),s=vt(fe.code,o),i=ga.decode(ya(t)),a=ba.byteLength+s.bytes.byteLength+i.byteLength;return e==="server"?yt([ba,i,s.bytes],a):yt([ba,s.bytes,i],a)}var dm=tn?"iceconnectionstatechange":"connectionstatechange";async function Mu(r,t,e){let n=r.createDataChannel("",{negotiated:!0,id:0});if(e.role==="client"){e.log.trace("client creating local offer");let d=await r.createOffer();e.log.trace("client created local offer %s",d.sdp);let g=wa(d,t);e.log.trace("client setting local offer %s",g.sdp),await r.setLocalDescription(g);let b=Nu(e.remoteAddr,t);e.log.trace("client setting server description %s",b.sdp),await r.setRemoteDescription(b)}else{let d=Uu(e.remoteAddr,t);e.log.trace("server setting client %s %s",d.type,d.sdp),await r.setRemoteDescription(d),e.log.trace("server creating local answer");let g=await r.createAnswer();e.log.trace("server created local answer");let b=wa(g,t);e.log.trace("server setting local description %s",g.sdp),await r.setLocalDescription(b)}if(e.log.trace("%s wait for handshake channel to open",e.role),await on(n,"open",e.signal),e.log.trace("%s handshake channel opened",e.role),e.role==="server"){let d=r.remoteFingerprint()?.value??"";e.remoteAddr=e.remoteAddr.encapsulate(Du(d))}let o=Pu(r.localDescription?.sdp);if(o==null)throw new Re("Could not get fingerprint from local description sdp");e.log.trace("%s performing noise handshake",e.role);let s=Ou(o,e.remoteAddr,e.role),i=Ru({prologueBytes:s})(e),a=xr({channel:n,direction:"inbound",logger:e.logger,...e.dataChannel??{}}),c={...a,sink:a.sink.bind(a),source:async function*(){for await(let d of a.source)for(let g of d)yield g}()},l=new $e(e,{peerConnection:r,remoteAddr:e.remoteAddr,timeline:{open:Date.now()},metrics:e.events});r.addEventListener(dm,()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(d=>{e.log.error("error closing connection",d),l.abort(d)});break;default:break}}),e.events?.increment({peer_connection:!0});let u=new _e(e,{peerConnection:r,metrics:e.events,dataChannelOptions:e.dataChannel});if(e.role==="client")return e.log.trace("%s secure inbound",e.role),await i.secureInbound(c,{remotePeer:e.remotePeerId,signal:e.signal}),e.log.trace("%s upgrade outbound",e.role),e.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,muxerFactory:u,signal:e.signal});e.log.trace("%s secure outbound",e.role);let f=await i.secureOutbound(c,{remotePeer:e.remotePeerId,signal:e.signal});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${f.remotePeer}`),e.log.trace("%s upgrade inbound",e.role),await e.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,muxerFactory:u,signal:e.signal})}async function Ku(r,t,e,n){n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof e=="function"?await e():e;return new RTCPeerConnection({...o??{},certificates:[n]})}var qo=class{log;metrics;components;init;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:webrtc-direct"),this.components=t,this.init=e,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[dn]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[Qe]=["@libp2p/transport"];async dial(t,e){let n=await this._connect(t,e);return this.log("dialing address: %a",t),n}createListener(t){return new _o(this.components,{...this.init,...t})}listenFilter(t){return t.filter(bl.exactMatch)}dialFilter(t){return this.listenFilter(t)}async _connect(t,e){e.signal.throwIfAborted();let n,o=t.getPeerId();o!=null&&(n=dr(o));let s=Hl(),i=await Ku("client",s,typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{});try{return await jt(Mu(i,s,{role:"client",log:this.log,logger:this.components.logger,metrics:this.components.metrics,events:this.metrics?.dialerEvents,signal:e.signal,remoteAddr:t,dataChannel:this.init.dataChannel,upgrader:e.upgrader,peerId:this.components.peerId,remotePeerId:n,privateKey:this.components.privateKey}),e.signal)}catch(a){throw i.close(),a}}};function pm(r){return t=>new qo(t,r)}function mm(r){return t=>new Co(t,r)}return Ju(gm);})();
40
+ a=ice-pwd:`+t+e),r}var ba=J("libp2p-webrtc-noise:");function Ou(r,t,e){let n=r.trim().toLowerCase().replaceAll(":",""),o=J(n,"hex"),s=vt(fe.code,o),i=ga.decode(ya(t)),a=ba.byteLength+s.bytes.byteLength+i.byteLength;return e==="server"?yt([ba,i,s.bytes],a):yt([ba,s.bytes,i],a)}var gm=tn?"iceconnectionstatechange":"connectionstatechange";async function Mu(r,t,e){let n=r.createDataChannel("",{negotiated:!0,id:0});if(e.role==="client"){e.log.trace("client creating local offer");let d=await r.createOffer();e.log.trace("client created local offer %s",d.sdp);let g=wa(d,t);e.log.trace("client setting local offer %s",g.sdp),await r.setLocalDescription(g);let b=Nu(e.remoteAddr,t);e.log.trace("client setting server description %s",b.sdp),await r.setRemoteDescription(b)}else{let d=Uu(e.remoteAddr,t);e.log.trace("server setting client %s %s",d.type,d.sdp),await r.setRemoteDescription(d),e.log.trace("server creating local answer");let g=await r.createAnswer();e.log.trace("server created local answer");let b=wa(g,t);e.log.trace("server setting local description %s",g.sdp),await r.setLocalDescription(b)}if(e.log.trace("%s wait for handshake channel to open",e.role),await on(n,"open",e.signal),e.log.trace("%s handshake channel opened",e.role),e.role==="server"){let d=r.remoteFingerprint()?.value??"";e.remoteAddr=e.remoteAddr.encapsulate(Du(d))}let o=Pu(r.localDescription?.sdp);if(o==null)throw new Re("Could not get fingerprint from local description sdp");e.log.trace("%s performing noise handshake",e.role);let s=Ou(o,e.remoteAddr,e.role),i=Ru({prologueBytes:s})(e),a=xr({channel:n,direction:"inbound",logger:e.logger,...e.dataChannel??{}}),c={...a,sink:a.sink.bind(a),source:async function*(){for await(let d of a.source)for(let g of d)yield g}()},l=new $e(e,{peerConnection:r,remoteAddr:e.remoteAddr,timeline:{open:Date.now()},metrics:e.events});r.addEventListener(gm,()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(d=>{e.log.error("error closing connection",d),l.abort(d)});break;default:break}}),e.events?.increment({peer_connection:!0});let u=new _e(e,{peerConnection:r,metrics:e.events,dataChannelOptions:e.dataChannel});if(e.role==="client")return e.log.trace("%s secure inbound",e.role),await i.secureInbound(c,{remotePeer:e.remotePeerId,signal:e.signal}),e.log.trace("%s upgrade outbound",e.role),e.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,muxerFactory:u,signal:e.signal});e.log.trace("%s secure outbound",e.role);let f=await i.secureOutbound(c,{remotePeer:e.remotePeerId,signal:e.signal});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${f.remotePeer}`),e.log.trace("%s upgrade inbound",e.role),await e.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,muxerFactory:u,signal:e.signal})}async function Ku(r,t,e,n){n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof e=="function"?await e():e;return new RTCPeerConnection({...o??{},certificates:[n]})}var qo=class{log;metrics;components;init;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:webrtc-direct"),this.components=t,this.init=e,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[dn]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[Qe]=["@libp2p/transport"];async dial(t,e){let n=await this._connect(t,e);return this.log("dialing address: %a",t),n}createListener(t){return new _o(this.components,{...this.init,...t})}listenFilter(t){return t.filter(bl.exactMatch)}dialFilter(t){return this.listenFilter(t)}async _connect(t,e){e.signal.throwIfAborted();let n,o=t.getPeerId();o!=null&&(n=dr(o));let s=Hl(),i=await Ku("client",s,typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{});try{return await jt(Mu(i,s,{role:"client",log:this.log,logger:this.components.logger,metrics:this.components.metrics,events:this.metrics?.dialerEvents,signal:e.signal,remoteAddr:t,dataChannel:this.init.dataChannel,upgrader:e.upgrader,peerId:this.components.peerId,remotePeerId:n,privateKey:this.components.privateKey}),e.signal)}catch(a){throw i.close(),a}}};function ym(r){return t=>new qo(t,r)}function wm(r){return t=>new Co(t,r)}return Ju(bm);})();
41
41
  /*! Bundled license information:
42
42
 
43
43
  @noble/hashes/esm/utils.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/webrtc",
3
- "version": "5.2.7-5fe2a18fc",
3
+ "version": "5.2.7-88b5c29ed",
4
4
  "description": "A libp2p transport using WebRTC connections",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webrtc#readme",
@@ -54,10 +54,10 @@
54
54
  "@chainsafe/is-ip": "^2.0.2",
55
55
  "@chainsafe/libp2p-noise": "^16.0.0",
56
56
  "@ipshipyard/node-datachannel": "^0.26.4",
57
- "@libp2p/interface": "2.7.0-5fe2a18fc",
58
- "@libp2p/interface-internal": "2.3.7-5fe2a18fc",
59
- "@libp2p/peer-id": "5.0.16-5fe2a18fc",
60
- "@libp2p/utils": "6.5.7-5fe2a18fc",
57
+ "@libp2p/interface": "2.7.0-88b5c29ed",
58
+ "@libp2p/interface-internal": "2.3.7-88b5c29ed",
59
+ "@libp2p/peer-id": "5.0.16-88b5c29ed",
60
+ "@libp2p/utils": "6.5.7-88b5c29ed",
61
61
  "@multiformats/multiaddr": "^12.4.0",
62
62
  "@multiformats/multiaddr-matcher": "^1.6.0",
63
63
  "@peculiar/webcrypto": "^1.5.0",
@@ -83,9 +83,9 @@
83
83
  "uint8arrays": "^5.1.0"
84
84
  },
85
85
  "devDependencies": {
86
- "@libp2p/crypto": "5.0.15-5fe2a18fc",
87
- "@libp2p/interface-compliance-tests": "6.4.0-5fe2a18fc",
88
- "@libp2p/logger": "5.1.12-5fe2a18fc",
86
+ "@libp2p/crypto": "5.0.15-88b5c29ed",
87
+ "@libp2p/interface-compliance-tests": "6.4.0-88b5c29ed",
88
+ "@libp2p/logger": "5.1.12-88b5c29ed",
89
89
  "@types/sinon": "^17.0.3",
90
90
  "aegir": "^45.1.1",
91
91
  "delay": "^6.0.0",