@libp2p/daemon-server 9.0.3 → 9.0.4

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
@@ -4,7 +4,7 @@
4
4
  `+s),r.push(o+"m+"+Xr(this.diff)+"\x1B[0m")}else r[0]=Fl()+e+" "+r[0]}function Fl(){return Ht.hideDate!=null?"":new Date().toISOString()+" "}function zl(...r){return process.stderr.write(en.default.format(...r)+`
5
5
  `)}function Wl(r){r!=null?process.env.DEBUG=r:delete process.env.DEBUG}function ql(){return process.env.DEBUG}function Yl(r){r.inspectOpts={};let e=Object.keys(Ht);for(let t=0;t<e.length;t++)r.inspectOpts[e[t]]=Ht[e[t]]}function Zl(r){r.o=function(e){return this.inspectOpts.colors=this.useColors,en.default.inspect(e,this.inspectOpts).split(`
6
6
  `).map(t=>t.trim()).join(" ")},r.O=function(e){return this.inspectOpts.colors=this.useColors,en.default.inspect(e,this.inspectOpts)}}var la=is({init:Yl,log:zl,formatArgs:Gl,save:Wl,load:ql,useColors:$l,setupFormatters:Zl,colors:ua,inspectOpts:Ht});var Ie=la;Ie.formatters.b=r=>r==null?"undefined":ee.baseEncode(r);Ie.formatters.t=r=>r==null?"undefined":ze.baseEncode(r);Ie.formatters.m=r=>r==null?"undefined":Ko.baseEncode(r);Ie.formatters.p=r=>r==null?"undefined":r.toString();Ie.formatters.c=r=>r==null?"undefined":r.toString();Ie.formatters.k=r=>r==null?"undefined":r.toString();Ie.formatters.a=r=>r==null?"undefined":r.toString();Ie.formatters.e=r=>{if(r==null)return"undefined";let e=fa(r.message),t=fa(r.stack);return e!=null&&t!=null?t.includes(e)?t:`${e}
7
- ${t}`:t??e??r.toString()};function Xl(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function da(){return{forComponent(r){return at(r)}}}function at(r){let e=Xl(`${r}:trace`);return Ie.enabled(`${r}:trace`)&&Ie.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Ie(`${r}:trace`)),Object.assign(Ie(r),{error:Ie(`${r}:error`),trace:e,newScope:t=>at(`${r}:${t}`)})}function fa(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var tn=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Y=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},rn=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var nn=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var Et=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},dr=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}};var on=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Vt=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},sn=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}},an=class extends Error{static name="AlreadyStartedError";constructor(e="Already started"){super(e),this.name="AlreadyStartedError"}};var hr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var cn=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},$t=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},un=class extends $t{constructor(e,t){super(!0,e,t)}},ln=class extends $t{constructor(e,t){super(!1,e,t)}};var as=Symbol.for("@libp2p/peer-id");var pa=Symbol.for("@libp2p/transport");var ha;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(ha||(ha={}));var ma=oe("node:events"),fn=(r,...e)=>{try{(0,ma.setMaxListeners)(r,...e)}catch{}};var Gt=class extends EventTarget{#e=new Map;constructor(){super(),fn(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var ba=Symbol.for("@libp2p/service-capabilities"),qp=Symbol.for("@libp2p/service-dependencies");function Ce(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var ya=oe("node:buffer");function We(r,e){return ht(ya.Buffer.concat(r,e))}var xa=Symbol.for("@achingbrain/uint8arraylist");function ga(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function dn(r){return!!r?.[xa]}var H=class r{bufs;length;[xa]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(dn(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(dn(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=ga(this.bufs,e);return t.buf[t.index]}set(e,t){let n=ga(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(dn(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return We(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:We(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===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,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let f=e-a;n.push(i.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!dn(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;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=t;f<=c;f+=u){u=0;for(let p=l;p>=0;p--){let d=this.get(f+p);if(n[p]!==d){u=Math.max(1,p-a[d]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Ce(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var Ea=oe("node:buffer");function re(r,e="utf8"){let t=Mr[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return e==="utf8"||e==="utf-8"?Ea.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var Ql=parseInt("11111",2),cs=parseInt("10000000",2),jl=parseInt("01111111",2),wa={0:pr,1:pr,2:Jl,3:rf,4:nf,5:tf,6:ef,16:pr,22:pr,48:pr};function us(r,e={offset:0}){let t=r[e.offset]&Ql;if(e.offset++,wa[t]!=null)return wa[t](r,e);throw new Error("No decoder for tag "+t)}function mr(r,e){let t=0;if((r[e.offset]&cs)===cs){let n=r[e.offset]&jl,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function pr(r,e){mr(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=us(r,e);if(n===null)break;t.push(n)}return t}function Jl(r,e){let t=mr(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function ef(r,e){let t=mr(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function tf(r,e){return e.offset++,null}function rf(r,e){let t=mr(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function nf(r,e){let t=mr(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function of(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new H;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function ls(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=of(r.byteLength);return new H(Uint8Array.from([e.byteLength|cs]),e)}function va(r){let e=new H,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new H(Uint8Array.from([2]),ls(e),e)}function Sa(r){let e=Uint8Array.from([0]),t=new H(e,r);return new H(Uint8Array.from([3]),ls(t),t)}function hn(r,e=48){let t=new H;for(let n of r)t.append(n);return new H(Uint8Array.from([e]),ls(t),t)}async function Ia(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var sf=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),af=Uint8Array.from([6,5,43,129,4,0,34]),cf=Uint8Array.from([6,5,43,129,4,0,35]),uf={ext:!0,kty:"EC",crv:"P-256"},lf={ext:!0,kty:"EC",crv:"P-384"},ff={ext:!0,kty:"EC",crv:"P-521"},fs=32,ds=48,hs=66;function Aa(r){let e=us(r);return La(e)}function La(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===fs*2+1)return n=re(e.subarray(t,t+fs),"base64url"),o=re(e.subarray(t+fs),"base64url"),new Ft({...uf,key_ops:["verify"],x:n,y:o});if(e.byteLength===ds*2+1)return n=re(e.subarray(t,t+ds),"base64url"),o=re(e.subarray(t+ds),"base64url"),new Ft({...lf,key_ops:["verify"],x:n,y:o});if(e.byteLength===hs*2+1)return n=re(e.subarray(t,t+hs),"base64url"),o=re(e.subarray(t+hs),"base64url"),new Ft({...ff,key_ops:["verify"],x:n,y:o});throw new Y(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Ta(r){return hn([va(Uint8Array.from([1])),hn([df(r.crv)],160),hn([Sa(new H(Uint8Array.from([4]),ye(r.x??"","base64url"),ye(r.y??"","base64url")))],161)]).subarray()}function df(r){if(r==="P-256")return sf;if(r==="P-384")return af;if(r==="P-521")return cf;throw new Y(`Invalid curve ${r}`)}var Ft=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Ta(this.jwk)),this._raw}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}async verify(e,t,n){return Ia(this.jwk,t,e,n)}};var pn=Te(oe("crypto"),1);var Jm=pn.default.generateKeyPairSync,br=32;var hf=64;function Da(r,e,t){if(r.byteLength!==br)throw new TypeError('"key" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"key" must be a node.js Buffer, or Uint8Array.');if(e.byteLength!==hf)throw new TypeError('"sig" must be 64 bytes in length.');if(!(e instanceof Uint8Array))throw new TypeError('"sig" must be a node.js Buffer, or Uint8Array.');let n=pn.default.createPublicKey({format:"jwk",key:{crv:"Ed25519",x:re(r,"base64url"),kty:"OKP"}});return pn.default.verify(null,t instanceof Uint8Array?t:t.subarray(),n,e)}function _a(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var mn=class{type="Ed25519";raw;constructor(e){this.raw=ps(e,br)}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=Da(this.raw,t,e);return _a(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}};function Ba(r){return r=ps(r,br),new mn(r)}function ps(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new Y(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var _e;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(_e||(_e={}));var ms;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(ms||(ms={}));(function(r){r.codec=()=>He(ms)})(_e||(_e={}));var yr;(function(r){let e;r.codec=()=>(e==null&&(e=q((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_e.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=_e.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>W(t,r.codec()),r.decode=(t,n)=>z(t,r.codec(),n)})(yr||(yr={}));var bs;(function(r){let e;r.codec=()=>(e==null&&(e=q((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_e.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=_e.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>W(t,r.codec()),r.decode=(t,n)=>z(t,r.codec(),n)})(bs||(bs={}));function gr(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function qe(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function K(r,e,t=""){let n=gr(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function bn(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");qe(r.outputLen),qe(r.blockLen)}function zt(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Pa(r,e){K(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function wt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function yn(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ve(r,e){return r<<32-e|r>>>e}var Ra=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",bf=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function vt(r){if(K(r),Ra)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=bf[r[t]];return e}var je={_0:48,_9:57,A:65,F:70,a:97,f:102};function Oa(r){if(r>=je._0&&r<=je._9)return r-je._0;if(r>=je.A&&r<=je.F)return r-(je.A-10);if(r>=je.a&&r<=je.f)return r-(je.a-10)}function St(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(Ra)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=Oa(r.charCodeAt(s)),a=Oa(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 $e(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];K(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function Na(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function gn(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var ka=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Ua(r,e,t){return r&e^~r&t}function Ma(r,e,t){return r&e^r&t^e&t}var xn=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=yn(this.buffer)}update(e){zt(this),K(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=yn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){zt(this),Pa(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,wt(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=yn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must 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:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Je=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var yf=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ut=new Uint32Array(64),ys=class extends xn{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|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(e,t){for(let f=0;f<16;f++,t+=4)ut[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let p=ut[f-15],d=ut[f-2],g=Ve(p,7)^Ve(p,18)^p>>>3,x=Ve(d,17)^Ve(d,19)^d>>>10;ut[f]=x+ut[f-7]+g+ut[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 p=Ve(a,6)^Ve(a,11)^Ve(a,25),d=u+p+Ua(a,c,l)+yf[f]+ut[f]|0,x=(Ve(n,2)^Ve(n,13)^Ve(n,22))+Ma(n,o,s)|0;u=l,l=c,c=a,a=i+d|0,i=s,s=o,o=n,n=d+x|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(){wt(ut)}destroy(){this.set(0,0,0,0,0,0,0,0),wt(this.buffer)}},gs=class extends ys{A=Je[0]|0;B=Je[1]|0;C=Je[2]|0;D=Je[3]|0;E=Je[4]|0;F=Je[5]|0;G=Je[6]|0;H=Je[7]|0;constructor(){super(32)}};var Ka=Na(()=>new gs,ka(1));var mc=Te(oe("node:crypto"),1);var Es=BigInt(0),xs=BigInt(1);function xr(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Ha(r){if(typeof r=="bigint"){if(!En(r))throw new Error("positive bigint expected, got "+r)}else qe(r);return r}function Er(r){let e=Ha(r).toString(16);return e.length&1?"0"+e:e}function Va(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Es:BigInt("0x"+r)}function Wt(r){return Va(vt(r))}function ws(r){return Va(vt(gf(K(r)).reverse()))}function wn(r,e){qe(e),r=Ha(r);let t=St(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function vs(r,e){return wn(r,e).reverse()}function gf(r){return Uint8Array.from(r)}var En=r=>typeof r=="bigint"&&Es<=r;function xf(r,e,t){return En(r)&&En(e)&&En(t)&&e<=r&&r<t}function $a(r,e,t,n){if(!xf(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Ss(r){let e;for(e=0;r>Es;r>>=xs,e+=1);return e}var wr=r=>(xs<<BigInt(r))-xs;function Ga(r,e,t){if(qe(r,"hashLen"),qe(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=m=>new Uint8Array(m),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,f=()=>{c.fill(1),l.fill(0),u=0},p=(...m)=>t(l,$e(c,...m)),d=(m=o)=>{l=p(s,m),c=p(),m.length!==0&&(l=p(i,m),c=p())},g=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let m=0,v=[];for(;m<e;){c=p();let O=c.slice();v.push(O),m+=c.length}return $e(...v)};return(m,v)=>{f(),d(m);let O;for(;!(O=v(g()));)d();return f(),O}}function vr(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Is(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var we=BigInt(0),ge=BigInt(1),It=BigInt(2),Wa=BigInt(3),qa=BigInt(4),Ya=BigInt(5),Ef=BigInt(7),Za=BigInt(8),wf=BigInt(9),Xa=BigInt(16);function Ge(r,e){let t=r%e;return t>=we?t:e+t}function Be(r,e,t){let n=r;for(;e-- >we;)n*=n,n%=t;return n}function Fa(r,e){if(r===we)throw new Error("invert: expected non-zero number");if(e<=we)throw new Error("invert: expected positive modulus, got "+e);let t=Ge(r,e),n=e,o=we,s=ge,i=ge,a=we;for(;t!==we;){let l=n/t,u=n%t,f=o-i*l,p=s-a*l;n=t,t=u,o=i,s=a,i=f,a=p}if(n!==ge)throw new Error("invert: does not exist");return Ge(o,e)}function Ls(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function Qa(r,e){let t=(r.ORDER+ge)/qa,n=r.pow(e,t);return Ls(r,n,e),n}function vf(r,e){let t=(r.ORDER-Ya)/Za,n=r.mul(e,It),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,It),o),a=r.mul(s,r.sub(i,r.ONE));return Ls(r,a,e),a}function Sf(r){let e=qt(r),t=ja(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+Ef)/Xa;return(a,c)=>{let l=a.pow(c,i),u=a.mul(l,n),f=a.mul(l,o),p=a.mul(l,s),d=a.eql(a.sqr(u),c),g=a.eql(a.sqr(f),c);l=a.cmov(l,u,d),u=a.cmov(p,f,g);let x=a.eql(a.sqr(u),c),m=a.cmov(l,u,x);return Ls(a,m,c),m}}function ja(r){if(r<Wa)throw new Error("sqrt is not defined for small field");let e=r-ge,t=0;for(;e%It===we;)e/=It,t++;let n=It,o=qt(r);for(;za(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return Qa;let s=o.pow(n,e),i=(e+ge)/It;return function(c,l){if(c.is0(l))return l;if(za(c,l)!==1)throw new Error("Cannot find square root");let u=t,f=c.mul(c.ONE,s),p=c.pow(l,e),d=c.pow(l,i);for(;!c.eql(p,c.ONE);){if(c.is0(p))return c.ZERO;let g=1,x=c.sqr(p);for(;!c.eql(x,c.ONE);)if(g++,x=c.sqr(x),g===u)throw new Error("Cannot find square root");let m=ge<<BigInt(u-g-1),v=c.pow(f,m);u=g,f=c.sqr(v),p=c.mul(p,f),d=c.mul(d,v)}return d}}function If(r){return r%qa===Wa?Qa:r%Za===Ya?vf:r%Xa===wf?Sf(r):ja(r)}var Af=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ts(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=Af.reduce((n,o)=>(n[o]="function",n),e);return vr(r,t),r}function Lf(r,e,t){if(t<we)throw new Error("invalid exponent, negatives unsupported");if(t===we)return r.ONE;if(t===ge)return e;let n=r.ONE,o=e;for(;t>we;)t&ge&&(n=r.mul(n,o)),o=r.sqr(o),t>>=ge;return n}function vn(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function za(r,e){let t=(r.ORDER-ge)/It,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Tf(r,e){e!==void 0&&qe(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var As=class{ORDER;BITS;BYTES;isLE;ZERO=we;ONE=ge;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=we)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=Tf(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return Ge(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return we<=e&&e<this.ORDER}is0(e){return e===we}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ge)===ge}neg(e){return Ge(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Ge(e*e,this.ORDER)}add(e,t){return Ge(e+t,this.ORDER)}sub(e,t){return Ge(e-t,this.ORDER)}mul(e,t){return Ge(e*t,this.ORDER)}pow(e,t){return Lf(this,e,t)}div(e,t){return Ge(e*Fa(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return Fa(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=If(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?vs(e,this.BYTES):wn(e,this.BYTES)}fromBytes(e,t=!1){K(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?ws(e):Wt(e);if(a&&(c=Ge(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return vn(this,e)}cmov(e,t,n){return n?t:e}};function qt(r,e={}){return new As(r,e)}function Ja(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Ds(r){let e=Ja(r);return e+Math.ceil(e/2)}function Cs(r,e,t=!1){K(r);let n=r.length,o=Ja(e),s=Ds(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?ws(r):Wt(r),a=Ge(i,e-ge)+ge;return t?vs(a,o):wn(a,o)}var Yt=BigInt(0),At=BigInt(1);function Sr(r,e){let t=e.negate();return r?t:e}function Ps(r,e){let t=vn(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function nc(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function _s(r,e){nc(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=wr(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function ec(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=At);let l=e*n,u=l+Math.abs(a)-1,f=a===0,p=a<0,d=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:p,isNegF:d,offsetF:l}}var Bs=new WeakMap,oc=new WeakMap;function Os(r){return oc.get(r)||1}function tc(r){if(r!==Yt)throw new Error("invalid wNAF")}var Sn=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>Yt;)t&At&&(n=n.add(o)),o=o.double(),t>>=At;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=_s(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=_s(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:p,offsetF:d}=ec(n,a,i);n=c,u?s=s.add(Sr(p,t[d])):o=o.add(Sr(f,t[l]))}return tc(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=_s(e,this.bits);for(let i=0;i<s.windows&&n!==Yt;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=ec(n,i,s);if(n=a,!l){let f=t[c];o=o.add(u?f.negate():f)}}return tc(n),o}getPrecomputes(e,t,n){let o=Bs.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Bs.set(t,o))),o}cached(e,t,n){let o=Os(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Os(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){nc(t,this.bits),oc.set(e,t),Bs.delete(e)}hasCache(e){return Os(e)!==1}};function sc(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>Yt||n>Yt;)t&At&&(s=s.add(o)),n&At&&(i=i.add(o)),o=o.double(),t>>=At,n>>=At;return{p1:s,p2:i}}function rc(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ts(e),e}else return qt(r,{isLE:t})}function ic(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Yt))throw new Error(`CURVE.${c} must be positive bigint`)}let o=rc(e.p,t.Fp,n),s=rc(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ac(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var In=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(bn(e),K(t,void 0,"key"),this.iHash=e.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 n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),wt(o)}update(e){return zt(this),this.iHash.update(e),this}digestInto(e){zt(this),K(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Rs=(r,e,t)=>new In(r,e).update(t).digest();Rs.create=(r,e)=>new In(r,e);var cc=(r,e)=>(r+(r>=0?e:-e)/uc)/e;function Df(r,e,t){let[[n,o],[s,i]]=e,a=cc(i*r,t),c=cc(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,f=l<et,p=u<et;f&&(l=-l),p&&(u=-u);let d=wr(Math.ceil(Ss(t)/2))+Zt;if(l<et||l>=d||u<et||u>=d)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:p,k2:u}}function ks(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function Ns(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return xr(t.lowS,"lowS"),xr(t.prehash,"prehash"),t.format!==void 0&&ks(t.format),t}var Us=class extends Error{constructor(e=""){super(e)}},lt={Err:Us,_tlv:{encode:(r,e)=>{let{Err:t}=lt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Er(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Er(o.length/2|128):"";return Er(r)+s+o+e},decode(r,e){let{Err:t}=lt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=lt;if(r<et)throw new e("integer: negative integers are not allowed");let t=Er(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=lt;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Wt(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=lt,o=K(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("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 e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=lt,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},et=BigInt(0),Zt=BigInt(1),uc=BigInt(2),An=BigInt(3),Cf=BigInt(4);function lc(r,e={}){let t=ic("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;vr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=dc(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(U,y,b){let{x:h,y:E}=y.toAffine(),S=n.toBytes(h);if(xr(b,"isCompressed"),b){u();let L=!n.isOdd(E);return $e(fc(L),S)}else return $e(Uint8Array.of(4),S,n.toBytes(E))}function p(U){K(U,void 0,"Point");let{publicKey:y,publicKeyUncompressed:b}=l,h=U.length,E=U[0],S=U.subarray(1);if(h===y&&(E===2||E===3)){let L=n.fromBytes(S);if(!n.isValid(L))throw new Error("bad point: is not on curve, wrong x");let A=x(L),w;try{w=n.sqrt(A)}catch(ne){let G=ne instanceof Error?": "+ne.message:"";throw new Error("bad point: is not on curve, sqrt error"+G)}u();let T=n.isOdd(w);return(E&1)===1!==T&&(w=n.neg(w)),{x:L,y:w}}else if(h===b&&E===4){let L=n.BYTES,A=n.fromBytes(S.subarray(0,L)),w=n.fromBytes(S.subarray(L,L*2));if(!m(A,w))throw new Error("bad point: is not on curve");return{x:A,y:w}}else throw new Error(`bad point: got length ${h}, expected compressed=${y} or uncompressed=${b}`)}let d=e.toBytes||f,g=e.fromBytes||p;function x(U){let y=n.sqr(U),b=n.mul(y,U);return n.add(n.add(b,n.mul(U,s.a)),s.b)}function m(U,y){let b=n.sqr(y),h=x(U);return n.eql(b,h)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let v=n.mul(n.pow(s.a,An),Cf),O=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(v,O)))throw new Error("bad curve params: a or b");function M(U,y,b=!1){if(!n.isValid(y)||b&&n.is0(y))throw new Error(`bad point coordinate ${U}`);return y}function B(U){if(!(U instanceof C))throw new Error("Weierstrass Point expected")}function j(U){if(!c||!c.basises)throw new Error("no endo");return Df(U,c.basises,o.ORDER)}let J=Is((U,y)=>{let{X:b,Y:h,Z:E}=U;if(n.eql(E,n.ONE))return{x:b,y:h};let S=U.is0();y==null&&(y=S?n.ONE:n.inv(E));let L=n.mul(b,y),A=n.mul(h,y),w=n.mul(E,y);if(S)return{x:n.ZERO,y:n.ZERO};if(!n.eql(w,n.ONE))throw new Error("invZ was invalid");return{x:L,y:A}}),le=Is(U=>{if(U.is0()){if(e.allowInfinityPoint&&!n.is0(U.Y))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=U.toAffine();if(!n.isValid(y)||!n.isValid(b))throw new Error("bad point: x or y not field elements");if(!m(y,b))throw new Error("bad point: equation left != right");if(!U.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function ie(U,y,b,h,E){return b=new C(n.mul(b.X,U),b.Y,b.Z),y=Sr(h,y),b=Sr(E,b),y.add(b)}class C{static BASE=new C(s.Gx,s.Gy,n.ONE);static ZERO=new C(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(y,b,h){this.X=M("x",y),this.Y=M("y",b,!0),this.Z=M("z",h),Object.freeze(this)}static CURVE(){return s}static fromAffine(y){let{x:b,y:h}=y||{};if(!y||!n.isValid(b)||!n.isValid(h))throw new Error("invalid affine point");if(y instanceof C)throw new Error("projective point not allowed");return n.is0(b)&&n.is0(h)?C.ZERO:new C(b,h,n.ONE)}static fromBytes(y){let b=C.fromAffine(g(K(y,void 0,"point")));return b.assertValidity(),b}static fromHex(y){return C.fromBytes(St(y))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,b=!0){return dt.createCache(this,y),b||this.multiply(An),this}assertValidity(){le(this)}hasEvenY(){let{y}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(y)}equals(y){B(y);let{X:b,Y:h,Z:E}=this,{X:S,Y:L,Z:A}=y,w=n.eql(n.mul(b,A),n.mul(S,E)),T=n.eql(n.mul(h,A),n.mul(L,E));return w&&T}negate(){return new C(this.X,n.neg(this.Y),this.Z)}double(){let{a:y,b}=s,h=n.mul(b,An),{X:E,Y:S,Z:L}=this,A=n.ZERO,w=n.ZERO,T=n.ZERO,D=n.mul(E,E),ne=n.mul(S,S),G=n.mul(L,L),P=n.mul(E,S);return P=n.add(P,P),T=n.mul(E,L),T=n.add(T,T),A=n.mul(y,T),w=n.mul(h,G),w=n.add(A,w),A=n.sub(ne,w),w=n.add(ne,w),w=n.mul(A,w),A=n.mul(P,A),T=n.mul(h,T),G=n.mul(y,G),P=n.sub(D,G),P=n.mul(y,P),P=n.add(P,T),T=n.add(D,D),D=n.add(T,D),D=n.add(D,G),D=n.mul(D,P),w=n.add(w,D),G=n.mul(S,L),G=n.add(G,G),D=n.mul(G,P),A=n.sub(A,D),T=n.mul(G,ne),T=n.add(T,T),T=n.add(T,T),new C(A,w,T)}add(y){B(y);let{X:b,Y:h,Z:E}=this,{X:S,Y:L,Z:A}=y,w=n.ZERO,T=n.ZERO,D=n.ZERO,ne=s.a,G=n.mul(s.b,An),P=n.mul(b,S),Z=n.mul(h,L),fe=n.mul(E,A),Fe=n.add(b,h),X=n.add(S,L);Fe=n.mul(Fe,X),X=n.add(P,Z),Fe=n.sub(Fe,X),X=n.add(b,E);let pe=n.add(S,A);return X=n.mul(X,pe),pe=n.add(P,fe),X=n.sub(X,pe),pe=n.add(h,E),w=n.add(L,A),pe=n.mul(pe,w),w=n.add(Z,fe),pe=n.sub(pe,w),D=n.mul(ne,X),w=n.mul(G,fe),D=n.add(w,D),w=n.sub(Z,D),D=n.add(Z,D),T=n.mul(w,D),Z=n.add(P,P),Z=n.add(Z,P),fe=n.mul(ne,fe),X=n.mul(G,X),Z=n.add(Z,fe),fe=n.sub(P,fe),fe=n.mul(ne,fe),X=n.add(X,fe),P=n.mul(Z,X),T=n.add(T,P),P=n.mul(pe,X),w=n.mul(Fe,w),w=n.sub(w,P),P=n.mul(Fe,Z),D=n.mul(pe,D),D=n.add(D,P),new C(w,T,D)}subtract(y){return this.add(y.negate())}is0(){return this.equals(C.ZERO)}multiply(y){let{endo:b}=e;if(!o.isValidNot0(y))throw new Error("invalid scalar: out of range");let h,E,S=L=>dt.cached(this,L,A=>Ps(C,A));if(b){let{k1neg:L,k1:A,k2neg:w,k2:T}=j(y),{p:D,f:ne}=S(A),{p:G,f:P}=S(T);E=ne.add(P),h=ie(b.beta,D,G,L,w)}else{let{p:L,f:A}=S(y);h=L,E=A}return Ps(C,[h,E])[0]}multiplyUnsafe(y){let{endo:b}=e,h=this;if(!o.isValid(y))throw new Error("invalid scalar: out of range");if(y===et||h.is0())return C.ZERO;if(y===Zt)return h;if(dt.hasCache(this))return this.multiply(y);if(b){let{k1neg:E,k1:S,k2neg:L,k2:A}=j(y),{p1:w,p2:T}=sc(C,h,S,A);return ie(b.beta,w,T,E,L)}else return dt.unsafe(h,y)}toAffine(y){return J(this,y)}isTorsionFree(){let{isTorsionFree:y}=e;return i===Zt?!0:y?y(C,this):dt.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:y}=e;return i===Zt?this:y?y(C,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(y=!0){return xr(y,"isCompressed"),this.assertValidity(),d(C,this,y)}toHex(y=!0){return vt(this.toBytes(y))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let Br=o.BITS,dt=new Sn(C,e.endo?Math.ceil(Br/2):Br);return C.BASE.precompute(8),C}function fc(r){return Uint8Array.of(r?2:3)}function dc(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function _f(r,e={}){let{Fn:t}=r,n=e.randomBytes||gn,o=Object.assign(dc(r.Fp,t),{seed:Ds(t.ORDER)});function s(d){try{let g=t.fromBytes(d);return t.isValidNot0(g)}catch{return!1}}function i(d,g){let{publicKey:x,publicKeyUncompressed:m}=o;try{let v=d.length;return g===!0&&v!==x||g===!1&&v!==m?!1:!!r.fromBytes(d)}catch{return!1}}function a(d=n(o.seed)){return Cs(K(d,o.seed,"seed"),t.ORDER)}function c(d,g=!0){return r.BASE.multiply(t.fromBytes(d)).toBytes(g)}function l(d){let{secretKey:g,publicKey:x,publicKeyUncompressed:m}=o;if(!gr(d)||"_lengths"in t&&t._lengths||g===x)return;let v=K(d,void 0,"key").length;return v===x||v===m}function u(d,g,x=!0){if(l(d)===!0)throw new Error("first arg must be private key");if(l(g)===!1)throw new Error("second arg must be public key");let m=t.fromBytes(d);return r.fromBytes(g).multiply(m).toBytes(x)}let f={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},p=ac(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:p,Point:r,utils:f,lengths:o})}function hc(r,e,t={}){bn(e),vr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||gn,o=t.hmac||((b,h)=>Rs(e,b,h)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:p,lengths:d}=_f(r,t),g={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},x=a*uc<s.ORDER;function m(b){let h=a>>Zt;return b>h}function v(b,h){if(!i.isValidNot0(h))throw new Error(`invalid signature ${b}: out of range 1..Point.Fn.ORDER`);return h}function O(){if(x)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function M(b,h){ks(h);let E=d.signature,S=h==="compact"?E:h==="recovered"?E+1:void 0;return K(b,S)}class B{r;s;recovery;constructor(h,E,S){if(this.r=v("r",h),this.s=v("s",E),S!=null){if(O(),![0,1,2,3].includes(S))throw new Error("invalid recovery id");this.recovery=S}Object.freeze(this)}static fromBytes(h,E=g.format){M(h,E);let S;if(E==="der"){let{r:T,s:D}=lt.toSig(K(h));return new B(T,D)}E==="recovered"&&(S=h[0],E="compact",h=h.subarray(1));let L=d.signature/2,A=h.subarray(0,L),w=h.subarray(L,L*2);return new B(i.fromBytes(A),i.fromBytes(w),S)}static fromHex(h,E){return this.fromBytes(St(h),E)}assertRecovery(){let{recovery:h}=this;if(h==null)throw new Error("invalid recovery id: must be present");return h}addRecoveryBit(h){return new B(this.r,this.s,h)}recoverPublicKey(h){let{r:E,s:S}=this,L=this.assertRecovery(),A=L===2||L===3?E+a:E;if(!s.isValid(A))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let w=s.toBytes(A),T=r.fromBytes($e(fc((L&1)===0),w)),D=i.inv(A),ne=J(K(h,void 0,"msgHash")),G=i.create(-ne*D),P=i.create(S*D),Z=r.BASE.multiplyUnsafe(G).add(T.multiplyUnsafe(P));if(Z.is0())throw new Error("invalid recovery: point at infinify");return Z.assertValidity(),Z}hasHighS(){return m(this.s)}toBytes(h=g.format){if(ks(h),h==="der")return St(lt.hexFromSig(this));let{r:E,s:S}=this,L=i.toBytes(E),A=i.toBytes(S);return h==="recovered"?(O(),$e(Uint8Array.of(this.assertRecovery()),L,A)):$e(L,A)}toHex(h){return vt(this.toBytes(h))}}let j=t.bits2int||function(h){if(h.length>8192)throw new Error("input is too large");let E=Wt(h),S=h.length*8-c;return S>0?E>>BigInt(S):E},J=t.bits2int_modN||function(h){return i.create(j(h))},le=wr(c);function ie(b){return $a("num < 2^"+c,b,et,le),i.toBytes(b)}function C(b,h){return K(b,void 0,"message"),h?K(e(b),void 0,"prehashed message"):b}function Br(b,h,E){let{lowS:S,prehash:L,extraEntropy:A}=Ns(E,g);b=C(b,L);let w=J(b),T=i.fromBytes(h);if(!i.isValidNot0(T))throw new Error("invalid private key");let D=[ie(T),ie(w)];if(A!=null&&A!==!1){let Z=A===!0?n(d.secretKey):A;D.push(K(Z,void 0,"extraEntropy"))}let ne=$e(...D),G=w;function P(Z){let fe=j(Z);if(!i.isValidNot0(fe))return;let Fe=i.inv(fe),X=r.BASE.multiply(fe).toAffine(),pe=i.create(X.x);if(pe===et)return;let Or=i.create(Fe*i.create(G+pe*T));if(Or===et)return;let Ti=(X.x===pe?0:2)|Number(X.y&Zt),Di=Or;return S&&m(Or)&&(Di=i.neg(Or),Ti^=1),new B(pe,Di,x?void 0:Ti)}return{seed:ne,k2sig:P}}function dt(b,h,E={}){let{seed:S,k2sig:L}=Br(b,h,E);return Ga(e.outputLen,i.BYTES,o)(S,L).toBytes(E.format)}function U(b,h,E,S={}){let{lowS:L,prehash:A,format:w}=Ns(S,g);if(E=K(E,void 0,"publicKey"),h=C(h,A),!gr(b)){let T=b instanceof B?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+T)}M(b,w);try{let T=B.fromBytes(b,w),D=r.fromBytes(E);if(L&&T.hasHighS())return!1;let{r:ne,s:G}=T,P=J(h),Z=i.inv(G),fe=i.create(P*Z),Fe=i.create(ne*Z),X=r.BASE.multiplyUnsafe(fe).add(D.multiplyUnsafe(Fe));return X.is0()?!1:i.create(X.x)===ne}catch{return!1}}function y(b,h,E={}){let{prehash:S}=Ns(E,g);return h=C(h,S),B.fromBytes(b,"recovered").recoverPublicKey(h).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:p,lengths:d,Point:r,sign:dt,verify:U,recoverPublicKey:y,Signature:B,hash:e})}var Ks={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Bf={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var pc=BigInt(2);function Of(r){let e=Ks.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=Be(u,t,e)*u%e,p=Be(f,t,e)*u%e,d=Be(p,pc,e)*l%e,g=Be(d,o,e)*d%e,x=Be(g,s,e)*g%e,m=Be(x,a,e)*x%e,v=Be(m,c,e)*m%e,O=Be(v,a,e)*x%e,M=Be(O,t,e)*u%e,B=Be(M,i,e)*g%e,j=Be(B,n,e)*l%e,J=Be(j,pc,e);if(!Ms.eql(Ms.sqr(J),r))throw new Error("Cannot find square root");return J}var Ms=qt(Ks.p,{sqrt:Of}),Pf=lc(Ks,{Fp:Ms,endo:Bf}),Ir=hc(Pf,Ka);var Ln=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}};function bc(r,e,t,n){n?.signal?.throwIfAborted();let o=mc.default.createHash("sha256");if(t instanceof Uint8Array)o.update(t);else for(let i of t)o.update(i);let s=o.digest();try{return Ir.verify(e,s,r,{prehash:!1,format:"der"})}catch(i){throw new Ln(String(i))}}var Tn=class{type="secp256k1";raw;_key;constructor(e){this._key=gc(e),this.raw=yc(this._key)}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}verify(e,t,n){return bc(this._key,t,e,n)}};function xc(r){return new Tn(r)}function yc(r){return Ir.Point.fromBytes(r).toBytes()}function gc(r){try{return Ir.Point.fromBytes(r),r}catch(e){throw new rn(String(e))}}function Ec(r){let{Type:e,Data:t}=yr.decode(r.digest),n=t??new Uint8Array;switch(e){case _e.Ed25519:return Ba(n);case _e.secp256k1:return xc(n);case _e.ECDSA:return Aa(n);default:throw new hr}}function ct(r){return yr.encode({Type:_e[r.type],Data:r.raw})}var wc=Symbol.for("nodejs.util.inspect.custom"),Rf=114,Ar=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[as]=!0;toString(){return this.string==null&&(this.string=ee.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return se.createV1(Rf,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Ce(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Ce(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[wc](){return`PeerId(${this.toString()})`}},Dn=class extends Ar{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Cn=class extends Ar{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},_n=class extends Ar{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Nf=2336,Bn=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Ke.digest(ye(this.url))}[wc](){return`PeerId(${this.url})`}[as]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return se.createV1(Nf,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=re(e)),e.toString()===this.toString())}};function Xt(r){if(Uf(r))return new Dn({multihash:r});if(kf(r))try{let e=Ec(r);if(e.type==="Ed25519")return new Cn({multihash:r,publicKey:e});if(e.type==="secp256k1")return new _n({multihash:r,publicKey:e})}catch{let t=re(r.digest);return new Bn(new URL(t))}throw new on("Supplied PeerID Multihash is invalid")}function kf(r){return r.code===Ke.code}function Uf(r){return r.code===Zo.code}var iu=Te(oe("net"),1);var he=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},tt=class extends Error{static name="ValidationError";name="ValidationError"},On=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},Pn=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};var Oe=oe("node:net");function Vs(r){return e=>re(e,r)}function $s(r){return e=>ye(e,r)}function Qt(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Lt(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function vc(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=ye(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Lt(n);return We([t,o],t.length+o.length)}function Sc(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=ze.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Lt(n);return We([t,o],t.length+o.length)}function Gs(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=re(e,"base32"),o=Qt(t);return`${n}:${o}`}var Fs=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new he("Invalid byte value in IP address");e[n]=o}),e},Ic=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=(0,Oe.isIPv4)(t[n]),i;s&&(i=Fs(t[n]),t[n]=re(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,re(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new he("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},Ac=function(r){if(r.byteLength!==4)throw new he("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},Lc=function(r){if(r.byteLength!==16)throw new he("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new he(`Invalid IPv6 address "${t}"`)}};function Tc(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new he(`Invalid IPv6 address "${r}"`)}}var Hs=Object.values(ar).map(r=>r.decoder),Mf=(function(){let r=Hs[0].or(Hs[1]);return Hs.slice(2).forEach(e=>r=r.or(e)),r})();function Dc(r){return Mf.decode(r)}function Cc(r){return e=>r.encoder.encode(e)}function Kf(r){if(parseInt(r).toString()!==r)throw new tt("Value must be an integer")}function Hf(r){if(r<0)throw new tt("Value must be a positive integer, or zero")}function Vf(r){return e=>{if(e>r)throw new tt(`Value must be smaller than or equal to ${r}`)}}function $f(...r){return e=>{for(let t of r)t(e)}}var Lr=$f(Kf,Hf,Vf(65535));var ce=-1,zs=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new Pn(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},rt=new zs,nd=[{code:4,name:"ip4",size:32,valueToBytes:Fs,bytesToValue:Ac,validate:r=>{if(!(0,Oe.isIPv4)(r))throw new tt(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:273,name:"udp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:33,name:"dccp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:41,name:"ip6",size:128,valueToBytes:Ic,bytesToValue:Lc,stringToValue:Tc,validate:r=>{if(!(0,Oe.isIPv6)(r))throw new tt(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:ce},{code:43,name:"ipcidr",size:8,bytesToValue:Vs("base10"),valueToBytes:$s("base10")},{code:53,name:"dns",size:ce},{code:54,name:"dns4",size:ce},{code:55,name:"dns6",size:ce},{code:56,name:"dnsaddr",size:ce},{code:132,name:"sctp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:ce,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:ce,bytesToValue:Vs("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?$s("base58btc")(r):se.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Gs,valueToBytes:vc},{code:445,name:"onion3",size:296,bytesToValue:Gs,valueToBytes:Sc},{code:446,name:"garlic64",size:ce},{code:447,name:"garlic32",size:ce},{code:448,name:"tls"},{code:449,name:"sni",size:ce},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:ce,bytesToValue:Cc(Ho),valueToBytes:Dc},{code:480,name:"http"},{code:481,name:"http-path",size:ce,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:ce}];nd.forEach(r=>{rt.addProtocol(r)});function _c(r){let e=[],t=0;for(;t<r.length;){let n=pt(r,t),o=rt.getProtocol(n),s=ae(n),i=od(o,r,t+s),a=0;i>0&&o.size===ce&&(a=ae(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let u=t+s+a,f=r.subarray(u,u+i);l.value=o.bytesToValue?.(f)??re(f)}e.push(l),t+=c}return e}function Bc(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=rt.getProtocol(n.code),s=ae(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??ye(n.value),a=i.byteLength,o.size===ce&&(c=ae(a)));let l=new Uint8Array(s+c+a),u=0;Ot(n.code,l,u),u+=s,i!=null&&(o.size===ce&&(Ot(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return We(t,e)}function Oc(r){if(r.charAt(0)!=="/")throw new he('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=rt.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new he(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new he(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new he("Incomplete multiaddr");return e}function Pc(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=rt.getProtocol(e.code);if(t==null)throw new he(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function od(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:pt(e,t)}var sd=Symbol.for("nodejs.util.inspect.custom"),oi=Symbol.for("@multiformats/multiaddr");function id(r){if(r==null&&(r="/"),Rc(r))return r.getComponents();if(r instanceof Uint8Array)return _c(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),Oc(r);if(Array.isArray(r))return r;throw new he("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Vn=class r{[oi]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=id(e),t.validate!==!1&&ad(this)}get bytes(){return this.#r==null&&(this.#r=Bc(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=Pc(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new On(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Ce(this.bytes,e.bytes)}[sd](){return`Multiaddr(${this.toString()})`}};function ad(r){r.getComponents().forEach(e=>{let t=rt.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function Rc(r){return!!r?.[oi]}function Ye(r){return new Vn(r)}var V=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),I=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),Nc=r=>({match:e=>r.match(e)===!1?e:!1}),_=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),xe=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),k=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function $(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var cd=I(421),Ry=$(cd),Gn=I(54),Fn=I(55),zn=I(56),ii=I(53),Ny=$(Gn,_(I(421))),ky=$(Fn,_(I(421))),Uy=$(zn,_(I(421))),My=$(xe(ii,zn,Gn,Fn),_(I(421))),kc=k(I(4),_(I(43))),Uc=k(_(I(42)),I(41),_(I(43))),ai=xe(kc,Uc),Ct=xe(ai,ii,Gn,Fn,zn),Ky=$(xe(ai,k(xe(ii,zn,Gn,Fn),_(I(421))))),Hy=$(kc),Vy=$(Uc),$y=$(ai),ci=k(Ct,I(6)),Dr=k(Ct,I(273)),Mc=$(k(ci,_(I(421)))),Gy=$(Dr),ui=k(Dr,V(460),_(I(421))),Wn=k(Dr,V(461),_(I(421))),ud=xe(ui,Wn),Fy=$(ui),zy=$(Wn),si=xe(Ct,ci,Dr,ui,Wn),Kc=xe(k(si,V(477),_(I(421)))),Wy=$(Kc),Hc=xe(k(si,V(478),_(I(421))),k(si,V(448),_(I(449)),V(477),_(I(421)))),qy=$(Hc),Vc=k(Dr,V(280),_(I(466)),_(I(466)),_(I(421))),Yy=$(Vc),$c=k(Wn,V(465),_(I(466)),_(I(466)),_(I(421))),Zy=$($c),$n=xe(Kc,Hc,k(ci,_(I(421))),k(ud,_(I(421))),k(Ct,_(I(421))),Vc,$c,I(421)),Xy=$($n),ld=k(_($n),V(290),Nc(V(281)),_(I(421))),Qy=$(ld),fd=xe(k($n,V(290),V(281),_(I(421))),k($n,V(281),_(I(421))),k(V(281),_(I(421)))),jy=$(fd),dd=xe(k(Ct,I(6),V(480),_(I(421))),k(Ct,V(480),_(I(421)))),Jy=$(dd),hd=k(Ct,xe(k(I(6,"443"),V(480)),k(I(6),V(443)),k(I(6),V(448),V(480)),k(V(448),V(480)),V(448),V(443)),_(I(421))),eg=$(hd),pd=xe(k(I(777),_(I(421)))),tg=$(pd),md=xe(k(I(400),_(I(421)))),qn=$(md);var Yn=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var su=Te(oe("node:net"),1);function Zn(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new Y(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}function nt(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Xn=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},tr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Xn(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Xn(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var li=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function ft(r={}){return bd(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function bd(r,e){e=e??{};let t=e.onEnd,n=new tr,o,s,i,a=nt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((m,v)=>{s=O=>{s=null,n.push(O);try{m(r(n))}catch(M){v(M)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=nt()})}},l=m=>s!=null?s(m):(n.push(m),o),u=m=>(n=new tr,s!=null?s({error:m}):(n.push({error:m}),o)),f=m=>{if(i)return o;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:m})},p=m=>i?o:(i=!0,m!=null?u(m):l({done:!0})),d=()=>(n=new tr,p(),{done:!0}),g=m=>(p(m),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:d,throw:g,push:f,end:p,get readableLength(){return n.size},onEmpty:async m=>{let v=m?.signal;if(v?.throwIfAborted(),n.isEmpty())return;let O,M;v!=null&&(O=new Promise((B,j)=>{M=()=>{j(new li)},v.addEventListener("abort",M)}));try{await Promise.race([a.promise,O])}finally{M!=null&&v!=null&&v?.removeEventListener("abort",M)}}},t==null)return o;let x=o;return o={[Symbol.asyncIterator](){return this},next(){return x.next()},throw(m){return x.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return x.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(m){return x.end(m),t!=null&&(t(m),t=void 0),o},get readableLength(){return x.readableLength},onEmpty:m=>x.onEmpty(m)},o}var fi=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},di=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Gc=r=>globalThis.DOMException===void 0?new di(r):new DOMException(r),Fc=r=>{let e=r.reason===void 0?Gc("This operation was aborted."):r.reason;return e instanceof Error?e:Gc(e)};function hi(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(Fc(d)),a=()=>{f(Fc(d))},d.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let p=new fi;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(p.message=o??`Promise timed out after ${t} milliseconds`,f(p))},t),(async()=>{try{u(await r)}catch(d){f(d)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var yd=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function gd(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=yd(r),f=async(...d)=>{let g=t.multiArgs?d:d[0];if(t.filter)try{if(!await t.filter(g))return}catch(x){n(),i(x);return}c.push(g),t.count===c.length&&(n(),s(c))},p=(...d)=>{n(),i(t.rejectionMultiArgs?d:d[0])};n=()=>{for(let d of a)u(d,f);for(let d of t.rejectionEvents)a.includes(d)||u(d,p)};for(let d of a)l(d,f);for(let d of t.rejectionEvents)a.includes(d)||l(d,p);t.signal&&t.signal.addEventListener("abort",()=>{p(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=hi(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Pe(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=gd(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var _t=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function xd(r){return r.reason}async function zc(r,e,t){if(e==null)return r;let n=t?.translateError??xd;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var Ed=Math.pow(2,20)*4,Qn=class extends Gt{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??Ed,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new H,this.writeBuffer=new H,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue())};this.addEventListener("drain",t)}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=ft(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Et(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new un(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new nn;this.dispatchEvent(new ln(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new $t))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new H(s);this.writeBuffer.consume(s.byteLength);let a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new cn(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new dr(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new dr(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var jn=class extends Qn{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await Pe(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await Pe(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};var qc=Te(oe("node:os"),1);function Wc(r){return!!(r.startsWith("169.254.")||r.toLowerCase().startsWith("fe80"))}function pi(r,e,t){let n=[r.type,t??r.host];if(r.protocol!=null){let o=e??r.port;o!=null&&n.push(r.protocol,o)}return r.type==="ip6"&&r.zone!=null&&n.unshift("ip6zone",r.zone),r.cidr!=null&&n.push("ipcidr",r.cidr),Ye(`/${n.join("/")}`)}var wd={4:"IPv4",6:"IPv6"};function vd(r){return["0.0.0.0","::"].includes(r)}function Sd(r){let e=[],t=qc.default.networkInterfaces();for(let[,n]of Object.entries(t))if(n!=null)for(let o of n)Wc(o.address)||o.family===wd[r]&&e.push(o.address);return e}function Yc(r,e){if(r==null)return[];let t=Zn(r);return(t.type==="ip4"||t.type==="ip6")&&vd(t.host)?Sd(t.type==="ip4"?4:6).map(n=>pi(t,e,n)):[pi(t,e)]}function Zc(r,e){if(typeof r!="string")throw new Y(`invalid ip provided: ${r}`);if(typeof e=="string"&&(e=parseInt(e)),isNaN(e))throw new Y(`invalid port provided: ${e}`);if((0,Oe.isIPv4)(r))return Ye(`/ip4/${r}/tcp/${e}`);if((0,Oe.isIPv6)(r))return Ye(`/ip6/${r}/tcp/${e}`);throw new Y(`invalid ip:port for creating a multiaddr: ${r}:${e}`)}var Jn=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Xc(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new Jn(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new Jn(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var mi=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=nt(),this.haveNext=nt()}[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 e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=nt(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=nt(),await Xc(this.readNext.promise,t?.signal,t)}};function Qc(){return new mi}function Id(r){return r[Symbol.asyncIterator]!=null}async function Ad(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Ld(r){let e=new AbortController,t=Qc();Ad(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Td(r){for(let e of r)yield*e}function Dd(...r){let e=[];for(let t of r)Id(t)||e.push(t);return e.length===r.length?Td(e):Ld(r)}var jc=Dd;function Jc(r,...e){if(r==null)throw new Error("Empty pipeline");if(bi(r)){let n=r;r=()=>n.source}else if(tu(r)||eu(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&bi(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)bi(t[n])&&(t[n]=_d(t[n]));return Cd(...t)}var Cd=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},eu=r=>r?.[Symbol.asyncIterator]!=null,tu=r=>r?.[Symbol.iterator]!=null,bi=r=>r==null?!1:r.sink!=null&&r.source!=null,_d=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=ft({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(eu(s))o=async function*(){yield*s,n.end()};else if(tu(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return jc(n,o())}return r.source};var Bd=4194304,eo=class extends Error{static name="UnwrappedError";name="UnwrappedError"},gi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},xi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ei=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Od(r){return typeof r?.closeRead=="function"}function Pd(r){return typeof r?.close=="function"}function yi(r){return Od(r)?r.readStatus==="closing"||r.readStatus==="closed":Pd(r)?r.status!=="open":!1}function Rd(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Nd(r,e){let t=e?.maxBufferSize??Bd,n=new H,o,s=!1;if(!Rd(r))throw new Y("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new eo("Stream was unwrapped");if(yi(r)){if(u?.bytes==null)return null;if(n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new _t(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let f=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await zc(o.promise,u?.signal),yi(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let p=u?.bytes??n.byteLength;if(n.byteLength<p){if(yi(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,p),new _t(`Unexpected EOF - stream closed while reading ${n.byteLength}/${p} bytes`);return l.read(u)}let d=n.sublist(0,p);return n.consume(p),d},async write(u,f){if(s===!0)throw new eo("Stream was unwrapped");r.send(u)||await Pe(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function Cr(r,e={}){let t=Nd(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=ae(e.maxDataLength));let n=e?.lengthDecoder??pt,o=e?.lengthEncoder??Rr;return{async read(i){let a=-1,c=new H;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new gi("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Ei(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new xi(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new _t(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new _t(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new H(o(i.byteLength),i),a)},async writeV(i,a){let c=new H(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function wi(r,e){let t=Cr(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.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:()=>t.unwrap()};return n}function kd(r){return r?.addEventListener!=null}function Ud(r){let e=ft(),t,n=i=>{e.push(i.data)},o=()=>{e.end(),r.removeEventListener("message",n),r.removeEventListener("close",s),r.removeEventListener("remoteCloseWrite",o)},s=i=>{e.end(i.error),i.error!=null&&t?.reject(i.error),r.removeEventListener("message",n),r.removeEventListener("close",s),r.removeEventListener("remoteCloseWrite",o)};return r.addEventListener("message",n),r.addEventListener("close",s,{once:!0}),r.addEventListener("remoteCloseWrite",o,{once:!0}),{source:e,async sink(i){async function*a(){yield*i}let c=a();for(;;){t=Promise.withResolvers();let{done:l,value:u}=await Promise.race([c.next(),t.promise]);if(r.writeStatus==="closing"||r.writeStatus==="closed"||(u!=null&&(r.send(u)||await Promise.race([Pe(r,"drain",{rejectionEvents:["close"]})])),l===!0))break}await r.close()}}}function vi(...r){let e=r.map(t=>kd(t)?Ud(t):t);return Jc(...e)}var to=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},rr=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ro=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},_r=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function no(r){return r[Symbol.asyncIterator]!=null}function ru(r,e){if(r.byteLength>e)throw new rr("Message length too long")}var so=r=>{let e=ae(r),t=Se(e);return Rr(r,t),so.bytes=e,t};so.bytes=0;function io(r,e){e=e??{};let t=e.lengthEncoder??so,n=e?.maxDataLength??4194304;function*o(s){ru(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return no(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}io.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??so,n=e?.maxDataLength??4194304;return ru(r,n),new H(t(r.byteLength),r)};var Bt;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Bt||(Bt={}));var Ii=r=>{let e=pt(r);return Ii.bytes=ae(e),e};Ii.bytes=0;function Si(r,e){let t=new H,n=Bt.LENGTH,o=-1,s=e?.lengthDecoder??Ii,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===Bt.LENGTH)try{if(o=s(t),o<0)throw new to("Invalid message length");if(o>a)throw new rr("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=Bt.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new ro("Message length length too long");break}throw l}if(n===Bt.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Bt.LENGTH}}}return no(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _r("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _r("Unexpected end of input")})()}Si.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return Si(n,{...e??{},onLength:s=>{t=s}})};var Ai=class extends jn{socket;constructor(e){let t=e.remoteAddr;if(e.localAddr!=null&&qn.matches(e.localAddr))t=e.localAddr;else if(t==null){if(e.socket.remoteAddress==null||e.socket.remotePort==null)throw new Y("Could not determine remote address or port");t=Zc(e.socket.remoteAddress,e.socket.remotePort)}super({...e,remoteAddr:t}),this.socket=e.socket,this.socket.on("data",n=>{this.onData(n)}),this.socket.on("error",n=>{this.log("tcp error",t,n),this.abort(n)}),this.socket.setTimeout(e.inactivityTimeout??120*1e3),this.socket.once("timeout",()=>{this.log("tcp timeout",t),this.abort(new Vt)}),this.socket.once("end",()=>{this.log("tcp end",t),this.onTransportClosed()}),this.socket.once("close",n=>{if(this.log("tcp close",t),n){this.abort(new Error("TCP transmission error"));return}this.onTransportClosed()}),this.socket.on("drain",()=>{this.log("tcp drain"),this.safeDispatchEvent("drain")})}sendData(e){let t=0,n=!0;for(let o of e)if(t+=o.byteLength,n=this.socket.write(o),!n)break;return{sentBytes:t,canSendMore:n}}async sendClose(e){this.socket.destroyed||(this.socket.destroySoon(),await Pe(this.socket,"close",e))}sendReset(){this.socket.resetAndDestroy()}sendPause(){this.socket.pause()}sendResume(){this.socket.resume()}},ao=r=>new Ai(r);var nu=Te(oe("os"),1),ou=Te(oe("path"),1);function co(r,e={}){if(qn.exactMatch(r)){let s=r.getComponents().find(i=>i.code===400)?.value;if(s==null)throw new Y(`Multiaddr ${r} was not a Unix address`);return nu.default.platform()==="win32"?{path:ou.default.join("\\\\.\\pipe\\",s)}:{path:s}}let t=Zn(r),n=t.host,o=t.port;return{host:n,port:o,ipv6Only:t.type==="ip6",...e}}var ue;(function(r){r[r.INACTIVE=0]="INACTIVE",r[r.ACTIVE=1]="ACTIVE",r[r.PAUSED=2]="PAUSED"})(ue||(ue={}));var uo=class extends Gt{context;server;sockets=new Set;status={code:ue.INACTIVE};metrics;addr;log;shutdownController;constructor(e){if(super(),this.context=e,e.keepAlive=e.keepAlive??!0,e.noDelay=e.noDelay??!0,e.allowHalfOpen=e.allowHalfOpen??!1,this.shutdownController=new AbortController,fn(1/0,this.shutdownController.signal),this.log=e.logger.forComponent("libp2p:tcp:listener"),this.addr="unknown",this.server=su.default.createServer(e,this.onSocket.bind(this)),e.maxConnections!==void 0&&(this.server.maxConnections=e.maxConnections),e.closeServerOnMaxConnections!=null&&e.closeServerOnMaxConnections.closeAbove<e.closeServerOnMaxConnections.listenBelow)throw new Y("closeAbove must be >= listenBelow");e.metrics?.registerMetricGroup("libp2p_tcp_inbound_connections_total",{label:"address",help:"Current active connections in TCP listener",calculate:()=>({[this.addr]:this.sockets.size})}),this.metrics={status:e.metrics?.registerMetricGroup("libp2p_tcp_listener_status_info",{label:"address",help:"Current status of the TCP listener socket"}),errors:e.metrics?.registerMetricGroup("libp2p_tcp_listener_errors_total",{label:"address",help:"Total count of TCP listener errors by type"}),events:e.metrics?.registerMetricGroup("libp2p_tcp_listener_events_total",{label:"address",help:"Total count of TCP listener events by type"})},this.server.on("listening",()=>{let t=this.server.address();t==null?this.addr="unknown":typeof t=="string"?this.addr=t:this.addr=`${t.address}:${t.port}`,this.metrics.status?.update({[this.addr]:ue.ACTIVE}),this.safeDispatchEvent("listening")}).on("error",t=>{this.metrics.errors?.increment({[`${this.addr} listen_error`]:!0}),this.safeDispatchEvent("error",{detail:t})}).on("close",()=>{this.metrics.status?.update({[this.addr]:this.status.code}),this.status.code!==ue.PAUSED&&this.safeDispatchEvent("close")}).on("drop",()=>{this.metrics.events?.increment({[`${this.addr} drop`]:!0})})}onSocket(e){if(this.metrics.events?.increment({[`${this.addr} connection`]:!0}),this.status.code!==ue.ACTIVE)throw e.destroy(),new sn("Server is not listening yet");let t;try{t=ao({socket:e,inactivityTimeout:this.context.inactivityTimeout,metrics:this.metrics?.events,metricPrefix:`${this.addr} `,direction:"inbound",localAddr:this.status.listeningAddr,log:this.context.logger.forComponent("libp2p:tcp:connection")})}catch(n){this.log.error("inbound connection failed",n),this.metrics.errors?.increment({[`${this.addr} inbound_to_connection`]:!0}),e.destroy();return}this.log("new inbound connection %s",t.remoteAddr),this.sockets.add(e),this.context.upgrader.upgradeInbound(t,{signal:this.shutdownController.signal}).then(()=>{this.log("inbound connection upgraded %s",t.remoteAddr),e.once("close",()=>{this.sockets.delete(e),this.context.closeServerOnMaxConnections!=null&&this.sockets.size<this.context.closeServerOnMaxConnections.listenBelow&&this.resume().catch(n=>{this.log.error("error attempting to listen server once connection count under limit",n),this.context.closeServerOnMaxConnections?.onListenError?.(n)})}),this.context.closeServerOnMaxConnections!=null&&this.sockets.size>=this.context.closeServerOnMaxConnections.closeAbove&&(this.log("pausing incoming connections as limit is exceeded - %d/%d",this.sockets.size,this.context.closeServerOnMaxConnections.closeAbove),this.pause())}).catch(async n=>{this.log.error("inbound connection upgrade failed",n),this.metrics.errors?.increment({[`${this.addr} inbound_upgrade`]:!0}),this.sockets.delete(e),t.abort(n)})}getAddrs(){if(this.status.code===ue.INACTIVE)return[];let e=this.server.address();return e==null?[]:typeof e=="string"?[Ye(`/unix/${encodeURIComponent(e)}`)]:Yc(this.status.listeningAddr,e.port)}updateAnnounceAddrs(){}async listen(e){if(this.status.code===ue.ACTIVE||this.status.code===ue.PAUSED)throw new an("server is already listening");try{this.status={code:ue.ACTIVE,listeningAddr:e,netConfig:co(e,this.context)},await this.resume()}catch(t){throw this.status={code:ue.INACTIVE},t}}async close(e){let t=[];this.server.listening&&t.push(Pe(this.server,"close",e)),this.pause(!0),this.shutdownController.abort(),this.sockets.forEach(n=>{n.readable&&(t.push(Pe(n,"close",e)),n.destroy())}),await Promise.all(t)}async resume(){if(this.server.listening||this.status.code===ue.INACTIVE)return;let e=this.status.netConfig;await new Promise((t,n)=>{this.server.once("error",n),this.server.listen(e,t)}),this.status={...this.status,code:ue.ACTIVE},this.log("listening on %s",this.server.address())}pause(e=!1){if(!this.server.listening&&this.status.code===ue.PAUSED&&e){this.status={code:ue.INACTIVE};return}!this.server.listening||this.status.code!==ue.ACTIVE||(this.log("%s server on %s",e?"closing":"pausing",this.server.address()),this.status=e?{code:ue.INACTIVE}:{...this.status,code:ue.PAUSED},this.server.close())}};var lo=class{opts;metrics;components;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:tcp"),this.opts=t,this.components=e,e.metrics!=null&&(this.metrics={events:e.metrics.registerCounterGroup("libp2p_tcp_dialer_events_total",{label:"event",help:"Total count of TCP dialer events by type"}),errors:e.metrics.registerCounterGroup("libp2p_tcp_dialer_errors_total",{label:"event",help:"Total count of TCP dialer events by type"})})}[pa]=!0;[Symbol.toStringTag]="@libp2p/tcp";[ba]=["@libp2p/transport"];async dial(e,t){t.keepAlive=t.keepAlive??!0,t.noDelay=t.noDelay??!0,t.allowHalfOpen=t.allowHalfOpen??!1;let n=await this._connect(e,t),o;try{o=ao({socket:n,inactivityTimeout:this.opts.outboundSocketInactivityTimeout,metrics:this.metrics?.events,direction:"outbound",remoteAddr:e,log:this.log.newScope("connection")})}catch(s){throw this.metrics?.errors.increment({outbound_to_connection:!0}),n.destroy(s),s}try{return this.log("new outbound connection %s",o.remoteAddr),await t.upgrader.upgradeOutbound(o,t)}catch(s){throw this.metrics?.errors.increment({outbound_upgrade:!0}),this.log.error("error upgrading outbound connection",s),o.abort(s),s}}async _connect(e,t){t.signal.throwIfAborted(),t.onProgress?.(new Yn("tcp:open-connection"));let n;return new Promise((o,s)=>{let i=Date.now(),a=co(e,{...this.opts.dialOpts??{},...t});this.log("dialing %a with opts %o",e,a),n=iu.default.connect(a);let c=d=>{this.log.error("dial to %a errored - %e",e,d);let g=a.path??`${a.host??""}:${a.port}`;d.message=`connection error ${g}: ${d.message}`,this.metrics?.events.increment({error:!0}),p(d)},l=()=>{this.log("connection timeout %a",e),this.metrics?.events.increment({timeout:!0});let d=new Vt(`Connection timeout after ${Date.now()-i}ms`);n.emit("error",d)},u=()=>{this.log("connection opened %a",e),this.metrics?.events.increment({connect:!0}),p()},f=()=>{this.log("connection aborted %a",e),this.metrics?.events.increment({abort:!0}),p(new tn)},p=d=>{if(n.removeListener("error",c),n.removeListener("timeout",l),n.removeListener("connect",u),t.signal!=null&&t.signal.removeEventListener("abort",f),d!=null){s(d);return}o(n)};n.on("error",c),n.on("timeout",l),n.on("connect",u),t.signal.addEventListener("abort",f)}).catch(o=>{throw n?.destroy(),o})}createListener(e){return new uo({...this.opts.listenOpts??{},...e,maxConnections:this.opts.maxConnections,backlog:this.opts.backlog,closeServerOnMaxConnections:this.opts.closeServerOnMaxConnections,inactivityTimeout:this.opts.inboundSocketInactivityTimeout,metrics:this.components.metrics,logger:this.components.logger})}listenFilter(e){return e.filter(t=>Mc.exactMatch(t)||t.toString().startsWith("/unix/"))}dialFilter(e){return this.listenFilter(e)}};function au(r={}){return e=>new lo(e,r)}function Hd(r){return r[Symbol.asyncIterator]!=null}function Vd(r){if(Hd(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Li=Vd;function Ae(r){return te.encode({type:te.Type.OK,peers:[],...r}).subarray()}function Ee(r){return te.encode({type:te.Type.ERROR,error:{msg:r.message},peers:[]}).subarray()}var fo=at("libp2p:daemon-server:dht"),ho=class{dht;constructor(e){let{dht:t}=e;this.dht=t}async*provide(e){try{await Li(this.dht.provide(e)),yield Ae()}catch(t){fo.error(t),yield Ee(t)}}async*getClosestPeers(e){yield Ae({dht:{type:de.Type.BEGIN}});for await(let t of this.dht.getClosestPeers(e))t.name==="PEER_RESPONSE"&&(yield*t.closer.map(n=>de.encode({type:de.Type.VALUE,value:n.id.toMultihash().bytes})));yield de.encode({type:de.Type.END})}async*getPublicKey(e){yield Ee(new Error("FIX ME: not implemented"))}async*getValue(e){try{for await(let t of this.dht.get(e))t.name==="VALUE"&&(yield Ae({dht:{type:de.Type.VALUE,value:t.value}}))}catch(t){fo.error(t),yield Ee(t)}}async*putValue(e,t){try{await Li(this.dht.put(e,t)),yield Ae()}catch(n){fo.error(n),yield Ee(n)}}async*findPeer(e){try{for await(let t of this.dht.findPeer(e))t.name==="FINAL_PEER"&&(yield Ae({dht:{type:de.Type.VALUE,peer:{id:t.peer.id.toMultihash().bytes,addrs:t.peer.multiaddrs.map(n=>n.bytes)}}}));throw new Error("Peer not found")}catch(t){fo.error(t),yield Ee(t)}}async*findProviders(e,t){yield Ae({dht:{type:de.Type.BEGIN}});try{let n=t,o=0;for await(let s of this.dht.findProviders(e))if(s.name==="PEER_RESPONSE"){for(let i of s.providers)o++,yield de.encode({type:de.Type.VALUE,peer:{id:i.id.toMultihash().bytes,addrs:(i.multiaddrs??[]).map(a=>a.bytes)}});if(n===o)break}}catch(n){yield Ee(n)}yield de.encode({type:de.Type.END})}};var po=at("libp2p:daemon-server:pubsub"),mo=class{pubsub;constructor(e){let{pubsub:t}=e;this.pubsub=t}async*getTopics(){try{yield Ae({pubsub:{topics:this.pubsub.getTopics(),peerIDs:[]}})}catch(e){po.error(e),yield Ee(e)}}async*subscribe(e){try{let t=ft();this.pubsub.subscribe(e),this.pubsub.addEventListener("message",n=>{let o=n.detail;o.topic===e&&(o.type==="signed"?t.push(lr.encode({from:o.from.toMultihash().bytes,data:o.data,seqno:o.sequenceNumber==null?void 0:ye(o.sequenceNumber.toString(16).padStart(16,"0"),"base16"),topicIDs:[o.topic],signature:o.signature,key:ct(o.key)}).subarray()):t.push(lr.encode({data:o.data,topicIDs:[o.topic]}).subarray()))}),yield Ae(),yield*t}catch(t){po.error(t),yield Ee(t)}}async*publish(e,t){try{await this.pubsub.publish(e,t),yield Ae()}catch(n){po.error(n),yield Ee(n)}}async*listPeers(e){try{yield Ae({pubsub:{topics:[e],peerIDs:this.pubsub.getSubscribers(e).map(t=>t.toMultihash().bytes)}})}catch(t){po.error(t),yield Ee(t)}}};var cu=1<<22,ve=at("libp2p:daemon-server"),bo=class{multiaddr;libp2p;tcp;listener;dhtOperations;pubsubOperations;constructor(e){let{multiaddr:t,libp2pNode:n}=e;this.multiaddr=t,this.libp2p=n,this.tcp=au()({logger:da()}),this.listener=this.tcp.createListener({upgrader:new fr(this.handleConnection.bind(this))}),this._onExit=this._onExit.bind(this),n.services.dht!=null&&(this.dhtOperations=new ho({dht:n.services.dht})),n.services.pubsub!=null&&(this.pubsubOperations=new mo({pubsub:n.services.pubsub}))}async connect(e){if(e.connect?.addrs==null)throw new Error("Invalid request");let t=e.connect.peer,n=e.connect.addrs.map(s=>Ye(s)),o=Xt(Xe(t));return ve("connect - adding multiaddrs %a to peer %p",n,o),await this.libp2p.peerStore.merge(o,{multiaddrs:n}),ve("connect - dial %p",o),this.libp2p.dial(o)}async openStream(e){if(e.streamOpen?.proto==null)throw new Error("Invalid request");let{peer:t,proto:n}=e.streamOpen,o=Xt(Xe(t));ve("openStream - dial %p",o);let s=await this.libp2p.dial(o);ve("openStream - open stream for protocol(s) %s",n);let i=await s.newStream(n,{runOnLimitedConnection:!0});return{streamInfo:{peer:o.toMultihash().bytes,addr:s.remoteAddr.bytes,proto:i.protocol??""},connection:i}}async registerStreamHandler(e){if(e.streamHandler?.proto==null)throw new Error("Invalid request");let t=e.streamHandler.proto,n=Ye(e.streamHandler.addr),o;ve("registerStreamHandler - handle %s at %a",t,n),await this.libp2p.handle(t,async(s,i)=>{try{ve("open stream for protocol %o to %a",t,n);let a=AbortSignal.timeout(1e4);o=await this.tcp.dial(n,{upgrader:new fr,signal:a});let c=Kt.encode({peer:i.remotePeer.toMultihash().bytes,addr:i.remoteAddr.bytes,proto:s.protocol??""}),l=io.single(c);o.send(l)||await Pe(o,"drain",{rejectionEvents:["close"],signal:a}),await vi(s,o,s)}catch(a){ve.error(a),o?.abort(a)}finally{try{await o?.close()}catch(a){o?.abort(a)}}},{runOnLimitedConnection:!0})}_listen(){process.on("SIGTERM",this._onExit),process.on("SIGINT",this._onExit),process.on("SIGHUP",this._onExit)}_onExit(){this.stop({exit:!0}).catch(e=>{ve.error(e)})}async start(){this._listen(),await this.libp2p.start(),await this.listener.listen(this.multiaddr)}getMultiaddr(){let e=this.listener.getAddrs();if(e.length>0)return e[0];throw new Error("Not started")}async stop(e={exit:!1}){await this.libp2p.stop(),await this.listener.close(),e.exit&&ve("server closed, exiting"),process.removeListener("SIGTERM",this._onExit),process.removeListener("SIGINT",this._onExit),process.removeListener("SIGHUP",this._onExit)}async*handlePeerStoreRequest(e){try{switch(e.type){case gt.Type.GET_PROTOCOLS:if(e.id==null)throw new Error("Invalid request");let t=Xt(Xe(e.id)),o=(await this.libp2p.peerStore.get(t)).protocols;yield Ae({peerStore:{protos:o}});return;case gt.Type.GET_PEER_INFO:throw new Error("ERR_NOT_IMPLEMENTED");default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error(t),yield Ee(t)}}async*handlePubsubRequest(e){try{if(this.libp2p.services.pubsub==null||this.pubsubOperations==null)throw new Error("PubSub not configured");switch(e.type){case Qe.Type.GET_TOPICS:yield*this.pubsubOperations.getTopics();return;case Qe.Type.SUBSCRIBE:if(e.topic==null)throw new Error("Invalid request");yield*this.pubsubOperations.subscribe(e.topic);return;case Qe.Type.PUBLISH:if(e.topic==null||e.data==null)throw new Error("Invalid request");yield*this.pubsubOperations.publish(e.topic,e.data);return;case Qe.Type.LIST_PEERS:if(e.topic==null)throw new Error("Invalid request");yield*this.pubsubOperations.listPeers(e.topic);return;default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error(t),yield Ee(t)}}async*handleDHTRequest(e){try{if(this.libp2p.services.dht==null||this.dhtOperations==null)throw new Error("DHT not configured");switch(e.type){case ke.Type.FIND_PEER:if(e.peer==null)throw new Error("Invalid request");yield*this.dhtOperations.findPeer(Xt(Xe(e.peer)));return;case ke.Type.FIND_PROVIDERS:if(e.cid==null)throw new Error("Invalid request");yield*this.dhtOperations.findProviders(se.decode(e.cid),e.count??20);return;case ke.Type.PROVIDE:if(e.cid==null)throw new Error("Invalid request");yield*this.dhtOperations.provide(se.decode(e.cid));return;case ke.Type.GET_CLOSEST_PEERS:if(e.key==null)throw new Error("Invalid request");yield*this.dhtOperations.getClosestPeers(e.key);return;case ke.Type.GET_PUBLIC_KEY:if(e.peer==null)throw new Error("Invalid request");yield*this.dhtOperations.getPublicKey(Xt(Xe(e.peer)));return;case ke.Type.GET_VALUE:if(e.key==null)throw new Error("Invalid request");yield*this.dhtOperations.getValue(e.key);return;case ke.Type.PUT_VALUE:if(e.key==null||e.value==null)throw new Error("Invalid request");yield*this.dhtOperations.putValue(e.key,e.value);return;default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error(t),yield Ee(t)}}handleConnection(e){Promise.resolve().then(async()=>{let t=this,n=wi(e,{maxDataLength:cu}),o=await n.read(Ne);ve("read",o);try{switch(o.type){case Ne.Type.CONNECT:{await t.connect(o),await n.write({type:te.Type.OK},te);break}case Ne.Type.IDENTIFY:{await n.write({type:te.Type.OK,identify:{id:t.libp2p.peerId.toMultihash().bytes,addrs:t.libp2p.getMultiaddrs().map(s=>s.decapsulateCode(421)).map(s=>s.bytes)}},te);break}case Ne.Type.LIST_PEERS:{let s=[],i=new Set;for(let a of t.libp2p.getConnections()){let c=a.remotePeer.toString();i.has(c)||(i.add(c),s.push({id:a.remotePeer.toMultihash().bytes,addrs:[a.remoteAddr.bytes]}))}await n.write({type:te.Type.OK,peers:s},te);break}case Ne.Type.STREAM_OPEN:{let s=await t.openStream(o);await n.write({type:te.Type.OK,streamInfo:s.streamInfo},te);let i=n.unwrap();await vi(i,s.connection,i);break}case Ne.Type.STREAM_HANDLER:{await t.registerStreamHandler(o),await n.write({type:te.Type.OK},te);break}case Ne.Type.PEERSTORE:{if(o.peerStore==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handlePeerStoreRequest(o.peerStore))await i.write(a);break}case Ne.Type.PUBSUB:{if(o.pubsub==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handlePubsubRequest(o.pubsub))await i.write(a);break}case Ne.Type.DHT:{if(o.dht==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handleDHTRequest(o.dht))await i.write(a);break}default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(s){ve.error(s);let i=n.unwrap();if(i.status!=="open")return;n=wi(i,{maxDataLength:cu}),await n.write({type:te.Type.ERROR,error:{msg:s.message},peers:[]},te)}finally{await n.unwrap().close()}}).catch(t=>{ve.error("error handling incoming connection",t)})}},$d=(r,e)=>new bo({multiaddr:r,libp2pNode:e});return pu(Gd);})();
7
+ ${t}`:t??e??r.toString()};function Xl(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function da(){return{forComponent(r){return at(r)}}}function at(r){let e=Xl(`${r}:trace`);return Ie.enabled(`${r}:trace`)&&Ie.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Ie(`${r}:trace`)),Object.assign(Ie(r),{error:Ie(`${r}:error`),trace:e,newScope:t=>at(`${r}:${t}`)})}function fa(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var tn=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Y=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},rn=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var nn=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var Et=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},dr=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}};var on=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Vt=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},sn=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}},an=class extends Error{static name="AlreadyStartedError";constructor(e="Already started"){super(e),this.name="AlreadyStartedError"}};var hr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var cn=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},$t=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},un=class extends $t{constructor(e,t){super(!0,e,t)}},ln=class extends $t{constructor(e,t){super(!1,e,t)}};var as=Symbol.for("@libp2p/peer-id");var pa=Symbol.for("@libp2p/transport");var ha;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(ha||(ha={}));var ma=oe("node:events"),fn=(r,...e)=>{try{(0,ma.setMaxListeners)(r,...e)}catch{}};var Gt=class extends EventTarget{#e=new Map;constructor(){super(),fn(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var ba=Symbol.for("@libp2p/service-capabilities"),qp=Symbol.for("@libp2p/service-dependencies");function Ce(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var ya=oe("node:buffer");function We(r,e){return ht(ya.Buffer.concat(r,e))}var xa=Symbol.for("@achingbrain/uint8arraylist");function ga(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function dn(r){return!!r?.[xa]}var H=class r{bufs;length;[xa]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(dn(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(dn(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=ga(this.bufs,e);return t.buf[t.index]}set(e,t){let n=ga(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(dn(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return We(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:We(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===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,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let f=e-a;n.push(i.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!dn(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;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=t;f<=c;f+=u){u=0;for(let p=l;p>=0;p--){let d=this.get(f+p);if(n[p]!==d){u=Math.max(1,p-a[d]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Ce(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var Ea=oe("node:buffer");function re(r,e="utf8"){let t=Mr[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return e==="utf8"||e==="utf-8"?Ea.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var Ql=parseInt("11111",2),cs=parseInt("10000000",2),jl=parseInt("01111111",2),wa={0:pr,1:pr,2:Jl,3:rf,4:nf,5:tf,6:ef,16:pr,22:pr,48:pr};function us(r,e={offset:0}){let t=r[e.offset]&Ql;if(e.offset++,wa[t]!=null)return wa[t](r,e);throw new Error("No decoder for tag "+t)}function mr(r,e){let t=0;if((r[e.offset]&cs)===cs){let n=r[e.offset]&jl,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function pr(r,e){mr(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=us(r,e);if(n===null)break;t.push(n)}return t}function Jl(r,e){let t=mr(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function ef(r,e){let t=mr(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function tf(r,e){return e.offset++,null}function rf(r,e){let t=mr(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function nf(r,e){let t=mr(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function of(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new H;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function ls(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=of(r.byteLength);return new H(Uint8Array.from([e.byteLength|cs]),e)}function va(r){let e=new H,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new H(Uint8Array.from([2]),ls(e),e)}function Sa(r){let e=Uint8Array.from([0]),t=new H(e,r);return new H(Uint8Array.from([3]),ls(t),t)}function hn(r,e=48){let t=new H;for(let n of r)t.append(n);return new H(Uint8Array.from([e]),ls(t),t)}async function Ia(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var sf=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),af=Uint8Array.from([6,5,43,129,4,0,34]),cf=Uint8Array.from([6,5,43,129,4,0,35]),uf={ext:!0,kty:"EC",crv:"P-256"},lf={ext:!0,kty:"EC",crv:"P-384"},ff={ext:!0,kty:"EC",crv:"P-521"},fs=32,ds=48,hs=66;function Aa(r){let e=us(r);return La(e)}function La(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===fs*2+1)return n=re(e.subarray(t,t+fs),"base64url"),o=re(e.subarray(t+fs),"base64url"),new Ft({...uf,key_ops:["verify"],x:n,y:o});if(e.byteLength===ds*2+1)return n=re(e.subarray(t,t+ds),"base64url"),o=re(e.subarray(t+ds),"base64url"),new Ft({...lf,key_ops:["verify"],x:n,y:o});if(e.byteLength===hs*2+1)return n=re(e.subarray(t,t+hs),"base64url"),o=re(e.subarray(t+hs),"base64url"),new Ft({...ff,key_ops:["verify"],x:n,y:o});throw new Y(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Ta(r){return hn([va(Uint8Array.from([1])),hn([df(r.crv)],160),hn([Sa(new H(Uint8Array.from([4]),ye(r.x??"","base64url"),ye(r.y??"","base64url")))],161)]).subarray()}function df(r){if(r==="P-256")return sf;if(r==="P-384")return af;if(r==="P-521")return cf;throw new Y(`Invalid curve ${r}`)}var Ft=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Ta(this.jwk)),this._raw}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}async verify(e,t,n){return Ia(this.jwk,t,e,n)}};var pn=Te(oe("crypto"),1);var Jm=pn.default.generateKeyPairSync,br=32;var hf=64;function Da(r,e,t){if(r.byteLength!==br)throw new TypeError('"key" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"key" must be a node.js Buffer, or Uint8Array.');if(e.byteLength!==hf)throw new TypeError('"sig" must be 64 bytes in length.');if(!(e instanceof Uint8Array))throw new TypeError('"sig" must be a node.js Buffer, or Uint8Array.');let n=pn.default.createPublicKey({format:"jwk",key:{crv:"Ed25519",x:re(r,"base64url"),kty:"OKP"}});return pn.default.verify(null,t instanceof Uint8Array?t:t.subarray(),n,e)}function _a(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var mn=class{type="Ed25519";raw;constructor(e){this.raw=ps(e,br)}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=Da(this.raw,t,e);return _a(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}};function Ba(r){return r=ps(r,br),new mn(r)}function ps(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new Y(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var _e;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(_e||(_e={}));var ms;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(ms||(ms={}));(function(r){r.codec=()=>He(ms)})(_e||(_e={}));var yr;(function(r){let e;r.codec=()=>(e==null&&(e=q((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_e.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=_e.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>W(t,r.codec()),r.decode=(t,n)=>z(t,r.codec(),n)})(yr||(yr={}));var bs;(function(r){let e;r.codec=()=>(e==null&&(e=q((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_e.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=_e.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>W(t,r.codec()),r.decode=(t,n)=>z(t,r.codec(),n)})(bs||(bs={}));function gr(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function qe(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function K(r,e,t=""){let n=gr(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function bn(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");qe(r.outputLen),qe(r.blockLen)}function zt(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Pa(r,e){K(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function wt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function yn(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ve(r,e){return r<<32-e|r>>>e}var Ra=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",bf=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function vt(r){if(K(r),Ra)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=bf[r[t]];return e}var je={_0:48,_9:57,A:65,F:70,a:97,f:102};function Oa(r){if(r>=je._0&&r<=je._9)return r-je._0;if(r>=je.A&&r<=je.F)return r-(je.A-10);if(r>=je.a&&r<=je.f)return r-(je.a-10)}function St(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(Ra)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=Oa(r.charCodeAt(s)),a=Oa(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 $e(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];K(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function Na(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function gn(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var ka=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Ua(r,e,t){return r&e^~r&t}function Ma(r,e,t){return r&e^r&t^e&t}var xn=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=yn(this.buffer)}update(e){zt(this),K(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=yn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){zt(this),Pa(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,wt(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=yn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must 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:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Je=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var yf=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ut=new Uint32Array(64),ys=class extends xn{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|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(e,t){for(let f=0;f<16;f++,t+=4)ut[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let p=ut[f-15],d=ut[f-2],g=Ve(p,7)^Ve(p,18)^p>>>3,x=Ve(d,17)^Ve(d,19)^d>>>10;ut[f]=x+ut[f-7]+g+ut[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 p=Ve(a,6)^Ve(a,11)^Ve(a,25),d=u+p+Ua(a,c,l)+yf[f]+ut[f]|0,x=(Ve(n,2)^Ve(n,13)^Ve(n,22))+Ma(n,o,s)|0;u=l,l=c,c=a,a=i+d|0,i=s,s=o,o=n,n=d+x|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(){wt(ut)}destroy(){this.set(0,0,0,0,0,0,0,0),wt(this.buffer)}},gs=class extends ys{A=Je[0]|0;B=Je[1]|0;C=Je[2]|0;D=Je[3]|0;E=Je[4]|0;F=Je[5]|0;G=Je[6]|0;H=Je[7]|0;constructor(){super(32)}};var Ka=Na(()=>new gs,ka(1));var mc=Te(oe("node:crypto"),1);var Es=BigInt(0),xs=BigInt(1);function xr(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Ha(r){if(typeof r=="bigint"){if(!En(r))throw new Error("positive bigint expected, got "+r)}else qe(r);return r}function Er(r){let e=Ha(r).toString(16);return e.length&1?"0"+e:e}function Va(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Es:BigInt("0x"+r)}function Wt(r){return Va(vt(r))}function ws(r){return Va(vt(gf(K(r)).reverse()))}function wn(r,e){qe(e),r=Ha(r);let t=St(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function vs(r,e){return wn(r,e).reverse()}function gf(r){return Uint8Array.from(r)}var En=r=>typeof r=="bigint"&&Es<=r;function xf(r,e,t){return En(r)&&En(e)&&En(t)&&e<=r&&r<t}function $a(r,e,t,n){if(!xf(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Ss(r){let e;for(e=0;r>Es;r>>=xs,e+=1);return e}var wr=r=>(xs<<BigInt(r))-xs;function Ga(r,e,t){if(qe(r,"hashLen"),qe(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=m=>new Uint8Array(m),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,f=()=>{c.fill(1),l.fill(0),u=0},p=(...m)=>t(l,$e(c,...m)),d=(m=o)=>{l=p(s,m),c=p(),m.length!==0&&(l=p(i,m),c=p())},g=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let m=0,v=[];for(;m<e;){c=p();let O=c.slice();v.push(O),m+=c.length}return $e(...v)};return(m,v)=>{f(),d(m);let O;for(;!(O=v(g()));)d();return f(),O}}function vr(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Is(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var we=BigInt(0),ge=BigInt(1),It=BigInt(2),Wa=BigInt(3),qa=BigInt(4),Ya=BigInt(5),Ef=BigInt(7),Za=BigInt(8),wf=BigInt(9),Xa=BigInt(16);function Ge(r,e){let t=r%e;return t>=we?t:e+t}function Be(r,e,t){let n=r;for(;e-- >we;)n*=n,n%=t;return n}function Fa(r,e){if(r===we)throw new Error("invert: expected non-zero number");if(e<=we)throw new Error("invert: expected positive modulus, got "+e);let t=Ge(r,e),n=e,o=we,s=ge,i=ge,a=we;for(;t!==we;){let l=n/t,u=n%t,f=o-i*l,p=s-a*l;n=t,t=u,o=i,s=a,i=f,a=p}if(n!==ge)throw new Error("invert: does not exist");return Ge(o,e)}function Ls(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function Qa(r,e){let t=(r.ORDER+ge)/qa,n=r.pow(e,t);return Ls(r,n,e),n}function vf(r,e){let t=(r.ORDER-Ya)/Za,n=r.mul(e,It),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,It),o),a=r.mul(s,r.sub(i,r.ONE));return Ls(r,a,e),a}function Sf(r){let e=qt(r),t=ja(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+Ef)/Xa;return(a,c)=>{let l=a.pow(c,i),u=a.mul(l,n),f=a.mul(l,o),p=a.mul(l,s),d=a.eql(a.sqr(u),c),g=a.eql(a.sqr(f),c);l=a.cmov(l,u,d),u=a.cmov(p,f,g);let x=a.eql(a.sqr(u),c),m=a.cmov(l,u,x);return Ls(a,m,c),m}}function ja(r){if(r<Wa)throw new Error("sqrt is not defined for small field");let e=r-ge,t=0;for(;e%It===we;)e/=It,t++;let n=It,o=qt(r);for(;za(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return Qa;let s=o.pow(n,e),i=(e+ge)/It;return function(c,l){if(c.is0(l))return l;if(za(c,l)!==1)throw new Error("Cannot find square root");let u=t,f=c.mul(c.ONE,s),p=c.pow(l,e),d=c.pow(l,i);for(;!c.eql(p,c.ONE);){if(c.is0(p))return c.ZERO;let g=1,x=c.sqr(p);for(;!c.eql(x,c.ONE);)if(g++,x=c.sqr(x),g===u)throw new Error("Cannot find square root");let m=ge<<BigInt(u-g-1),v=c.pow(f,m);u=g,f=c.sqr(v),p=c.mul(p,f),d=c.mul(d,v)}return d}}function If(r){return r%qa===Wa?Qa:r%Za===Ya?vf:r%Xa===wf?Sf(r):ja(r)}var Af=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ts(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=Af.reduce((n,o)=>(n[o]="function",n),e);return vr(r,t),r}function Lf(r,e,t){if(t<we)throw new Error("invalid exponent, negatives unsupported");if(t===we)return r.ONE;if(t===ge)return e;let n=r.ONE,o=e;for(;t>we;)t&ge&&(n=r.mul(n,o)),o=r.sqr(o),t>>=ge;return n}function vn(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function za(r,e){let t=(r.ORDER-ge)/It,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Tf(r,e){e!==void 0&&qe(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var As=class{ORDER;BITS;BYTES;isLE;ZERO=we;ONE=ge;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=we)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=Tf(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return Ge(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return we<=e&&e<this.ORDER}is0(e){return e===we}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ge)===ge}neg(e){return Ge(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Ge(e*e,this.ORDER)}add(e,t){return Ge(e+t,this.ORDER)}sub(e,t){return Ge(e-t,this.ORDER)}mul(e,t){return Ge(e*t,this.ORDER)}pow(e,t){return Lf(this,e,t)}div(e,t){return Ge(e*Fa(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return Fa(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=If(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?vs(e,this.BYTES):wn(e,this.BYTES)}fromBytes(e,t=!1){K(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?ws(e):Wt(e);if(a&&(c=Ge(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return vn(this,e)}cmov(e,t,n){return n?t:e}};function qt(r,e={}){return new As(r,e)}function Ja(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Ds(r){let e=Ja(r);return e+Math.ceil(e/2)}function Cs(r,e,t=!1){K(r);let n=r.length,o=Ja(e),s=Ds(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?ws(r):Wt(r),a=Ge(i,e-ge)+ge;return t?vs(a,o):wn(a,o)}var Yt=BigInt(0),At=BigInt(1);function Sr(r,e){let t=e.negate();return r?t:e}function Ps(r,e){let t=vn(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function nc(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function _s(r,e){nc(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=wr(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function ec(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=At);let l=e*n,u=l+Math.abs(a)-1,f=a===0,p=a<0,d=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:p,isNegF:d,offsetF:l}}var Bs=new WeakMap,oc=new WeakMap;function Os(r){return oc.get(r)||1}function tc(r){if(r!==Yt)throw new Error("invalid wNAF")}var Sn=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>Yt;)t&At&&(n=n.add(o)),o=o.double(),t>>=At;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=_s(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=_s(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:p,offsetF:d}=ec(n,a,i);n=c,u?s=s.add(Sr(p,t[d])):o=o.add(Sr(f,t[l]))}return tc(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=_s(e,this.bits);for(let i=0;i<s.windows&&n!==Yt;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=ec(n,i,s);if(n=a,!l){let f=t[c];o=o.add(u?f.negate():f)}}return tc(n),o}getPrecomputes(e,t,n){let o=Bs.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Bs.set(t,o))),o}cached(e,t,n){let o=Os(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Os(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){nc(t,this.bits),oc.set(e,t),Bs.delete(e)}hasCache(e){return Os(e)!==1}};function sc(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>Yt||n>Yt;)t&At&&(s=s.add(o)),n&At&&(i=i.add(o)),o=o.double(),t>>=At,n>>=At;return{p1:s,p2:i}}function rc(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ts(e),e}else return qt(r,{isLE:t})}function ic(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Yt))throw new Error(`CURVE.${c} must be positive bigint`)}let o=rc(e.p,t.Fp,n),s=rc(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ac(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var In=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(bn(e),K(t,void 0,"key"),this.iHash=e.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 n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),wt(o)}update(e){return zt(this),this.iHash.update(e),this}digestInto(e){zt(this),K(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Rs=(r,e,t)=>new In(r,e).update(t).digest();Rs.create=(r,e)=>new In(r,e);var cc=(r,e)=>(r+(r>=0?e:-e)/uc)/e;function Df(r,e,t){let[[n,o],[s,i]]=e,a=cc(i*r,t),c=cc(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,f=l<et,p=u<et;f&&(l=-l),p&&(u=-u);let d=wr(Math.ceil(Ss(t)/2))+Zt;if(l<et||l>=d||u<et||u>=d)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:p,k2:u}}function ks(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function Ns(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return xr(t.lowS,"lowS"),xr(t.prehash,"prehash"),t.format!==void 0&&ks(t.format),t}var Us=class extends Error{constructor(e=""){super(e)}},lt={Err:Us,_tlv:{encode:(r,e)=>{let{Err:t}=lt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Er(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Er(o.length/2|128):"";return Er(r)+s+o+e},decode(r,e){let{Err:t}=lt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=lt;if(r<et)throw new e("integer: negative integers are not allowed");let t=Er(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=lt;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Wt(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=lt,o=K(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("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 e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=lt,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},et=BigInt(0),Zt=BigInt(1),uc=BigInt(2),An=BigInt(3),Cf=BigInt(4);function lc(r,e={}){let t=ic("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;vr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=dc(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(U,y,b){let{x:h,y:E}=y.toAffine(),S=n.toBytes(h);if(xr(b,"isCompressed"),b){u();let L=!n.isOdd(E);return $e(fc(L),S)}else return $e(Uint8Array.of(4),S,n.toBytes(E))}function p(U){K(U,void 0,"Point");let{publicKey:y,publicKeyUncompressed:b}=l,h=U.length,E=U[0],S=U.subarray(1);if(h===y&&(E===2||E===3)){let L=n.fromBytes(S);if(!n.isValid(L))throw new Error("bad point: is not on curve, wrong x");let A=x(L),w;try{w=n.sqrt(A)}catch(ne){let G=ne instanceof Error?": "+ne.message:"";throw new Error("bad point: is not on curve, sqrt error"+G)}u();let T=n.isOdd(w);return(E&1)===1!==T&&(w=n.neg(w)),{x:L,y:w}}else if(h===b&&E===4){let L=n.BYTES,A=n.fromBytes(S.subarray(0,L)),w=n.fromBytes(S.subarray(L,L*2));if(!m(A,w))throw new Error("bad point: is not on curve");return{x:A,y:w}}else throw new Error(`bad point: got length ${h}, expected compressed=${y} or uncompressed=${b}`)}let d=e.toBytes||f,g=e.fromBytes||p;function x(U){let y=n.sqr(U),b=n.mul(y,U);return n.add(n.add(b,n.mul(U,s.a)),s.b)}function m(U,y){let b=n.sqr(y),h=x(U);return n.eql(b,h)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let v=n.mul(n.pow(s.a,An),Cf),O=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(v,O)))throw new Error("bad curve params: a or b");function M(U,y,b=!1){if(!n.isValid(y)||b&&n.is0(y))throw new Error(`bad point coordinate ${U}`);return y}function B(U){if(!(U instanceof C))throw new Error("Weierstrass Point expected")}function j(U){if(!c||!c.basises)throw new Error("no endo");return Df(U,c.basises,o.ORDER)}let J=Is((U,y)=>{let{X:b,Y:h,Z:E}=U;if(n.eql(E,n.ONE))return{x:b,y:h};let S=U.is0();y==null&&(y=S?n.ONE:n.inv(E));let L=n.mul(b,y),A=n.mul(h,y),w=n.mul(E,y);if(S)return{x:n.ZERO,y:n.ZERO};if(!n.eql(w,n.ONE))throw new Error("invZ was invalid");return{x:L,y:A}}),le=Is(U=>{if(U.is0()){if(e.allowInfinityPoint&&!n.is0(U.Y))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=U.toAffine();if(!n.isValid(y)||!n.isValid(b))throw new Error("bad point: x or y not field elements");if(!m(y,b))throw new Error("bad point: equation left != right");if(!U.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function ie(U,y,b,h,E){return b=new C(n.mul(b.X,U),b.Y,b.Z),y=Sr(h,y),b=Sr(E,b),y.add(b)}class C{static BASE=new C(s.Gx,s.Gy,n.ONE);static ZERO=new C(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(y,b,h){this.X=M("x",y),this.Y=M("y",b,!0),this.Z=M("z",h),Object.freeze(this)}static CURVE(){return s}static fromAffine(y){let{x:b,y:h}=y||{};if(!y||!n.isValid(b)||!n.isValid(h))throw new Error("invalid affine point");if(y instanceof C)throw new Error("projective point not allowed");return n.is0(b)&&n.is0(h)?C.ZERO:new C(b,h,n.ONE)}static fromBytes(y){let b=C.fromAffine(g(K(y,void 0,"point")));return b.assertValidity(),b}static fromHex(y){return C.fromBytes(St(y))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,b=!0){return dt.createCache(this,y),b||this.multiply(An),this}assertValidity(){le(this)}hasEvenY(){let{y}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(y)}equals(y){B(y);let{X:b,Y:h,Z:E}=this,{X:S,Y:L,Z:A}=y,w=n.eql(n.mul(b,A),n.mul(S,E)),T=n.eql(n.mul(h,A),n.mul(L,E));return w&&T}negate(){return new C(this.X,n.neg(this.Y),this.Z)}double(){let{a:y,b}=s,h=n.mul(b,An),{X:E,Y:S,Z:L}=this,A=n.ZERO,w=n.ZERO,T=n.ZERO,D=n.mul(E,E),ne=n.mul(S,S),G=n.mul(L,L),P=n.mul(E,S);return P=n.add(P,P),T=n.mul(E,L),T=n.add(T,T),A=n.mul(y,T),w=n.mul(h,G),w=n.add(A,w),A=n.sub(ne,w),w=n.add(ne,w),w=n.mul(A,w),A=n.mul(P,A),T=n.mul(h,T),G=n.mul(y,G),P=n.sub(D,G),P=n.mul(y,P),P=n.add(P,T),T=n.add(D,D),D=n.add(T,D),D=n.add(D,G),D=n.mul(D,P),w=n.add(w,D),G=n.mul(S,L),G=n.add(G,G),D=n.mul(G,P),A=n.sub(A,D),T=n.mul(G,ne),T=n.add(T,T),T=n.add(T,T),new C(A,w,T)}add(y){B(y);let{X:b,Y:h,Z:E}=this,{X:S,Y:L,Z:A}=y,w=n.ZERO,T=n.ZERO,D=n.ZERO,ne=s.a,G=n.mul(s.b,An),P=n.mul(b,S),Z=n.mul(h,L),fe=n.mul(E,A),Fe=n.add(b,h),X=n.add(S,L);Fe=n.mul(Fe,X),X=n.add(P,Z),Fe=n.sub(Fe,X),X=n.add(b,E);let pe=n.add(S,A);return X=n.mul(X,pe),pe=n.add(P,fe),X=n.sub(X,pe),pe=n.add(h,E),w=n.add(L,A),pe=n.mul(pe,w),w=n.add(Z,fe),pe=n.sub(pe,w),D=n.mul(ne,X),w=n.mul(G,fe),D=n.add(w,D),w=n.sub(Z,D),D=n.add(Z,D),T=n.mul(w,D),Z=n.add(P,P),Z=n.add(Z,P),fe=n.mul(ne,fe),X=n.mul(G,X),Z=n.add(Z,fe),fe=n.sub(P,fe),fe=n.mul(ne,fe),X=n.add(X,fe),P=n.mul(Z,X),T=n.add(T,P),P=n.mul(pe,X),w=n.mul(Fe,w),w=n.sub(w,P),P=n.mul(Fe,Z),D=n.mul(pe,D),D=n.add(D,P),new C(w,T,D)}subtract(y){return this.add(y.negate())}is0(){return this.equals(C.ZERO)}multiply(y){let{endo:b}=e;if(!o.isValidNot0(y))throw new Error("invalid scalar: out of range");let h,E,S=L=>dt.cached(this,L,A=>Ps(C,A));if(b){let{k1neg:L,k1:A,k2neg:w,k2:T}=j(y),{p:D,f:ne}=S(A),{p:G,f:P}=S(T);E=ne.add(P),h=ie(b.beta,D,G,L,w)}else{let{p:L,f:A}=S(y);h=L,E=A}return Ps(C,[h,E])[0]}multiplyUnsafe(y){let{endo:b}=e,h=this;if(!o.isValid(y))throw new Error("invalid scalar: out of range");if(y===et||h.is0())return C.ZERO;if(y===Zt)return h;if(dt.hasCache(this))return this.multiply(y);if(b){let{k1neg:E,k1:S,k2neg:L,k2:A}=j(y),{p1:w,p2:T}=sc(C,h,S,A);return ie(b.beta,w,T,E,L)}else return dt.unsafe(h,y)}toAffine(y){return J(this,y)}isTorsionFree(){let{isTorsionFree:y}=e;return i===Zt?!0:y?y(C,this):dt.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:y}=e;return i===Zt?this:y?y(C,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(y=!0){return xr(y,"isCompressed"),this.assertValidity(),d(C,this,y)}toHex(y=!0){return vt(this.toBytes(y))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let Br=o.BITS,dt=new Sn(C,e.endo?Math.ceil(Br/2):Br);return C.BASE.precompute(8),C}function fc(r){return Uint8Array.of(r?2:3)}function dc(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function _f(r,e={}){let{Fn:t}=r,n=e.randomBytes||gn,o=Object.assign(dc(r.Fp,t),{seed:Ds(t.ORDER)});function s(d){try{let g=t.fromBytes(d);return t.isValidNot0(g)}catch{return!1}}function i(d,g){let{publicKey:x,publicKeyUncompressed:m}=o;try{let v=d.length;return g===!0&&v!==x||g===!1&&v!==m?!1:!!r.fromBytes(d)}catch{return!1}}function a(d=n(o.seed)){return Cs(K(d,o.seed,"seed"),t.ORDER)}function c(d,g=!0){return r.BASE.multiply(t.fromBytes(d)).toBytes(g)}function l(d){let{secretKey:g,publicKey:x,publicKeyUncompressed:m}=o;if(!gr(d)||"_lengths"in t&&t._lengths||g===x)return;let v=K(d,void 0,"key").length;return v===x||v===m}function u(d,g,x=!0){if(l(d)===!0)throw new Error("first arg must be private key");if(l(g)===!1)throw new Error("second arg must be public key");let m=t.fromBytes(d);return r.fromBytes(g).multiply(m).toBytes(x)}let f={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},p=ac(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:p,Point:r,utils:f,lengths:o})}function hc(r,e,t={}){bn(e),vr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||gn,o=t.hmac||((b,h)=>Rs(e,b,h)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:p,lengths:d}=_f(r,t),g={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},x=a*uc<s.ORDER;function m(b){let h=a>>Zt;return b>h}function v(b,h){if(!i.isValidNot0(h))throw new Error(`invalid signature ${b}: out of range 1..Point.Fn.ORDER`);return h}function O(){if(x)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function M(b,h){ks(h);let E=d.signature,S=h==="compact"?E:h==="recovered"?E+1:void 0;return K(b,S)}class B{r;s;recovery;constructor(h,E,S){if(this.r=v("r",h),this.s=v("s",E),S!=null){if(O(),![0,1,2,3].includes(S))throw new Error("invalid recovery id");this.recovery=S}Object.freeze(this)}static fromBytes(h,E=g.format){M(h,E);let S;if(E==="der"){let{r:T,s:D}=lt.toSig(K(h));return new B(T,D)}E==="recovered"&&(S=h[0],E="compact",h=h.subarray(1));let L=d.signature/2,A=h.subarray(0,L),w=h.subarray(L,L*2);return new B(i.fromBytes(A),i.fromBytes(w),S)}static fromHex(h,E){return this.fromBytes(St(h),E)}assertRecovery(){let{recovery:h}=this;if(h==null)throw new Error("invalid recovery id: must be present");return h}addRecoveryBit(h){return new B(this.r,this.s,h)}recoverPublicKey(h){let{r:E,s:S}=this,L=this.assertRecovery(),A=L===2||L===3?E+a:E;if(!s.isValid(A))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let w=s.toBytes(A),T=r.fromBytes($e(fc((L&1)===0),w)),D=i.inv(A),ne=J(K(h,void 0,"msgHash")),G=i.create(-ne*D),P=i.create(S*D),Z=r.BASE.multiplyUnsafe(G).add(T.multiplyUnsafe(P));if(Z.is0())throw new Error("invalid recovery: point at infinify");return Z.assertValidity(),Z}hasHighS(){return m(this.s)}toBytes(h=g.format){if(ks(h),h==="der")return St(lt.hexFromSig(this));let{r:E,s:S}=this,L=i.toBytes(E),A=i.toBytes(S);return h==="recovered"?(O(),$e(Uint8Array.of(this.assertRecovery()),L,A)):$e(L,A)}toHex(h){return vt(this.toBytes(h))}}let j=t.bits2int||function(h){if(h.length>8192)throw new Error("input is too large");let E=Wt(h),S=h.length*8-c;return S>0?E>>BigInt(S):E},J=t.bits2int_modN||function(h){return i.create(j(h))},le=wr(c);function ie(b){return $a("num < 2^"+c,b,et,le),i.toBytes(b)}function C(b,h){return K(b,void 0,"message"),h?K(e(b),void 0,"prehashed message"):b}function Br(b,h,E){let{lowS:S,prehash:L,extraEntropy:A}=Ns(E,g);b=C(b,L);let w=J(b),T=i.fromBytes(h);if(!i.isValidNot0(T))throw new Error("invalid private key");let D=[ie(T),ie(w)];if(A!=null&&A!==!1){let Z=A===!0?n(d.secretKey):A;D.push(K(Z,void 0,"extraEntropy"))}let ne=$e(...D),G=w;function P(Z){let fe=j(Z);if(!i.isValidNot0(fe))return;let Fe=i.inv(fe),X=r.BASE.multiply(fe).toAffine(),pe=i.create(X.x);if(pe===et)return;let Or=i.create(Fe*i.create(G+pe*T));if(Or===et)return;let Ti=(X.x===pe?0:2)|Number(X.y&Zt),Di=Or;return S&&m(Or)&&(Di=i.neg(Or),Ti^=1),new B(pe,Di,x?void 0:Ti)}return{seed:ne,k2sig:P}}function dt(b,h,E={}){let{seed:S,k2sig:L}=Br(b,h,E);return Ga(e.outputLen,i.BYTES,o)(S,L).toBytes(E.format)}function U(b,h,E,S={}){let{lowS:L,prehash:A,format:w}=Ns(S,g);if(E=K(E,void 0,"publicKey"),h=C(h,A),!gr(b)){let T=b instanceof B?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+T)}M(b,w);try{let T=B.fromBytes(b,w),D=r.fromBytes(E);if(L&&T.hasHighS())return!1;let{r:ne,s:G}=T,P=J(h),Z=i.inv(G),fe=i.create(P*Z),Fe=i.create(ne*Z),X=r.BASE.multiplyUnsafe(fe).add(D.multiplyUnsafe(Fe));return X.is0()?!1:i.create(X.x)===ne}catch{return!1}}function y(b,h,E={}){let{prehash:S}=Ns(E,g);return h=C(h,S),B.fromBytes(b,"recovered").recoverPublicKey(h).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:p,lengths:d,Point:r,sign:dt,verify:U,recoverPublicKey:y,Signature:B,hash:e})}var Ks={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Bf={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var pc=BigInt(2);function Of(r){let e=Ks.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=Be(u,t,e)*u%e,p=Be(f,t,e)*u%e,d=Be(p,pc,e)*l%e,g=Be(d,o,e)*d%e,x=Be(g,s,e)*g%e,m=Be(x,a,e)*x%e,v=Be(m,c,e)*m%e,O=Be(v,a,e)*x%e,M=Be(O,t,e)*u%e,B=Be(M,i,e)*g%e,j=Be(B,n,e)*l%e,J=Be(j,pc,e);if(!Ms.eql(Ms.sqr(J),r))throw new Error("Cannot find square root");return J}var Ms=qt(Ks.p,{sqrt:Of}),Pf=lc(Ks,{Fp:Ms,endo:Bf}),Ir=hc(Pf,Ka);var Ln=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}};function bc(r,e,t,n){n?.signal?.throwIfAborted();let o=mc.default.createHash("sha256");if(t instanceof Uint8Array)o.update(t);else for(let i of t)o.update(i);let s=o.digest();try{return Ir.verify(e,s,r,{prehash:!1,format:"der"})}catch(i){throw new Ln(String(i))}}var Tn=class{type="secp256k1";raw;_key;constructor(e){this._key=gc(e),this.raw=yc(this._key)}toMultihash(){return Ke.digest(ct(this))}toCID(){return se.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Ce(this.raw,e.raw)}verify(e,t,n){return bc(this._key,t,e,n)}};function xc(r){return new Tn(r)}function yc(r){return Ir.Point.fromBytes(r).toBytes()}function gc(r){try{return Ir.Point.fromBytes(r),r}catch(e){throw new rn(String(e))}}function Ec(r){let{Type:e,Data:t}=yr.decode(r.digest),n=t??new Uint8Array;switch(e){case _e.Ed25519:return Ba(n);case _e.secp256k1:return xc(n);case _e.ECDSA:return Aa(n);default:throw new hr}}function ct(r){return yr.encode({Type:_e[r.type],Data:r.raw})}var wc=Symbol.for("nodejs.util.inspect.custom"),Rf=114,Ar=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[as]=!0;toString(){return this.string==null&&(this.string=ee.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return se.createV1(Rf,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Ce(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Ce(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[wc](){return`PeerId(${this.toString()})`}},Dn=class extends Ar{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Cn=class extends Ar{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},_n=class extends Ar{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Nf=2336,Bn=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Ke.digest(ye(this.url))}[wc](){return`PeerId(${this.url})`}[as]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return se.createV1(Nf,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=re(e)),e.toString()===this.toString())}};function Xt(r){if(Uf(r))return new Dn({multihash:r});if(kf(r))try{let e=Ec(r);if(e.type==="Ed25519")return new Cn({multihash:r,publicKey:e});if(e.type==="secp256k1")return new _n({multihash:r,publicKey:e})}catch{let t=re(r.digest);return new Bn(new URL(t))}throw new on("Supplied PeerID Multihash is invalid")}function kf(r){return r.code===Ke.code}function Uf(r){return r.code===Zo.code}var iu=Te(oe("net"),1);var he=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},tt=class extends Error{static name="ValidationError";name="ValidationError"},On=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},Pn=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};var Oe=oe("node:net");function Vs(r){return e=>re(e,r)}function $s(r){return e=>ye(e,r)}function Qt(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Lt(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function vc(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=ye(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Lt(n);return We([t,o],t.length+o.length)}function Sc(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=ze.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Lt(n);return We([t,o],t.length+o.length)}function Gs(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=re(e,"base32"),o=Qt(t);return`${n}:${o}`}var Fs=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new he("Invalid byte value in IP address");e[n]=o}),e},Ic=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=(0,Oe.isIPv4)(t[n]),i;s&&(i=Fs(t[n]),t[n]=re(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,re(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new he("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},Ac=function(r){if(r.byteLength!==4)throw new he("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},Lc=function(r){if(r.byteLength!==16)throw new he("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new he(`Invalid IPv6 address "${t}"`)}};function Tc(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new he(`Invalid IPv6 address "${r}"`)}}var Hs=Object.values(ar).map(r=>r.decoder),Mf=(function(){let r=Hs[0].or(Hs[1]);return Hs.slice(2).forEach(e=>r=r.or(e)),r})();function Dc(r){return Mf.decode(r)}function Cc(r){return e=>r.encoder.encode(e)}function Kf(r){if(parseInt(r).toString()!==r)throw new tt("Value must be an integer")}function Hf(r){if(r<0)throw new tt("Value must be a positive integer, or zero")}function Vf(r){return e=>{if(e>r)throw new tt(`Value must be smaller than or equal to ${r}`)}}function $f(...r){return e=>{for(let t of r)t(e)}}var Lr=$f(Kf,Hf,Vf(65535));var ce=-1,zs=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new Pn(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},rt=new zs,nd=[{code:4,name:"ip4",size:32,valueToBytes:Fs,bytesToValue:Ac,validate:r=>{if(!(0,Oe.isIPv4)(r))throw new tt(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:273,name:"udp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:33,name:"dccp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:41,name:"ip6",size:128,valueToBytes:Ic,bytesToValue:Lc,stringToValue:Tc,validate:r=>{if(!(0,Oe.isIPv6)(r))throw new tt(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:ce},{code:43,name:"ipcidr",size:8,bytesToValue:Vs("base10"),valueToBytes:$s("base10")},{code:53,name:"dns",size:ce},{code:54,name:"dns4",size:ce},{code:55,name:"dns6",size:ce},{code:56,name:"dnsaddr",size:ce},{code:132,name:"sctp",size:16,valueToBytes:Lt,bytesToValue:Qt,validate:Lr},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:ce,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:ce,bytesToValue:Vs("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?$s("base58btc")(r):se.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Gs,valueToBytes:vc},{code:445,name:"onion3",size:296,bytesToValue:Gs,valueToBytes:Sc},{code:446,name:"garlic64",size:ce},{code:447,name:"garlic32",size:ce},{code:448,name:"tls"},{code:449,name:"sni",size:ce},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:ce,bytesToValue:Cc(Ho),valueToBytes:Dc},{code:480,name:"http"},{code:481,name:"http-path",size:ce,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:ce}];nd.forEach(r=>{rt.addProtocol(r)});function _c(r){let e=[],t=0;for(;t<r.length;){let n=pt(r,t),o=rt.getProtocol(n),s=ae(n),i=od(o,r,t+s),a=0;i>0&&o.size===ce&&(a=ae(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let u=t+s+a,f=r.subarray(u,u+i);l.value=o.bytesToValue?.(f)??re(f)}e.push(l),t+=c}return e}function Bc(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=rt.getProtocol(n.code),s=ae(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??ye(n.value),a=i.byteLength,o.size===ce&&(c=ae(a)));let l=new Uint8Array(s+c+a),u=0;Ot(n.code,l,u),u+=s,i!=null&&(o.size===ce&&(Ot(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return We(t,e)}function Oc(r){if(r.charAt(0)!=="/")throw new he('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=rt.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new he(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new he(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new he("Incomplete multiaddr");return e}function Pc(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=rt.getProtocol(e.code);if(t==null)throw new he(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function od(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:pt(e,t)}var sd=Symbol.for("nodejs.util.inspect.custom"),oi=Symbol.for("@multiformats/multiaddr");function id(r){if(r==null&&(r="/"),Rc(r))return r.getComponents();if(r instanceof Uint8Array)return _c(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),Oc(r);if(Array.isArray(r))return r;throw new he("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Vn=class r{[oi]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=id(e),t.validate!==!1&&ad(this)}get bytes(){return this.#r==null&&(this.#r=Bc(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=Pc(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new On(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Ce(this.bytes,e.bytes)}[sd](){return`Multiaddr(${this.toString()})`}};function ad(r){r.getComponents().forEach(e=>{let t=rt.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function Rc(r){return!!r?.[oi]}function Ye(r){return new Vn(r)}var V=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),I=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),Nc=r=>({match:e=>r.match(e)===!1?e:!1}),_=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),xe=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),k=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function $(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var cd=I(421),Ry=$(cd),Gn=I(54),Fn=I(55),zn=I(56),ii=I(53),Ny=$(Gn,_(I(421))),ky=$(Fn,_(I(421))),Uy=$(zn,_(I(421))),My=$(xe(ii,zn,Gn,Fn),_(I(421))),kc=k(I(4),_(I(43))),Uc=k(_(I(42)),I(41),_(I(43))),ai=xe(kc,Uc),Ct=xe(ai,ii,Gn,Fn,zn),Ky=$(xe(ai,k(xe(ii,zn,Gn,Fn),_(I(421))))),Hy=$(kc),Vy=$(Uc),$y=$(ai),ci=k(Ct,I(6)),Dr=k(Ct,I(273)),Mc=$(k(ci,_(I(421)))),Gy=$(Dr),ui=k(Dr,V(460),_(I(421))),Wn=k(Dr,V(461),_(I(421))),ud=xe(ui,Wn),Fy=$(ui),zy=$(Wn),si=xe(Ct,ci,Dr,ui,Wn),Kc=xe(k(si,V(477),_(I(421)))),Wy=$(Kc),Hc=xe(k(si,V(478),_(I(421))),k(si,V(448),_(I(449)),V(477),_(I(421)))),qy=$(Hc),Vc=k(Dr,V(280),_(I(466)),_(I(466)),_(I(421))),Yy=$(Vc),$c=k(Wn,V(465),_(I(466)),_(I(466)),_(I(421))),Zy=$($c),$n=xe(Kc,Hc,k(ci,_(I(421))),k(ud,_(I(421))),k(Ct,_(I(421))),Vc,$c,I(421)),Xy=$($n),ld=k(_($n),V(290),Nc(V(281)),_(I(421))),Qy=$(ld),fd=xe(k($n,V(290),V(281),_(I(421))),k($n,V(281),_(I(421))),k(V(281),_(I(421)))),jy=$(fd),dd=xe(k(Ct,I(6),V(480),_(I(421))),k(Ct,V(480),_(I(421)))),Jy=$(dd),hd=k(Ct,xe(k(I(6,"443"),V(480)),k(I(6),V(443)),k(I(6),V(448),V(480)),k(V(448),V(480)),V(448),V(443)),_(I(421))),eg=$(hd),pd=xe(k(I(777),_(I(421)))),tg=$(pd),md=xe(k(I(400),_(I(421)))),qn=$(md);var Yn=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var su=Te(oe("node:net"),1);function Zn(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new Y(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}function nt(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Xn=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},tr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Xn(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Xn(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var li=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function ft(r={}){return bd(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function bd(r,e){e=e??{};let t=e.onEnd,n=new tr,o,s,i,a=nt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((m,v)=>{s=O=>{s=null,n.push(O);try{m(r(n))}catch(M){v(M)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=nt()})}},l=m=>s!=null?s(m):(n.push(m),o),u=m=>(n=new tr,s!=null?s({error:m}):(n.push({error:m}),o)),f=m=>{if(i)return o;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:m})},p=m=>i?o:(i=!0,m!=null?u(m):l({done:!0})),d=()=>(n=new tr,p(),{done:!0}),g=m=>(p(m),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:d,throw:g,push:f,end:p,get readableLength(){return n.size},onEmpty:async m=>{let v=m?.signal;if(v?.throwIfAborted(),n.isEmpty())return;let O,M;v!=null&&(O=new Promise((B,j)=>{M=()=>{j(new li)},v.addEventListener("abort",M)}));try{await Promise.race([a.promise,O])}finally{M!=null&&v!=null&&v?.removeEventListener("abort",M)}}},t==null)return o;let x=o;return o={[Symbol.asyncIterator](){return this},next(){return x.next()},throw(m){return x.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return x.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(m){return x.end(m),t!=null&&(t(m),t=void 0),o},get readableLength(){return x.readableLength},onEmpty:m=>x.onEmpty(m)},o}var fi=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},di=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Gc=r=>globalThis.DOMException===void 0?new di(r):new DOMException(r),Fc=r=>{let e=r.reason===void 0?Gc("This operation was aborted."):r.reason;return e instanceof Error?e:Gc(e)};function hi(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(Fc(d)),a=()=>{f(Fc(d))},d.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let p=new fi;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(p.message=o??`Promise timed out after ${t} milliseconds`,f(p))},t),(async()=>{try{u(await r)}catch(d){f(d)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var yd=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function gd(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=yd(r),f=async(...d)=>{let g=t.multiArgs?d:d[0];if(t.filter)try{if(!await t.filter(g))return}catch(x){n(),i(x);return}c.push(g),t.count===c.length&&(n(),s(c))},p=(...d)=>{n(),i(t.rejectionMultiArgs?d:d[0])};n=()=>{for(let d of a)u(d,f);for(let d of t.rejectionEvents)a.includes(d)||u(d,p)};for(let d of a)l(d,f);for(let d of t.rejectionEvents)a.includes(d)||l(d,p);t.signal&&t.signal.addEventListener("abort",()=>{p(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=hi(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Pe(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=gd(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var _t=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function xd(r){return r.reason}async function zc(r,e,t){if(e==null)return r;let n=t?.translateError??xd;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var Ed=Math.pow(2,20)*4,Qn=class extends Gt{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??Ed,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new H,this.writeBuffer=new H,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue())};this.addEventListener("drain",t)}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=ft(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Et(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new un(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Et(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new nn;this.dispatchEvent(new ln(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new $t))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new H(s);this.writeBuffer.consume(s.byteLength);let a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new cn(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new dr(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new dr(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var jn=class extends Qn{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await Pe(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await Pe(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};var qc=Te(oe("node:os"),1);function Wc(r){return!!(r.startsWith("169.254.")||r.toLowerCase().startsWith("fe80"))}function pi(r,e,t){let n=[r.type,t??r.host];if(r.protocol!=null){let o=e??r.port;o!=null&&n.push(r.protocol,o)}return r.type==="ip6"&&r.zone!=null&&n.unshift("ip6zone",r.zone),r.cidr!=null&&n.push("ipcidr",r.cidr),Ye(`/${n.join("/")}`)}var wd={4:"IPv4",6:"IPv6"};function vd(r){return["0.0.0.0","::"].includes(r)}function Sd(r){let e=[],t=qc.default.networkInterfaces();for(let[,n]of Object.entries(t))if(n!=null)for(let o of n)Wc(o.address)||o.family===wd[r]&&e.push(o.address);return e}function Yc(r,e){if(r==null)return[];let t=Zn(r);return(t.type==="ip4"||t.type==="ip6")&&vd(t.host)?Sd(t.type==="ip4"?4:6).map(n=>pi(t,e,n)):[pi(t,e)]}function Zc(r,e){if(typeof r!="string")throw new Y(`invalid ip provided: ${r}`);if(typeof e=="string"&&(e=parseInt(e)),isNaN(e))throw new Y(`invalid port provided: ${e}`);if((0,Oe.isIPv4)(r))return Ye(`/ip4/${r}/tcp/${e}`);if((0,Oe.isIPv6)(r))return Ye(`/ip6/${r}/tcp/${e}`);throw new Y(`invalid ip:port for creating a multiaddr: ${r}:${e}`)}var Jn=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Xc(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new Jn(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new Jn(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var mi=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=nt(),this.haveNext=nt()}[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 e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=nt(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=nt(),await Xc(this.readNext.promise,t?.signal,t)}};function Qc(){return new mi}function Id(r){return r[Symbol.asyncIterator]!=null}async function Ad(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Ld(r){let e=new AbortController,t=Qc();Ad(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Td(r){for(let e of r)yield*e}function Dd(...r){let e=[];for(let t of r)Id(t)||e.push(t);return e.length===r.length?Td(e):Ld(r)}var jc=Dd;function Jc(r,...e){if(r==null)throw new Error("Empty pipeline");if(bi(r)){let n=r;r=()=>n.source}else if(tu(r)||eu(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&bi(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)bi(t[n])&&(t[n]=_d(t[n]));return Cd(...t)}var Cd=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},eu=r=>r?.[Symbol.asyncIterator]!=null,tu=r=>r?.[Symbol.iterator]!=null,bi=r=>r==null?!1:r.sink!=null&&r.source!=null,_d=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=ft({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(eu(s))o=async function*(){yield*s,n.end()};else if(tu(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return jc(n,o())}return r.source};var Bd=4194304,eo=class extends Error{static name="UnwrappedError";name="UnwrappedError"},gi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},xi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ei=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Od(r){return typeof r?.closeRead=="function"}function Pd(r){return typeof r?.close=="function"}function yi(r){return Od(r)?r.readStatus==="closing"||r.readStatus==="closed":Pd(r)?r.status!=="open":!1}function Rd(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Nd(r,e){let t=e?.maxBufferSize??Bd,n=new H,o,s=!1;if(!Rd(r))throw new Y("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new eo("Stream was unwrapped");if(yi(r)){if(u?.bytes==null)return null;if(n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new _t(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let f=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await zc(o.promise,u?.signal),yi(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let p=u?.bytes??n.byteLength;if(n.byteLength<p){if(yi(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,p),new _t(`Unexpected EOF - stream closed while reading ${n.byteLength}/${p} bytes`);return l.read(u)}let d=n.sublist(0,p);return n.consume(p),d},async write(u,f){if(s===!0)throw new eo("Stream was unwrapped");r.send(u)||await Pe(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function Cr(r,e={}){let t=Nd(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=ae(e.maxDataLength));let n=e?.lengthDecoder??pt,o=e?.lengthEncoder??Rr;return{async read(i){let a=-1,c=new H;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new gi("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Ei(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new xi(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new _t(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new _t(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new H(o(i.byteLength),i),a)},async writeV(i,a){let c=new H(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function wi(r,e){let t=Cr(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.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:()=>t.unwrap()};return n}function kd(r){return r?.addEventListener!=null}function Ud(r){let e=ft(),t,n=i=>{e.push(i.data)},o=()=>{e.end(),r.removeEventListener("message",n),r.removeEventListener("close",s),r.removeEventListener("remoteCloseWrite",o)},s=i=>{e.end(i.error),i.error!=null&&t?.reject(i.error),r.removeEventListener("message",n),r.removeEventListener("close",s),r.removeEventListener("remoteCloseWrite",o)};return r.addEventListener("message",n),r.addEventListener("close",s,{once:!0}),r.addEventListener("remoteCloseWrite",o,{once:!0}),{source:e,async sink(i){async function*a(){yield*i}let c=a();for(;;){t=Promise.withResolvers();let{done:l,value:u}=await Promise.race([c.next(),t.promise]);if(r.writeStatus==="closing"||r.writeStatus==="closed"||(u!=null&&(r.send(u)||await Promise.race([Pe(r,"drain",{rejectionEvents:["close"]})])),l===!0))break}await r.close()}}}function vi(...r){let e=r.map(t=>kd(t)?Ud(t):t);return Jc(...e)}var to=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},rr=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ro=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},_r=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function no(r){return r[Symbol.asyncIterator]!=null}function ru(r,e){if(r.byteLength>e)throw new rr("Message length too long")}var so=r=>{let e=ae(r),t=Se(e);return Rr(r,t),so.bytes=e,t};so.bytes=0;function io(r,e){e=e??{};let t=e.lengthEncoder??so,n=e?.maxDataLength??4194304;function*o(s){ru(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return no(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}io.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??so,n=e?.maxDataLength??4194304;return ru(r,n),new H(t(r.byteLength),r)};var Bt;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Bt||(Bt={}));var Ii=r=>{let e=pt(r);return Ii.bytes=ae(e),e};Ii.bytes=0;function Si(r,e){let t=new H,n=Bt.LENGTH,o=-1,s=e?.lengthDecoder??Ii,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===Bt.LENGTH)try{if(o=s(t),o<0)throw new to("Invalid message length");if(o>a)throw new rr("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=Bt.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new ro("Message length length too long");break}throw l}if(n===Bt.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Bt.LENGTH}}}return no(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _r("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _r("Unexpected end of input")})()}Si.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return Si(n,{...e??{},onLength:s=>{t=s}})};var Ai=class extends jn{socket;constructor(e){let t=e.remoteAddr;if(e.localAddr!=null&&qn.matches(e.localAddr))t=e.localAddr;else if(t==null){if(e.socket.remoteAddress==null||e.socket.remotePort==null)throw new Y("Could not determine remote address or port");t=Zc(e.socket.remoteAddress,e.socket.remotePort)}super({...e,remoteAddr:t}),this.socket=e.socket,this.socket.on("data",n=>{this.onData(n)}),this.socket.on("error",n=>{this.log("tcp error",t,n),this.abort(n)}),this.socket.setTimeout(e.inactivityTimeout??120*1e3),this.socket.once("timeout",()=>{this.log("tcp timeout",t),this.abort(new Vt)}),this.socket.once("end",()=>{this.log("tcp end",t),this.onTransportClosed()}),this.socket.once("close",n=>{if(this.log("tcp close",t),n){this.abort(new Error("TCP transmission error"));return}this.onTransportClosed()}),this.socket.on("drain",()=>{this.log("tcp drain"),this.safeDispatchEvent("drain")})}sendData(e){let t=0,n=!0;for(let o of e)if(t+=o.byteLength,n=this.socket.write(o),!n)break;return{sentBytes:t,canSendMore:n}}async sendClose(e){this.socket.destroyed||(this.socket.destroySoon(),await Pe(this.socket,"close",e))}sendReset(){this.socket.resetAndDestroy()}sendPause(){this.socket.pause()}sendResume(){this.socket.resume()}},ao=r=>new Ai(r);var nu=Te(oe("os"),1),ou=Te(oe("path"),1);function co(r,e={}){if(qn.exactMatch(r)){let s=r.getComponents().find(i=>i.code===400)?.value;if(s==null)throw new Y(`Multiaddr ${r} was not a Unix address`);return nu.default.platform()==="win32"?{path:ou.default.join("\\\\.\\pipe\\",s)}:{path:s}}let t=Zn(r),n=t.host,o=t.port;return{host:n,port:o,ipv6Only:t.type==="ip6",...e}}var ue;(function(r){r[r.INACTIVE=0]="INACTIVE",r[r.ACTIVE=1]="ACTIVE",r[r.PAUSED=2]="PAUSED"})(ue||(ue={}));var uo=class extends Gt{context;server;sockets=new Set;status={code:ue.INACTIVE};metrics;addr;log;shutdownController;constructor(e){if(super(),this.context=e,e.keepAlive=e.keepAlive??!0,e.noDelay=e.noDelay??!0,e.allowHalfOpen=e.allowHalfOpen??!1,this.shutdownController=new AbortController,fn(1/0,this.shutdownController.signal),this.log=e.logger.forComponent("libp2p:tcp:listener"),this.addr="unknown",this.server=su.default.createServer(e,this.onSocket.bind(this)),e.maxConnections!==void 0&&(this.server.maxConnections=e.maxConnections),e.closeServerOnMaxConnections!=null&&e.closeServerOnMaxConnections.closeAbove<e.closeServerOnMaxConnections.listenBelow)throw new Y("closeAbove must be >= listenBelow");e.metrics?.registerMetricGroup("libp2p_tcp_inbound_connections_total",{label:"address",help:"Current active connections in TCP listener",calculate:()=>({[this.addr]:this.sockets.size})}),this.metrics={status:e.metrics?.registerMetricGroup("libp2p_tcp_listener_status_info",{label:"address",help:"Current status of the TCP listener socket"}),errors:e.metrics?.registerMetricGroup("libp2p_tcp_listener_errors_total",{label:"address",help:"Total count of TCP listener errors by type"}),events:e.metrics?.registerMetricGroup("libp2p_tcp_listener_events_total",{label:"address",help:"Total count of TCP listener events by type"})},this.server.on("listening",()=>{let t=this.server.address();t==null?this.addr="unknown":typeof t=="string"?this.addr=t:this.addr=`${t.address}:${t.port}`,this.metrics.status?.update({[this.addr]:ue.ACTIVE}),this.safeDispatchEvent("listening")}).on("error",t=>{this.metrics.errors?.increment({[`${this.addr} listen_error`]:!0}),this.safeDispatchEvent("error",{detail:t})}).on("close",()=>{this.metrics.status?.update({[this.addr]:this.status.code}),this.status.code!==ue.PAUSED&&this.safeDispatchEvent("close")}).on("drop",()=>{this.metrics.events?.increment({[`${this.addr} drop`]:!0})})}onSocket(e){if(this.metrics.events?.increment({[`${this.addr} connection`]:!0}),this.status.code!==ue.ACTIVE)throw e.destroy(),new sn("Server is not listening yet");let t;try{t=ao({socket:e,inactivityTimeout:this.context.inactivityTimeout,metrics:this.metrics?.events,metricPrefix:`${this.addr} `,direction:"inbound",localAddr:this.status.listeningAddr,log:this.context.logger.forComponent("libp2p:tcp:connection")})}catch(n){this.log.error("inbound connection failed - %e",n),this.metrics.errors?.increment({[`${this.addr} inbound_to_connection`]:!0}),e.destroy();return}this.log("new inbound connection %s",t.remoteAddr),this.sockets.add(e),this.context.upgrader.upgradeInbound(t,{signal:this.shutdownController.signal}).then(()=>{this.log("inbound connection upgraded %s",t.remoteAddr),e.once("close",()=>{this.sockets.delete(e),this.context.closeServerOnMaxConnections!=null&&this.sockets.size<this.context.closeServerOnMaxConnections.listenBelow&&this.resume().catch(n=>{this.log.error("error attempting to listen server once connection count under limit - %e",n),this.context.closeServerOnMaxConnections?.onListenError?.(n)})}),this.context.closeServerOnMaxConnections!=null&&this.sockets.size>=this.context.closeServerOnMaxConnections.closeAbove&&(this.log("pausing incoming connections as limit is exceeded - %d/%d",this.sockets.size,this.context.closeServerOnMaxConnections.closeAbove),this.pause())}).catch(async n=>{this.log.error("inbound connection upgrade failed - %e",n),this.metrics.errors?.increment({[`${this.addr} inbound_upgrade`]:!0}),this.sockets.delete(e),t.abort(n)})}getAddrs(){if(this.status.code===ue.INACTIVE)return[];let e=this.server.address();return e==null?[]:typeof e=="string"?[Ye(`/unix/${encodeURIComponent(e)}`)]:Yc(this.status.listeningAddr,e.port)}updateAnnounceAddrs(){}async listen(e){if(this.status.code===ue.ACTIVE||this.status.code===ue.PAUSED)throw new an("server is already listening");try{this.status={code:ue.ACTIVE,listeningAddr:e,netConfig:co(e,this.context)},await this.resume()}catch(t){throw this.status={code:ue.INACTIVE},t}}async close(e){let t=[];this.server.listening&&t.push(Pe(this.server,"close",e)),this.pause(!0),this.shutdownController.abort(),this.sockets.forEach(n=>{n.readable&&(t.push(Pe(n,"close",e)),n.destroy())}),await Promise.all(t)}async resume(){if(this.server.listening||this.status.code===ue.INACTIVE)return;let e=this.status.netConfig;await new Promise((t,n)=>{this.server.once("error",n),this.server.listen(e,t)}),this.status={...this.status,code:ue.ACTIVE},this.log("listening on %s",this.server.address())}pause(e=!1){if(!this.server.listening&&this.status.code===ue.PAUSED&&e){this.status={code:ue.INACTIVE};return}!this.server.listening||this.status.code!==ue.ACTIVE||(this.log("%s server on %s",e?"closing":"pausing",this.server.address()),this.status=e?{code:ue.INACTIVE}:{...this.status,code:ue.PAUSED},this.server.close())}};var lo=class{opts;metrics;components;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:tcp"),this.opts=t,this.components=e,e.metrics!=null&&(this.metrics={events:e.metrics.registerCounterGroup("libp2p_tcp_dialer_events_total",{label:"event",help:"Total count of TCP dialer events by type"}),errors:e.metrics.registerCounterGroup("libp2p_tcp_dialer_errors_total",{label:"event",help:"Total count of TCP dialer events by type"})})}[pa]=!0;[Symbol.toStringTag]="@libp2p/tcp";[ba]=["@libp2p/transport"];async dial(e,t){t.keepAlive=t.keepAlive??!0,t.noDelay=t.noDelay??!0,t.allowHalfOpen=t.allowHalfOpen??!1;let n=await this._connect(e,t),o;try{o=ao({socket:n,inactivityTimeout:this.opts.outboundSocketInactivityTimeout,metrics:this.metrics?.events,direction:"outbound",remoteAddr:e,log:this.log.newScope("connection")})}catch(s){throw this.metrics?.errors.increment({outbound_to_connection:!0}),n.destroy(s),s}try{return this.log("new outbound connection %s",o.remoteAddr),await t.upgrader.upgradeOutbound(o,t)}catch(s){throw this.metrics?.errors.increment({outbound_upgrade:!0}),this.log.error("error upgrading outbound connection - %e",s),o.abort(s),s}}async _connect(e,t){t.signal.throwIfAborted(),t.onProgress?.(new Yn("tcp:open-connection"));let n;return new Promise((o,s)=>{let i=Date.now(),a=co(e,{...this.opts.dialOpts??{},...t});this.log("dialing %a with opts %o",e,a),n=iu.default.connect(a);let c=d=>{this.log.error("dial to %a errored - %e",e,d);let g=a.path??`${a.host??""}:${a.port}`;d.message=`connection error ${g}: ${d.message}`,this.metrics?.events.increment({error:!0}),p(d)},l=()=>{this.log("connection timeout %a",e),this.metrics?.events.increment({timeout:!0});let d=new Vt(`Connection timeout after ${Date.now()-i}ms`);n.emit("error",d)},u=()=>{this.log("connection opened %a",e),this.metrics?.events.increment({connect:!0}),p()},f=()=>{this.log("connection aborted %a",e),this.metrics?.events.increment({abort:!0}),p(new tn)},p=d=>{if(n.removeListener("error",c),n.removeListener("timeout",l),n.removeListener("connect",u),t.signal!=null&&t.signal.removeEventListener("abort",f),d!=null){s(d);return}o(n)};n.on("error",c),n.on("timeout",l),n.on("connect",u),t.signal.addEventListener("abort",f)}).catch(o=>{throw n?.destroy(),o})}createListener(e){return new uo({...this.opts.listenOpts??{},...e,maxConnections:this.opts.maxConnections,backlog:this.opts.backlog,closeServerOnMaxConnections:this.opts.closeServerOnMaxConnections,inactivityTimeout:this.opts.inboundSocketInactivityTimeout,metrics:this.components.metrics,logger:this.components.logger})}listenFilter(e){return e.filter(t=>Mc.exactMatch(t)||t.toString().startsWith("/unix/"))}dialFilter(e){return this.listenFilter(e)}};function au(r={}){return e=>new lo(e,r)}function Hd(r){return r[Symbol.asyncIterator]!=null}function Vd(r){if(Hd(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Li=Vd;function Ae(r){return te.encode({type:te.Type.OK,peers:[],...r}).subarray()}function Ee(r){return te.encode({type:te.Type.ERROR,error:{msg:r.message},peers:[]}).subarray()}var fo=at("libp2p:daemon-server:dht"),ho=class{dht;constructor(e){let{dht:t}=e;this.dht=t}async*provide(e){try{await Li(this.dht.provide(e)),yield Ae()}catch(t){fo.error("failed to provide CID %s - %e",e,t),yield Ee(t)}}async*getClosestPeers(e){yield Ae({dht:{type:de.Type.BEGIN}});for await(let t of this.dht.getClosestPeers(e))t.name==="PEER_RESPONSE"&&(yield*t.closer.map(n=>de.encode({type:de.Type.VALUE,value:n.id.toMultihash().bytes})));yield de.encode({type:de.Type.END})}async*getPublicKey(e){yield Ee(new Error("FIX ME: not implemented"))}async*getValue(e){try{for await(let t of this.dht.get(e))t.name==="VALUE"&&(yield Ae({dht:{type:de.Type.VALUE,value:t.value}}))}catch(t){fo.error("error getting value for key %b - %e",e,t),yield Ee(t)}}async*putValue(e,t){try{await Li(this.dht.put(e,t)),yield Ae()}catch(n){fo.error("error putting value %b for key %b - %e",t,e,n),yield Ee(n)}}async*findPeer(e){try{for await(let t of this.dht.findPeer(e))t.name==="FINAL_PEER"&&(yield Ae({dht:{type:de.Type.VALUE,peer:{id:t.peer.id.toMultihash().bytes,addrs:t.peer.multiaddrs.map(n=>n.bytes)}}}));throw new Error("Peer not found")}catch(t){fo.error("peer not found %p - %e",e,t),yield Ee(t)}}async*findProviders(e,t){yield Ae({dht:{type:de.Type.BEGIN}});try{let n=t,o=0;for await(let s of this.dht.findProviders(e))if(s.name==="PEER_RESPONSE"){for(let i of s.providers)o++,yield de.encode({type:de.Type.VALUE,peer:{id:i.id.toMultihash().bytes,addrs:(i.multiaddrs??[]).map(a=>a.bytes)}});if(n===o)break}}catch(n){yield Ee(n)}yield de.encode({type:de.Type.END})}};var po=at("libp2p:daemon-server:pubsub"),mo=class{pubsub;constructor(e){let{pubsub:t}=e;this.pubsub=t}async*getTopics(){try{yield Ae({pubsub:{topics:this.pubsub.getTopics(),peerIDs:[]}})}catch(e){po.error("failed to get pubsub topics - %e",e),yield Ee(e)}}async*subscribe(e){try{let t=ft();this.pubsub.subscribe(e),this.pubsub.addEventListener("message",n=>{let o=n.detail;o.topic===e&&(o.type==="signed"?t.push(lr.encode({from:o.from.toMultihash().bytes,data:o.data,seqno:o.sequenceNumber==null?void 0:ye(o.sequenceNumber.toString(16).padStart(16,"0"),"base16"),topicIDs:[o.topic],signature:o.signature,key:ct(o.key)}).subarray()):t.push(lr.encode({data:o.data,topicIDs:[o.topic]}).subarray()))}),yield Ae(),yield*t}catch(t){po.error("failed to subscribe to topic %s - %e",e,t),yield Ee(t)}}async*publish(e,t){try{await this.pubsub.publish(e,t),yield Ae()}catch(n){po.error("failed to publish message to topic %s - %e",e,n),yield Ee(n)}}async*listPeers(e){try{yield Ae({pubsub:{topics:[e],peerIDs:this.pubsub.getSubscribers(e).map(t=>t.toMultihash().bytes)}})}catch(t){po.error("failed to list peers for topic %s - %e",e,t),yield Ee(t)}}};var cu=1<<22,ve=at("libp2p:daemon-server"),bo=class{multiaddr;libp2p;tcp;listener;dhtOperations;pubsubOperations;constructor(e){let{multiaddr:t,libp2pNode:n}=e;this.multiaddr=t,this.libp2p=n,this.tcp=au()({logger:da()}),this.listener=this.tcp.createListener({upgrader:new fr(this.handleConnection.bind(this))}),this._onExit=this._onExit.bind(this),n.services.dht!=null&&(this.dhtOperations=new ho({dht:n.services.dht})),n.services.pubsub!=null&&(this.pubsubOperations=new mo({pubsub:n.services.pubsub}))}async connect(e){if(e.connect?.addrs==null)throw new Error("Invalid request");let t=e.connect.peer,n=e.connect.addrs.map(s=>Ye(s)),o=Xt(Xe(t));return ve("connect - adding multiaddrs %a to peer %p",n,o),await this.libp2p.peerStore.merge(o,{multiaddrs:n}),ve("connect - dial %p",o),this.libp2p.dial(o)}async openStream(e){if(e.streamOpen?.proto==null)throw new Error("Invalid request");let{peer:t,proto:n}=e.streamOpen,o=Xt(Xe(t));ve("openStream - dial %p",o);let s=await this.libp2p.dial(o);ve("openStream - open stream for protocol(s) %s",n);let i=await s.newStream(n,{runOnLimitedConnection:!0});return{streamInfo:{peer:o.toMultihash().bytes,addr:s.remoteAddr.bytes,proto:i.protocol??""},connection:i}}async registerStreamHandler(e){if(e.streamHandler?.proto==null)throw new Error("Invalid request");let t=e.streamHandler.proto,n=Ye(e.streamHandler.addr),o;ve("registerStreamHandler - handle %s at %a",t,n),await this.libp2p.handle(t,async(s,i)=>{try{ve("open stream for protocol %o to %a",t,n);let a=AbortSignal.timeout(1e4);o=await this.tcp.dial(n,{upgrader:new fr,signal:a});let c=Kt.encode({peer:i.remotePeer.toMultihash().bytes,addr:i.remoteAddr.bytes,proto:s.protocol??""}),l=io.single(c);o.send(l)||await Pe(o,"drain",{rejectionEvents:["close"],signal:a}),await vi(s,o,s)}catch(a){ve.error("error handling stream handler - %e",a),o?.abort(a)}finally{try{await o?.close()}catch(a){o?.abort(a)}}},{runOnLimitedConnection:!0})}_listen(){process.on("SIGTERM",this._onExit),process.on("SIGINT",this._onExit),process.on("SIGHUP",this._onExit)}_onExit(){this.stop({exit:!0}).catch(e=>{ve.error("failed to stop daemon during exit - %e",e)})}async start(){this._listen(),await this.libp2p.start(),await this.listener.listen(this.multiaddr)}getMultiaddr(){let e=this.listener.getAddrs();if(e.length>0)return e[0];throw new Error("Not started")}async stop(e={exit:!1}){await this.libp2p.stop(),await this.listener.close(),e.exit&&ve("server closed, exiting"),process.removeListener("SIGTERM",this._onExit),process.removeListener("SIGINT",this._onExit),process.removeListener("SIGHUP",this._onExit)}async*handlePeerStoreRequest(e){try{switch(e.type){case gt.Type.GET_PROTOCOLS:if(e.id==null)throw new Error("Invalid request");let t=Xt(Xe(e.id)),o=(await this.libp2p.peerStore.get(t)).protocols;yield Ae({peerStore:{protos:o}});return;case gt.Type.GET_PEER_INFO:throw new Error("ERR_NOT_IMPLEMENTED");default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error("error handling peerstore request - %e",t),yield Ee(t)}}async*handlePubsubRequest(e){try{if(this.libp2p.services.pubsub==null||this.pubsubOperations==null)throw new Error("PubSub not configured");switch(e.type){case Qe.Type.GET_TOPICS:yield*this.pubsubOperations.getTopics();return;case Qe.Type.SUBSCRIBE:if(e.topic==null)throw new Error("Invalid request");yield*this.pubsubOperations.subscribe(e.topic);return;case Qe.Type.PUBLISH:if(e.topic==null||e.data==null)throw new Error("Invalid request");yield*this.pubsubOperations.publish(e.topic,e.data);return;case Qe.Type.LIST_PEERS:if(e.topic==null)throw new Error("Invalid request");yield*this.pubsubOperations.listPeers(e.topic);return;default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error("error handling pubsub request - %e",t),yield Ee(t)}}async*handleDHTRequest(e){try{if(this.libp2p.services.dht==null||this.dhtOperations==null)throw new Error("DHT not configured");switch(e.type){case ke.Type.FIND_PEER:if(e.peer==null)throw new Error("Invalid request");yield*this.dhtOperations.findPeer(Xt(Xe(e.peer)));return;case ke.Type.FIND_PROVIDERS:if(e.cid==null)throw new Error("Invalid request");yield*this.dhtOperations.findProviders(se.decode(e.cid),e.count??20);return;case ke.Type.PROVIDE:if(e.cid==null)throw new Error("Invalid request");yield*this.dhtOperations.provide(se.decode(e.cid));return;case ke.Type.GET_CLOSEST_PEERS:if(e.key==null)throw new Error("Invalid request");yield*this.dhtOperations.getClosestPeers(e.key);return;case ke.Type.GET_PUBLIC_KEY:if(e.peer==null)throw new Error("Invalid request");yield*this.dhtOperations.getPublicKey(Xt(Xe(e.peer)));return;case ke.Type.GET_VALUE:if(e.key==null)throw new Error("Invalid request");yield*this.dhtOperations.getValue(e.key);return;case ke.Type.PUT_VALUE:if(e.key==null||e.value==null)throw new Error("Invalid request");yield*this.dhtOperations.putValue(e.key,e.value);return;default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(t){ve.error("error handling DHT request - %e",t),yield Ee(t)}}handleConnection(e){Promise.resolve().then(async()=>{let t=this,n=wi(e,{maxDataLength:cu}),o=await n.read(Ne);ve("read",o);try{switch(o.type){case Ne.Type.CONNECT:{await t.connect(o),await n.write({type:te.Type.OK},te);break}case Ne.Type.IDENTIFY:{await n.write({type:te.Type.OK,identify:{id:t.libp2p.peerId.toMultihash().bytes,addrs:t.libp2p.getMultiaddrs().map(s=>s.decapsulateCode(421)).map(s=>s.bytes)}},te);break}case Ne.Type.LIST_PEERS:{let s=[],i=new Set;for(let a of t.libp2p.getConnections()){let c=a.remotePeer.toString();i.has(c)||(i.add(c),s.push({id:a.remotePeer.toMultihash().bytes,addrs:[a.remoteAddr.bytes]}))}await n.write({type:te.Type.OK,peers:s},te);break}case Ne.Type.STREAM_OPEN:{let s=await t.openStream(o);await n.write({type:te.Type.OK,streamInfo:s.streamInfo},te);let i=n.unwrap();await vi(i,s.connection,i);break}case Ne.Type.STREAM_HANDLER:{await t.registerStreamHandler(o),await n.write({type:te.Type.OK},te);break}case Ne.Type.PEERSTORE:{if(o.peerStore==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handlePeerStoreRequest(o.peerStore))await i.write(a);break}case Ne.Type.PUBSUB:{if(o.pubsub==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handlePubsubRequest(o.pubsub))await i.write(a);break}case Ne.Type.DHT:{if(o.dht==null)throw new Error("ERR_INVALID_REQUEST");let s=n.unwrap(),i=Cr(s);for await(let a of t.handleDHTRequest(o.dht))await i.write(a);break}default:throw new Error("ERR_INVALID_REQUEST_TYPE")}}catch(s){ve.error("error handling incoming connection - %e",s);let i=n.unwrap();if(i.status!=="open")return;n=wi(i,{maxDataLength:cu}),await n.write({type:te.Type.ERROR,error:{msg:s.message},peers:[]},te)}finally{await n.unwrap().close()}}).catch(t=>{ve.error("error handling incoming connection - %e",t)})}},$d=(r,e)=>new bo({multiaddr:r,libp2pNode:e});return pu(Gd);})();
8
8
  /*! Bundled license information:
9
9
 
10
10
  @noble/hashes/utils.js: