@libp2p/circuit-relay-v2 3.1.2 → 3.1.3-6ddc1b80e

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.min.js CHANGED
@@ -3,7 +3,7 @@
3
3
  `).map(s=>` ${s}`).join(`
4
4
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
5
5
  ${e.join(`
6
- `)}`:`${t} :`}};ml=Ht;k.Constructed=ml;Ht.NAME="CONSTRUCTED";var ts=class extends _e{fromBER(e,t,n){return t}toBER(e){return Qe}};ts.override="EndOfContentValueBlock";var gl,rs=class extends we{constructor(e={}){super(e,ts),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};gl=rs;k.EndOfContent=gl;rs.NAME=en;var yl,Er=class extends we{constructor(e={}){super(e,_e),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};yl=Er;k.Null=yl;Er.NAME="NULL";var ns=class extends At(_e){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=z.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=z.BufferSourceConverter.toUint8Array(e);return St(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Go.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};ns.NAME="BooleanValueBlock";var bl,ss=class extends we{constructor(e={}){super(e,ns),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};bl=ss;k.Boolean=bl;ss.NAME="BOOLEAN";var is=class extends At(ot){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ot.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===en){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==fl)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?ot.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};is.NAME="OctetStringValueBlock";var wl,os=class r extends we{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},is),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=Us(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Ht.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${z.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return z.BufferSourceConverter.concat(e)}};wl=os;k.OctetString=wl;os.NAME=fl;var as=class extends At(ot){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=ot.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===en){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==hl)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let h=a.valueBlock;if(this.unusedBits>0&&h.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=h.unusedBits}return s}let i=z.BufferSourceConverter.toUint8Array(e);if(!St(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=Us(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ot.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Qe;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};as.NAME="BitStringValueBlock";var xl,Sr=class extends we{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},as),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Ht.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};xl=Sr;k.BitString=xl;Sr.NAME=hl;var vl;function mp(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h=0,f=c<o?o:c,u=0;for(let g=f;g>=0;g--,u++){switch(!0){case u<a.length:h=i[o-u]+a[c-u]+t[0];break;default:h=i[o-u]+t[0]}switch(t[0]=h/10,!0){case u>=i.length:i=Zn(new Uint8Array([h%10]),i);break;default:i[o-u]=h%10}}return t[0]>0&&(i=Zn(t,i)),i}function ul(r){if(r>=Jr.length)for(let e=Jr.length;e<=r;e++){let t=new Uint8Array([0]),n=Jr[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=Zn(t,n)),Jr.push(n)}return Jr[r]}function gp(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h,f=0;for(let u=c;u>=0;u--,f++)switch(h=i[o-f]-a[c-f]-t,!0){case h<0:t=1,i[o-f]=h+10;break;default:t=0,i[o-f]=h}if(t>0)for(let u=o-c+1;u>=0;u--,f++)if(h=i[o-f]-t,h<0)t=1,i[o-f]=h+10;else{t=0,i[o-f]=h;break}return i.slice()}var tn=class extends At(_e){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Go.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(al(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let h=0;h<8;h++){if((s&1)===1)switch(n){case e:t=gp(ul(n),t),o="-";break;default:t=mp(t,ul(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=ll.charAt(t[c]));return a===!1&&(o+=ll.charAt(0)),o}};vl=tn;tn.NAME="IntegerValueBlock";Object.defineProperty(vl.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var El,xe=class r extends we{constructor(e={}){super(e,tn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return jn(),BigInt(this.valueBlock.toString())}static fromBigInt(e){jn();let t=BigInt(e),n=new Qr,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(z.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let h=BigInt(`0x${z.Convert.ToHex(a)}`)+t,f=z.BufferSourceConverter.toUint8Array(z.Convert.FromHex(h.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};El=xe;k.Integer=El;xe.NAME="INTEGER";var Sl,cs=class extends xe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Sl=cs;k.Enumerated=Sl;cs.NAME="ENUMERATED";var rn=class extends At(_e){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=z.BufferSourceConverter.toUint8Array(e);if(!St(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=tr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){jn();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Vt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Qe;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=z.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};rn.NAME="sidBlock";var ls=class extends _e{constructor({value:e=Br,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new rn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,Qe;t.push(s)}return Wo(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new rn;if(s>Number.MAX_SAFE_INTEGER){jn();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};ls.NAME="ObjectIdentifierValueBlock";var Al,Ar=class extends we{constructor(e={}){super(e,ls),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Al=Ar;k.ObjectIdentifier=Al;Ar.NAME="OBJECT IDENTIFIER";var nn=class extends At(xt){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=z.BufferSourceConverter.toUint8Array(e);if(!St(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=tr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Vt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Qe;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=z.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};nn.NAME="relativeSidBlock";var us=class extends _e{constructor({value:e=Br,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new nn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,Qe;n.push(i)}return Wo(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new nn;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};us.NAME="RelativeObjectIdentifierValueBlock";var Bl,fs=class extends we{constructor(e={}){super(e,us),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Bl=fs;k.RelativeObjectIdentifier=Bl;fs.NAME="RelativeObjectIdentifier";var _l,vt=class extends Ht{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};_l=vt;k.Sequence=_l;vt.NAME="SEQUENCE";var Il,hs=class extends Ht{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Il=hs;k.Set=Il;hs.NAME="SET";var ds=class extends At(_e){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Br}toJSON(){return{...super.toJSON(),value:this.value}}};ds.NAME="StringValueBlock";var ps=class extends ds{};ps.NAME="SimpleStringValueBlock";var Ce=class extends Jn{constructor({...e}={}){super(e,ps)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,z.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Ce.NAME="SIMPLE STRING";var ms=class extends Ce{fromBuffer(e){this.valueBlock.valueHexView=z.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=z.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=z.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(z.Convert.FromUtf8String(e)),this.valueBlock.value=e}};ms.NAME="Utf8StringValueBlock";var Tl,Et=class extends ms{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Tl=Et;k.Utf8String=Tl;Et.NAME="UTF8String";var gs=class extends Ce{fromBuffer(e){this.valueBlock.value=z.Convert.ToUtf16String(e),this.valueBlock.valueHexView=z.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(z.Convert.FromUtf16String(e))}};gs.NAME="BmpStringValueBlock";var kl,ys=class extends gs{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};kl=ys;k.BmpString=kl;ys.NAME="BMPString";var bs=class extends Ce{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=Vt(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};bs.NAME="UniversalStringValueBlock";var Cl,ws=class extends bs{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};Cl=ws;k.UniversalString=Cl;ws.NAME="UniversalString";var Nl,xs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Nl=xs;k.NumericString=Nl;xs.NAME="NumericString";var Rl,vs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};Rl=vs;k.PrintableString=Rl;vs.NAME="PrintableString";var Ll,Es=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Ll=Es;k.TeletexString=Ll;Es.NAME="TeletexString";var Ul,Ss=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Ul=Ss;k.VideotexString=Ul;Ss.NAME="VideotexString";var Dl,As=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};Dl=As;k.IA5String=Dl;As.NAME="IA5String";var Ol,Bs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};Ol=Bs;k.GraphicString=Ol;Bs.NAME="GraphicString";var Ml,sn=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Ml=sn;k.VisibleString=Ml;sn.NAME="VisibleString";var Pl,_s=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Pl=_s;k.GeneralString=Pl;_s.NAME="GeneralString";var Vl,Is=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Vl=Is;k.CharacterString=Vl;Is.NAME="CharacterString";var Hl,on=class extends sn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,z.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Ve(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Ve(this.month,2),t[2]=Ve(this.day,2),t[3]=Ve(this.hour,2),t[4]=Ve(this.minute,2),t[5]=Ve(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};Hl=on;k.UTCTime=Hl;on.NAME="UTCTime";var Fl,Ts=class extends on{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,g=n.indexOf("+"),l="";if(g===-1&&(g=n.indexOf("-"),u=-1),g!==-1){if(l=n.substring(g+1),n=n.substring(0,g),l.length!==2&&l.length!==4)throw new Error("Wrong input string for conversion");let d=parseInt(l.substring(0,2),10);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*d,l.length===4){if(d=parseInt(l.substring(2,4),10),isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");c=u*d}}}let h=n.indexOf(".");if(h===-1&&(h=n.indexOf(",")),h!==-1){let u=new Number(`0${n.substring(h)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");i=u.valueOf(),s=n.substring(0,h)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,h!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*i;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*i;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=1e3*i;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Ve(this.year,4)),t.push(Ve(this.month,2)),t.push(Ve(this.day,2)),t.push(Ve(this.hour,2)),t.push(Ve(this.minute,2)),t.push(Ve(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Ve(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Fl=Ts;k.GeneralizedTime=Fl;Ts.NAME="GeneralizedTime";var Kl,ks=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Kl=ks;k.DATE=Kl;ks.NAME="DATE";var ql,Cs=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};ql=Cs;k.TimeOfDay=ql;Cs.NAME="TimeOfDay";var zl,Ns=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};zl=Ns;k.DateTime=zl;Ns.NAME="DateTime";var $l,Rs=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};$l=Rs;k.Duration=$l;Rs.NAME="Duration";var Gl,Ls=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Gl=Ls;k.TIME=Gl;Ls.NAME="TIME";function le(r,e="utf8"){let t=qn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var an=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Ds=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var Wl={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Ds("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Ft=Wl;async function Zl(r){let e=await Ft.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await bp(e);return{privateKey:t[0],publicKey:t[1]}}async function jl(r,e){let t=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Ft.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Yl(r,e,t){let n=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Ft.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function bp(r){if(r.privateKey==null||r.publicKey==null)throw new Ee("Private and public key are required");return Promise.all([Ft.get().subtle.exportKey("jwk",r.privateKey),Ft.get().subtle.exportKey("jwk",r.publicKey)])}function Yo(r){if(r.kty!=="RSA")throw new Ee("invalid key type");if(r.n==null)throw new Ee("invalid key modulus");return G(r.n,"base64url").length*8}var _r=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=cn.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return me.createV1(114,this._multihash)}toString(){return Q.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}verify(e,t){return Yl(this._key,t,e)}},ln=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=cn.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}sign(e){return jl(this._key,e)}};var Os=8192,Xo=18;function Xl(r){let{result:e}=jo(r),t=e.valueBlock.value;return{n:at(t[1]),e:at(t[2]),d:at(t[3]),p:at(t[4]),q:at(t[5]),dp:at(t[6]),dq:at(t[7]),qi:at(t[8]),kty:"RSA",alg:"RS256"}}function wp(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new Ee("JWK was missing components");let t=new vt({value:[new xe({value:0}),xe.fromBigInt(ct(G(r.n,"base64url"))),xe.fromBigInt(ct(G(r.e,"base64url"))),xe.fromBigInt(ct(G(r.d,"base64url"))),xe.fromBigInt(ct(G(r.p,"base64url"))),xe.fromBigInt(ct(G(r.q,"base64url"))),xe.fromBigInt(ct(G(r.dp,"base64url"))),xe.fromBigInt(ct(G(r.dq,"base64url"))),xe.fromBigInt(ct(G(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Jl(r){let{result:e}=jo(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:at(t[0]),e:at(t[1])}}function Jo(r){if(r.n==null||r.e==null)throw new Ee("JWK was missing components");let t=new vt({value:[new vt({value:[new Ar({value:"1.2.840.113549.1.1.1"}),new Er]}),new Sr({valueHex:new vt({value:[xe.fromBigInt(ct(G(r.n,"base64url"))),xe.fromBigInt(ct(G(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function at(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return le(e,"base64url")}function ct(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function Ql(r){let e=Xl(r);return eu(e)}function Qo(r){let e=Jl(r);if(Yo(e)>Os)throw new ar("Key size is too large");let t=xr(it.encode({Type:he.RSA,Data:r})),n=Ze(Xo,t);return new _r(e,n)}function eu(r){if(Yo(r)>Os)throw new Ee("Key size is too large");let e=ru(r),t=xr(it.encode({Type:he.RSA,Data:Jo(e.publicKey)})),n=Ze(Xo,t);return new ln(e.privateKey,new _r(e.publicKey,n))}async function tu(r){if(r>Os)throw new Ee("Key size is too large");let e=await Zl(r),t=xr(it.encode({Type:he.RSA,Data:Jo(e.publicKey)})),n=Ze(Xo,t);return new ln(e.privateKey,new _r(e.publicKey,n))}function ru(r){if(r==null)throw new Ee("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var Ms=class extends mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Bc(e);let n=zr(t);if(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 s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?e.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=e.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(e){return pr(this),this.iHash.update(e),this}digestInto(e){pr(this),dr(e,this.outputLen),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||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=i,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ea=(r,e,t)=>new Ms(r,e).update(t).digest();ea.create=(r,e)=>new Ms(r,e);function nu(r){r.lowS!==void 0&&Ye("lowS",r.lowS),r.prehash!==void 0&&Ye("prehash",r.prehash)}function xp(r){let e=Wr(r);st(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:vp,hexToBytes:Ep}=Un,Bt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Bt;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,s=Wt(n);if(s.length/2&128)throw new t("tlv.encode: long form length too big");let i=n>127?Wt(s.length/2|128):"";return`${Wt(r)}${i}${s}${e}`},decode(r,e){let{Err:t}=Bt,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 s=e[n++],i=!!(s&128),o=0;if(!i)o=s;else{let c=s&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 h=e.subarray(n,n+c);if(h.length!==c)throw new t("tlv.decode: length bytes not complete");if(h[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let f of h)o=o<<8|f;if(n+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+o)}}},_int:{encode(r){let{Err:e}=Bt;if(r<_t)throw new e("integer: negative integers are not allowed");let t=Wt(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected assertion");return t},decode(r){let{Err:e}=Bt;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 vp(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Bt,s=typeof r=="string"?Ep(r):r;yr(s);let{v:i,l:o}=n.decode(48,s);if(o.length)throw new e("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,i),{v:h,l:f}=n.decode(2,c);if(f.length)throw new e("Invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(h)}},hexFromSig(r){let{_tlv:e,_int:t}=Bt,n=`${e.encode(2,t.encode(r.r))}${e.encode(2,t.encode(r.s))}`;return e.encode(48,n)}},_t=BigInt(0),ye=BigInt(1),ab=BigInt(2),su=BigInt(3),cb=BigInt(4);function Sp(r){let e=xp(r),{Fp:t}=e,n=Ut(e.n,e.nBitLength),s=e.toBytes||((p,y,b)=>{let w=y.toAffine();return yt(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),i=e.fromBytes||(p=>{let y=p.subarray(1),b=t.fromBytes(y.subarray(0,t.BYTES)),w=t.fromBytes(y.subarray(t.BYTES,2*t.BYTES));return{x:b,y:w}});function o(p){let{a:y,b}=e,w=t.sqr(p),m=t.mul(w,p);return t.add(t.add(m,t.mul(p,y)),b)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(p){return $r(p,ye,e.n)}function c(p){let{allowedPrivateKeyLengths:y,nByteLength:b,wrapPrivateKey:w,n:m}=e;if(y&&typeof p!="bigint"){if(Nt(p)&&(p=mt(p)),typeof p!="string"||!y.includes(p.length))throw new Error("Invalid key");p=p.padStart(b*2,"0")}let v;try{v=typeof p=="bigint"?p:gt(ce("private key",p,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof p}`)}return w&&(v=X(v,m)),Le("private key",v,ye,m),v}function h(p){if(!(p instanceof g))throw new Error("ProjectivePoint expected")}let f=Yt((p,y)=>{let{px:b,py:w,pz:m}=p;if(t.eql(m,t.ONE))return{x:b,y:w};let v=p.is0();y==null&&(y=v?t.ONE:t.inv(m));let A=t.mul(b,y),_=t.mul(w,y),x=t.mul(m,y);if(v)return{x:t.ZERO,y:t.ZERO};if(!t.eql(x,t.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),u=Yt(p=>{if(p.is0()){if(e.allowInfinityPoint&&!t.is0(p.py))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=p.toAffine();if(!t.isValid(y)||!t.isValid(b))throw new Error("bad point: x or y not FE");let w=t.sqr(b),m=o(y);if(!t.eql(w,m))throw new Error("bad point: equation left != right");if(!p.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class g{constructor(y,b,w){if(this.px=y,this.py=b,this.pz=w,y==null||!t.isValid(y))throw new Error("x required");if(b==null||!t.isValid(b))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required");Object.freeze(this)}static fromAffine(y){let{x:b,y:w}=y||{};if(!y||!t.isValid(b)||!t.isValid(w))throw new Error("invalid affine point");if(y instanceof g)throw new Error("projective point not allowed");let m=v=>t.eql(v,t.ZERO);return m(b)&&m(w)?g.ZERO:new g(b,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(y){let b=t.invertBatch(y.map(w=>w.pz));return y.map((w,m)=>w.toAffine(b[m])).map(g.fromAffine)}static fromHex(y){let b=g.fromAffine(i(ce("pointHex",y)));return b.assertValidity(),b}static fromPrivateKey(y){return g.BASE.multiply(c(y))}static msm(y,b){return Mn(g,n,y,b)}_setWindowSize(y){d.setWindowSize(this,y)}assertValidity(){u(this)}hasEvenY(){let{y}=this.toAffine();if(t.isOdd)return!t.isOdd(y);throw new Error("Field doesn't support isOdd")}equals(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=t.eql(t.mul(b,_),t.mul(v,m)),B=t.eql(t.mul(w,_),t.mul(A,m));return x&&B}negate(){return new g(this.px,t.neg(this.py),this.pz)}double(){let{a:y,b}=e,w=t.mul(b,su),{px:m,py:v,pz:A}=this,_=t.ZERO,x=t.ZERO,B=t.ZERO,C=t.mul(m,m),ne=t.mul(v,v),P=t.mul(A,A),M=t.mul(m,v);return M=t.add(M,M),B=t.mul(m,A),B=t.add(B,B),_=t.mul(y,B),x=t.mul(w,P),x=t.add(_,x),_=t.sub(ne,x),x=t.add(ne,x),x=t.mul(_,x),_=t.mul(M,_),B=t.mul(w,B),P=t.mul(y,P),M=t.sub(C,P),M=t.mul(y,M),M=t.add(M,B),B=t.add(C,C),C=t.add(B,C),C=t.add(C,P),C=t.mul(C,M),x=t.add(x,C),P=t.mul(v,A),P=t.add(P,P),C=t.mul(P,M),_=t.sub(_,C),B=t.mul(P,ne),B=t.add(B,B),B=t.add(B,B),new g(_,x,B)}add(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=t.ZERO,B=t.ZERO,C=t.ZERO,ne=e.a,P=t.mul(e.b,su),M=t.mul(b,v),L=t.mul(w,A),T=t.mul(m,_),N=t.add(b,w),S=t.add(v,A);N=t.mul(N,S),S=t.add(M,L),N=t.sub(N,S),S=t.add(b,m);let E=t.add(v,_);return S=t.mul(S,E),E=t.add(M,T),S=t.sub(S,E),E=t.add(w,m),x=t.add(A,_),E=t.mul(E,x),x=t.add(L,T),E=t.sub(E,x),C=t.mul(ne,S),x=t.mul(P,T),C=t.add(x,C),x=t.sub(L,C),C=t.add(L,C),B=t.mul(x,C),L=t.add(M,M),L=t.add(L,M),T=t.mul(ne,T),S=t.mul(P,S),L=t.add(L,T),T=t.sub(M,T),T=t.mul(ne,T),S=t.add(S,T),M=t.mul(L,S),B=t.add(B,M),M=t.mul(E,S),x=t.mul(N,x),x=t.sub(x,M),M=t.mul(N,L),C=t.mul(E,C),C=t.add(C,M),new g(x,B,C)}subtract(y){return this.add(y.negate())}is0(){return this.equals(g.ZERO)}wNAF(y){return d.wNAFCached(this,y,g.normalizeZ)}multiplyUnsafe(y){Le("scalar",y,_t,e.n);let b=g.ZERO;if(y===_t)return b;if(y===ye)return this;let{endo:w}=e;if(!w)return d.unsafeLadder(this,y);let{k1neg:m,k1:v,k2neg:A,k2:_}=w.splitScalar(y),x=b,B=b,C=this;for(;v>_t||_>_t;)v&ye&&(x=x.add(C)),_&ye&&(B=B.add(C)),C=C.double(),v>>=ye,_>>=ye;return m&&(x=x.negate()),A&&(B=B.negate()),B=new g(t.mul(B.px,w.beta),B.py,B.pz),x.add(B)}multiply(y){let{endo:b,n:w}=e;Le("scalar",y,ye,w);let m,v;if(b){let{k1neg:A,k1:_,k2neg:x,k2:B}=b.splitScalar(y),{p:C,f:ne}=this.wNAF(_),{p:P,f:M}=this.wNAF(B);C=d.constTimeNegate(A,C),P=d.constTimeNegate(x,P),P=new g(t.mul(P.px,b.beta),P.py,P.pz),m=C.add(P),v=ne.add(M)}else{let{p:A,f:_}=this.wNAF(y);m=A,v=_}return g.normalizeZ([m,v])[0]}multiplyAndAddUnsafe(y,b,w){let m=g.BASE,v=(_,x)=>x===_t||x===ye||!_.equals(m)?_.multiplyUnsafe(x):_.multiply(x),A=v(this,b).add(v(y,w));return A.is0()?void 0:A}toAffine(y){return f(this,y)}isTorsionFree(){let{h:y,isTorsionFree:b}=e;if(y===ye)return!0;if(b)return b(g,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:y,clearCofactor:b}=e;return y===ye?this:b?b(g,this):this.multiplyUnsafe(e.h)}toRawBytes(y=!0){return Ye("isCompressed",y),this.assertValidity(),s(g,this,y)}toHex(y=!0){return Ye("isCompressed",y),mt(this.toRawBytes(y))}}g.BASE=new g(e.Gx,e.Gy,t.ONE),g.ZERO=new g(t.ZERO,t.ONE,t.ZERO);let l=e.nBitLength,d=On(g,e.endo?Math.ceil(l/2):l);return{CURVE:e,ProjectivePoint:g,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function Ap(r){let e=Wr(r);return st(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function iu(r){let e=Ap(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(T){return X(T,n)}function a(T){return Dn(T,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:h,weierstrassEquation:f,isWithinCurveOrder:u}=Sp({...e,toBytes(T,N,S){let E=N.toAffine(),I=t.toBytes(E.x),R=yt;return Ye("isCompressed",S),S?R(Uint8Array.from([N.hasEvenY()?2:3]),I):R(Uint8Array.from([4]),I,t.toBytes(E.y))},fromBytes(T){let N=T.length,S=T[0],E=T.subarray(1);if(N===s&&(S===2||S===3)){let I=gt(E);if(!$r(I,ye,t.ORDER))throw new Error("Point is not on curve");let R=f(I),U;try{U=t.sqrt(R)}catch($){let q=$ instanceof Error?": "+$.message:"";throw new Error("Point is not on curve"+q)}let D=(U&ye)===ye;return(S&1)===1!==D&&(U=t.neg(U)),{x:I,y:U}}else if(N===i&&S===4){let I=t.fromBytes(E.subarray(0,t.BYTES)),R=t.fromBytes(E.subarray(t.BYTES,2*t.BYTES));return{x:I,y:R}}else throw new Error(`Point of length ${N} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),g=T=>mt(Lt(T,e.nByteLength));function l(T){let N=n>>ye;return T>N}function d(T){return l(T)?o(-T):T}let p=(T,N,S)=>gt(T.slice(N,S));class y{constructor(N,S,E){this.r=N,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(N){let S=e.nByteLength;return N=ce("compactSignature",N,S*2),new y(p(N,0,S),p(N,S,2*S))}static fromDER(N){let{r:S,s:E}=Bt.toSig(ce("DER",N));return new y(S,E)}assertValidity(){Le("r",this.r,ye,n),Le("s",this.s,ye,n)}addRecoveryBit(N){return new y(this.r,this.s,N)}recoverPublicKey(N){let{r:S,s:E,recovery:I}=this,R=_(ce("msgHash",N));if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");let U=I===2||I===3?S+e.n:S;if(U>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let D=I&1?"03":"02",K=c.fromHex(D+g(U)),$=a(U),q=o(-R*$),Y=o(E*$),te=c.BASE.multiplyAndAddUnsafe(K,q,Y);if(!te)throw new Error("point at infinify");return te.assertValidity(),te}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return Zt(this.toDERHex())}toDERHex(){return Bt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Zt(this.toCompactHex())}toCompactHex(){return g(this.r)+g(this.s)}}let b={isValidPrivateKey(T){try{return h(T),!0}catch{return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{let T=oo(e.n);return Pc(e.randomBytes(T),e.n)},precompute(T=8,N=c.BASE){return N._setWindowSize(T),N.multiply(BigInt(3)),N}};function w(T,N=!0){return c.fromPrivateKey(T).toRawBytes(N)}function m(T){let N=Nt(T),S=typeof T=="string",E=(N||S)&&T.length;return N?E===s||E===i:S?E===2*s||E===2*i:T instanceof c}function v(T,N,S=!0){if(m(T))throw new Error("first arg must be private key");if(!m(N))throw new Error("second arg must be public key");return c.fromHex(N).multiply(h(T)).toRawBytes(S)}let A=e.bits2int||function(T){let N=gt(T),S=T.length*8-e.nBitLength;return S>0?N>>BigInt(S):N},_=e.bits2int_modN||function(T){return o(A(T))},x=Gr(e.nBitLength);function B(T){return Le(`num < 2^${e.nBitLength}`,T,_t,x),Lt(T,e.nByteLength)}function C(T,N,S=ne){if(["recovered","canonical"].some(pe=>pe in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:I}=e,{lowS:R,prehash:U,extraEntropy:D}=S;R==null&&(R=!0),T=ce("msgHash",T),nu(S),U&&(T=ce("prehashed msgHash",E(T)));let K=_(T),$=h(N),q=[B($),B(K)];if(D!=null&&D!==!1){let pe=D===!0?I(t.BYTES):D;q.push(ce("extraEntropy",pe))}let Y=yt(...q),te=K;function de(pe){let be=A(pe);if(!u(be))return;let Te=a(be),ue=c.BASE.multiply(be).toAffine(),Ne=o(ue.x);if(Ne===_t)return;let lt=o(Te*o(te+Ne*$));if(lt===_t)return;let Mr=(ue.x===Ne?0:2)|Number(ue.y&ye),Pr=lt;return R&&l(lt)&&(Pr=d(lt),Mr^=1),new y(Ne,Pr,Mr)}return{seed:Y,k2sig:de}}let ne={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};function M(T,N,S=ne){let{seed:E,k2sig:I}=C(T,N,S),R=e;return ro(R.hash.outputLen,R.nByteLength,R.hmac)(E,I)}c.BASE._setWindowSize(8);function L(T,N,S,E=P){let I=T;if(N=ce("msgHash",N),S=ce("publicKey",S),"strict"in E)throw new Error("options.strict was renamed to lowS");nu(E);let{lowS:R,prehash:U}=E,D,K;try{if(typeof I=="string"||Nt(I))try{D=y.fromDER(I)}catch(ue){if(!(ue instanceof Bt.Err))throw ue;D=y.fromCompact(I)}else if(typeof I=="object"&&typeof I.r=="bigint"&&typeof I.s=="bigint"){let{r:ue,s:Ne}=I;D=new y(ue,Ne)}else throw new Error("PARSE");K=c.fromHex(S)}catch(ue){if(ue.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&D.hasHighS())return!1;U&&(N=e.hash(N));let{r:$,s:q}=D,Y=_(N),te=a(q),de=o(Y*te),pe=o($*te),be=c.BASE.multiplyAndAddUnsafe(K,de,pe)?.toAffine();return be?o(be.x)===$:!1}return{CURVE:e,getPublicKey:w,getSharedSecret:v,sign:M,verify:L,ProjectivePoint:c,Signature:y,utils:b}}function Bp(r){return{hash:r,hmac:(e,...t)=>ea(r,e,Zi(...t)),randomBytes:Nn}}function ou(r,e){let t=n=>iu({...r,...Bp(n)});return Object.freeze({...t(e),create:t})}var lu=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),au=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),_p=BigInt(1),ta=BigInt(2),cu=(r,e)=>(r+e/ta)/e;function Ip(r){let e=lu,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%e,f=h*h*r%e,u=ie(f,t,e)*f%e,g=ie(u,t,e)*f%e,l=ie(g,ta,e)*h%e,d=ie(l,s,e)*l%e,p=ie(d,i,e)*d%e,y=ie(p,a,e)*p%e,b=ie(y,c,e)*y%e,w=ie(b,a,e)*p%e,m=ie(w,t,e)*f%e,v=ie(m,o,e)*d%e,A=ie(v,n,e)*h%e,_=ie(A,ta,e);if(!ra.eql(ra.sqr(_),r))throw new Error("Cannot find square root");return _}var ra=Ut(lu,void 0,void 0,{sqrt:Ip}),rr=ou({a:BigInt(0),b:BigInt(7),Fp:ra,n:au,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=au,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-_p*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=cu(i*r,e),c=cu(-n*r,e),h=X(r-a*t-c*s,e),f=X(-a*n-c*i,e),u=h>o,g=f>o;if(u&&(h=e-h),g&&(f=e-f),h>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:h,k2neg:g,k2:f}}}},xr),yb=BigInt(0);var bb=rr.ProjectivePoint;function Fe(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=De(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function uu(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function fu(r,e,t){let n=br.digest(t instanceof Uint8Array?t:t.subarray());if(uu(n))return n.then(({digest:s})=>rr.verify(e,s,r)).catch(s=>{throw new an(String(s))});try{return rr.verify(e,n.digest,r)}catch(s){throw new an(String(s))}}var Ps=class{type="secp256k1";raw;_key;constructor(e){this._key=du(e),this.raw=hu(this._key)}toMultihash(){return dt.digest(Dt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return Q.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}verify(e,t){return fu(this._key,t,e)}};function na(r){return new Ps(r)}function hu(r){return rr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function du(r){try{return rr.ProjectivePoint.fromHex(r),r}catch(e){throw new ar(String(e))}}function pu(r){let{Type:e,Data:t}=it.decode(r),n=t??new Uint8Array;switch(e){case he.RSA:return Qo(n);case he.Ed25519:return fo(n);case he.secp256k1:return na(n);default:throw new cr}}function mu(r){let{Type:e,Data:t}=it.decode(r.digest),n=t??new Uint8Array;switch(e){case he.Ed25519:return fo(n);case he.secp256k1:return na(n);default:throw new cr}}function Dt(r){return it.encode({Type:he[r.type],Data:r.raw})}var gu=Symbol.for("nodejs.util.inspect.custom"),Tp=114,un=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()})`}[Oi]=!0;toString(){return this.string==null&&(this.string=Q.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return me.createV1(Tp,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ge(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ge(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[gu](){return`PeerId(${this.toString()})`}},Vs=class extends un{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Hs=class extends un{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Fs=class extends un{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},kp=2336,Ks=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=dt.digest(G(this.url))}[gu](){return`PeerId(${this.url})`}[Oi]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return me.createV1(kp,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=le(e)),e.toString()===this.toString())}};function sa(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ze(Q.decode(`z${r}`));else{if(e==null)throw new Ee('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ze(e.decode(r))}return fn(t)}function fn(r){if(Np(r))return new Vs({multihash:r});if(Cp(r))try{let e=mu(r);if(e.type==="Ed25519")return new Hs({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Fs({multihash:r,publicKey:e})}catch{let t=le(r.digest);return new Ks(new URL(t))}throw new _n("Supplied PeerID Multihash is invalid")}function Cp(r){return r.code===dt.code}function Np(r){return r.code===br.code}var bu=Symbol.for("@achingbrain/uint8arraylist");function yu(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function qs(r){return!!r?.[bu]}var et=class r{bufs;length;[bu]=!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(qs(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(qs(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=yu(this.bufs,e);return t.buf[t.index]}set(e,t){let n=yu(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(qs(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:s}=this._subList(e,t);return Fe(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Fe(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_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=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let h=e>=a&&e<c,f=t>a&&t<=c;if(h&&f){if(e===a&&t===c){n.push(o);break}let u=e-a;n.push(o.subarray(u,u+(t-e)));break}if(h){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!qs(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 s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let u=0;u<i;u++)o[u]=-1;for(let u=0;u<s;u++)o[n[u]]=u;let a=o,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let g=h;g>=0;g--){let l=this.get(u+g);if(n[g]!==l){f=Math.max(1,g-a[l]);break}}if(f===0)return u}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=De(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 s=oe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,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=De(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 s=oe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,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(!ge(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((s,i)=>s+i.byteLength,0)),n.length=t,n}};var hn;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={publicKey:oe(0),payloadType:oe(0),payload:oe(0),signature:oe(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.publicKey=t.bytes();break}case 2:{i.payloadType=t.bytes();break}case 3:{i.payload=t.bytes();break}case 5:{i.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(hn||(hn={}));var zs=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var dn=class r{static createFromProtobuf=async e=>{let t=hn.decode(e),n=pu(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,i=e.marshal(),o=wu(n,s,i),a=await t.sign(o.subarray());return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new zs("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:s,signature:i}=e;this.publicKey=t,this.payloadType=n,this.payload=s,this.signature=i}marshal(){return this.marshaled==null&&(this.marshaled=hn.encode({publicKey:Dt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ge(this.marshal(),e.marshal())}async validate(e){let t=wu(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},wu=(r,e,t)=>{let n=G(r),s=$e(n.byteLength),i=$e(e.length),o=$e(t.length);return new et(s,n,i,e,o,t)};var $s=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let g=Number.parseInt(u,e);if(!Number.isNaN(g))return g});if(f===void 0)break;if(i*=e,i+=f,i>h||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var xu=45,Rp=15,Ir=new $s;function ia(r){if(!(r.length>Rp))return Ir.new(r).parseWith(()=>Ir.readIPv4Addr())}function oa(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>xu))return Ir.new(r).parseWith(()=>Ir.readIPv6Addr())}function Gs(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>xu))return Ir.new(r).parseWith(()=>Ir.readIPAddr())}var jw=parseInt("0xFFFF",16),Yw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Ws(r){return!!ia(r)}function Zs(r){return!!oa(r)}function js(r){return!!Gs(r)}var Su=Ws,Mp=Zs,aa=function(r){let e=0;if(r=r.toString().trim(),Su(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Mp(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=Su(t[n]),o;i&&(o=aa(t[n]),t[n]=le(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,le(o.slice(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 i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},Au=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Tr={},ca={},Vp=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Vp.forEach(r=>{let e=Hp(...r);ca[e.code]=e,Tr[e.name]=e});function Hp(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function ee(r){if(typeof r=="number"){if(ca[r]!=null)return ca[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Tr[r]!=null)return Tr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Lx=ee("ip4"),Ux=ee("ip6"),Dx=ee("ipcidr");function ha(r,e){switch(ee(r).code){case 4:case 41:return Kp(e);case 42:return fa(e);case 6:case 273:case 33:case 132:return Iu(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return fa(e);case 421:return Gp(e);case 444:return _u(e);case 445:return _u(e);case 466:return $p(e);case 481:return globalThis.encodeURIComponent(fa(e));default:return le(e,"base16")}}function da(r,e){switch(ee(r).code){case 4:return Bu(e);case 41:return Bu(e);case 42:return ua(e);case 6:case 273:case 33:case 132:return pa(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ua(e);case 421:return qp(e);case 444:return Wp(e);case 445:return Zp(e);case 466:return zp(e);case 481:return ua(globalThis.decodeURIComponent(e));default:return G(e,"base16")}}var la=Object.values(Zr).map(r=>r.decoder),Fp=function(){let r=la[0].or(la[1]);return la.slice(2).forEach(e=>r=r.or(e)),r}();function Bu(r){if(!js(r))throw new Error("invalid ip address");return aa(r)}function Kp(r){let e=Au(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!js(e))throw new Error("invalid ip address");return e}function pa(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Iu(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function ua(r){let e=G(r),t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function fa(r){let e=bt(r);if(r=r.slice(Ae(e)),r.length!==e)throw new Error("inconsistent lengths");return le(r)}function qp(r){let e;r[0]==="Q"||r[0]==="1"?e=ze(Q.decode(`z${r}`)).bytes:e=me.parse(r).multihash.bytes;let t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function zp(r){let e=Fp.decode(r),t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function $p(r){let e=bt(r),t=r.slice(Ae(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+le(t,"base64url")}function Gp(r){let e=bt(r),t=r.slice(Ae(e));if(t.length!==e)throw new Error("inconsistent lengths");return le(t,"base58btc")}function Wp(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=ht.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 s=pa(n);return Fe([t,s],t.length+s.length)}function Zp(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=ht.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 s=pa(n);return Fe([t,s],t.length+s.length)}function _u(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=le(e,"base32"),s=Iu(t);return`${n}:${s}`}function Tu(r){r=ma(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=ee(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw Cu("invalid address: "+r);if(a.path===!0){n=ma(s.slice(i).join("/")),e.push([a.code,da(a.code,n)]),t.push([a.code,n]);break}let c=da(a.code,s[i]);e.push([a.code,c]),t.push([a.code,ha(a.code,c)])}return{string:ku(t),bytes:ya(e),tuples:e,stringTuples:t,path:n}}function ga(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=bt(r,s),o=Ae(i),a=ee(i),c=jp(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let h=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw Cu("Invalid address Uint8Array: "+le(r,"base16"));e.push([i,h]);let f=ha(i,h);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:ku(t),tuples:e,stringTuples:t,path:n}}function ku(r){let e=[];return r.map(t=>{let n=ee(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),ma(e.join("/"))}function ya(r){return Fe(r.map(e=>{let t=ee(e[0]),n=Uint8Array.from($e(t.code));return e.length>1&&e[1]!=null&&(n=Fe([n,e[1]])),n}))}function jp(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=bt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Ae(t)}}function ma(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function Cu(r){return new Error("Error parsing address: "+r)}var Yp=Symbol.for("nodejs.util.inspect.custom"),wa=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Xp=[ee("dns").code,ee("dns4").code,ee("dns6").code,ee("dnsaddr").code],ba=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ys=class r{bytes;#e;#t;#r;#n;[wa]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=ga(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=Tu(e)}else if(Ru(e))t=ga(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#n=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=ee("tcp"),a=ee("udp"),c=ee("ip4"),h=ee("ip6"),f=ee("dns6"),u=ee("ip6zone");for(let[l,d]of this.stringTuples())l===u.code&&(i=`%${d??""}`),Xp.includes(l)&&(t=o.name,s=443,n=`${d??""}${i}`,e=l===f.code?6:4),(l===o.code||l===a.code)&&(t=ee(l).name,s=parseInt(d??"")),(l===c.code||l===h.code)&&(t=ee(l).name,n=`${d??""}${i}`,e=l===h.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},ee(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ee(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(ya(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===Tr.p2p.code&&e.push([n,s]),n===Tr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?le(Q.decode(`z${n}`),"base58btc"):le(me.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return ge(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=Nu.get(t.name);if(n==null)throw new ba(`no available resolver for ${t.name}`);return(await n(this,e)).map(i=>ve(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[Yp](){return`Multiaddr(${this.#e})`}};var Nu=new Map;function Ru(r){return!!r?.[wa]}function ve(r){return new Ys(r)}function tt(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Xs=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 Js(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Xs(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new Xs(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var xa=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=tt(),this.haveNext=tt()}[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=tt(),e}async throw(e){return this.ended=!0,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 await this._push(void 0),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 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=tt(),await Js(this.readNext.promise,t?.signal,t)}};function Lu(){return new xa}var Qs=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var va=class extends Error{code;constructor(e,t){super(e),this.code=t}},Ea=class extends va{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Uu(r,e){let t=Lu();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new et;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,u)=>{c=()=>{u(new Ea("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:u,value:g}=await Promise.race([n.next(),h]);return u===!0?new et:g}for(;s.byteLength<o;){let{value:u,done:g}=await Promise.race([n.next(),h]);if(g===!0)throw new Qs("unexpected end of input");s.append(u)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var ei=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},ti=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ri=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Du(r,e={}){let t=Uu(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Ae(e.maxDataLength));let n=e?.lengthDecoder??bt,s=e?.lengthEncoder??$e;return{read:async o=>{let a=-1,c=new et;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(a<0)throw new ei("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ri("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new ti("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new et(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new et(...o.flatMap(h=>[s(h.byteLength),h]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Kt(r,e){let t=Du(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Sa=1e3,Ou=60*Sa,ni=290,Mu=15,Pu=2*60*Ou,Vu=1,si=2e3,Hu=100,Aa="circuit-relay-source",pn=`${Mi}-circuit-relay`,Ba=`${Mi}-circuit-relay-source`,Fu=2*Ou,Ku=BigInt(1<<17),We="/libp2p/circuit/relay/0.2.0/hop",nr="/libp2p/circuit/relay/0.2.0/stop",qu=30*Sa,B1=30*Sa,mn=300,zu=4096,$u=.001;var j;(function(r){let e;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(t||(t={})),function(s){s.codec=()=>er(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Pe((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),kr.codec().encode(s.peer,i)),s.reservation!=null&&(i.uint32(26),ii.codec().encode(s.reservation,i)),s.limit!=null&&(i.uint32(34),Cr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(40),H.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.reservation=ii.codec().decode(s,s.uint32(),{limits:o.limits?.reservation});break}case 4:{a.limit=Cr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 5:{a.status=H.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Me(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(j||(j={}));var Ke;(function(r){let e;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(t||(t={})),function(s){s.codec=()=>er(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Pe((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),kr.codec().encode(s.peer,i)),s.limit!=null&&(i.uint32(26),Cr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(32),H.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.limit=Cr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 4:{a.status=H.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Me(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(Ke||(Ke={}));var kr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={id:oe(0),addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.id=t.bytes();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new Xr('Decode error - map field "addrs" had too many elements');i.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(kr||(kr={}));var ii;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);t.voucher!=null&&(n.uint32(26),oi.codec().encode(t.voucher,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={expire:0n,addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.expire=t.uint64();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new Xr('Decode error - map field "addrs" had too many elements');i.addrs.push(t.bytes());break}case 3:{i.voucher=oi.codec().decode(t,t.uint32(),{limits:s.limits?.voucher});break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(ii||(ii={}));var Cr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.duration=t.uint32();break}case 2:{i.data=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Cr||(Cr={}));var H;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(H||(H={}));var _a;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(_a||(_a={}));(function(r){r.codec=()=>er(_a)})(H||(H={}));var Nr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={relay:oe(0),peer:oe(0),expiration:0n},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.relay=t.bytes();break}case 2:{i.peer=t.bytes();break}case 3:{i.expiration=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Nr||(Nr={}));var oi;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&(n.uint32(26),Nr.codec().encode(t.payload,n)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={publicKey:oe(0),payloadType:oe(0),signature:oe(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.publicKey=t.bytes();break}case 2:{i.payloadType=t.bytes();break}case 3:{i.payload=Nr.codec().decode(t,t.uint32(),{limits:s.limits?.payload});break}case 5:{i.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(oi||(oi={}));var Jp=r=>r.toString().split("/").slice(1),Rr=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),V=r=>({match:e=>Rr(t=>t===r).match(e),pattern:r}),sr=()=>({match:r=>Rr(e=>typeof e=="string").match(r),pattern:"{string}"}),gn=()=>({match:r=>Rr(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),J=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Q.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),yn=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{To.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),W=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Ie=(...r)=>({match:e=>{let t;for(let n of r){let s=n.match(e);s!==!1&&(t==null||s.length<t.length)&&(t=s)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),F=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function re(...r){function e(s){let i=Jp(s);for(let o of r){let a=o.match(i);if(a===!1)return!1;i=a}return i}function t(s){return e(s)!==!1}function n(s){let i=e(s);return i===!1?!1:i.length===0}return{matchers:r,matches:t,exactMatch:n}}var ci=F(V("dns4"),sr()),li=F(V("dns6"),sr()),ui=F(V("dnsaddr"),sr()),Ta=F(V("dns"),sr()),D1=re(ci,W(J())),O1=re(li,W(J())),M1=re(ui,W(J())),P1=re(Ie(Ta,ui,ci,li),W(J())),Gu=F(V("ip4"),Rr(Ws)),Wu=F(V("ip6"),Rr(Zs)),ka=Ie(Gu,Wu),It=Ie(ka,Ta,ci,li,ui),V1=re(Ie(ka,F(Ie(Ta,ui,ci,li),W(J())))),H1=re(Gu),F1=re(Wu),K1=re(ka),Ca=F(It,V("tcp"),gn()),bn=F(It,V("udp"),gn()),q1=re(F(Ca,W(J()))),z1=re(bn),Na=F(bn,V("quic"),W(J())),fi=F(bn,V("quic-v1"),W(J())),Qp=Ie(Na,fi),$1=re(Na),G1=re(fi),Ia=Ie(It,Ca,bn,Na,fi),Zu=Ie(F(Ia,V("ws"),W(J()))),W1=re(Zu),ju=Ie(F(Ia,V("wss"),W(J())),F(Ia,V("tls"),W(F(V("sni"),sr())),V("ws"),W(J()))),Z1=re(ju),Yu=F(bn,V("webrtc-direct"),W(yn()),W(yn()),W(J())),j1=re(Yu),Xu=F(fi,V("webtransport"),W(yn()),W(yn()),W(J())),Y1=re(Xu),ai=Ie(Zu,ju,F(Ca,W(J())),F(Qp,W(J())),F(It,W(J())),Yu,Xu,J()),Ju=re(ai),e0=F(ai,V("p2p-circuit"),J()),hi=re(e0),t0=Ie(F(ai,V("p2p-circuit"),V("webrtc"),W(J())),F(ai,V("webrtc"),W(J())),F(V("webrtc"),W(J()))),X1=re(t0),r0=Ie(F(It,V("tcp"),gn(),V("http"),W(J())),F(It,V("http"),W(J()))),J1=re(r0),n0=Ie(F(It,V("tcp"),Ie(F(V("443"),V("http")),F(gn(),V("https"))),W(J())),F(It,V("tls"),V("http"),W(J())),F(It,V("https"),W(J()))),Q1=re(n0),s0=Ie(F(V("memory"),sr(),W(J()))),ev=re(s0);function di(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}var pi=class extends Error{constructor(e="Transfer limit error"){super(e),this.name="TransferLimitError"}},wn=class extends Error{constructor(e="Duration limit error"){super(e),this.name="DurationLimitError"}},xn=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},mi=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},gi=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};async function*Qu(r,e,t){let n=e.remaining;for await(let s of r){let i=BigInt(s.byteLength);if(e.remaining-i<0){let o=Number(e.remaining);e.remaining=0n;try{o!==0&&(yield s.subarray(0,o))}catch(a){t.log.error(a)}throw new pi(`data limit of ${n} bytes exceeded`)}e.remaining-=i,yield s}}function ef(r,e,t,n,s){function i(u){r.abort(u),e.abort(u)}let o=[t,n.signal];n.limit?.duration!=null&&(s.log("limiting relayed connection duration to %dms",n.limit.duration),o.push(AbortSignal.timeout(n.limit.duration)));let a=di(o),c=!1,h=!1,f;n.limit?.data!=null&&(f={remaining:n.limit.data}),queueMicrotask(()=>{let u=()=>{s.log("relayed connection reached time limit"),e.abort(new wn(`duration limit of ${n.limit?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),e.sink(f==null?r.source:Qu(r.source,f,s)).catch(g=>{s.log.error("error while relaying streams src -> dst",g),i(g)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",u),a.clear())})}),queueMicrotask(()=>{let u=()=>{s.log("relayed connection reached time limit"),r.abort(new wn(`duration limit of ${n.limit?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),r.sink(f==null?e.source:Qu(e.source,f,s)).catch(g=>{s.log.error("error while relaying streams dst -> src",g),i(g)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",u),a.clear())})})}function Ra(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var vn=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},yi=re(F(Ju.matchers[0],V("p2p-circuit"))),bi=re(V("p2p-circuit"));function wi(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var qt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return wi(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return wi(this.map.values(),e=>e.key)}values(){return wi(this.map.values(),e=>e.value)}get size(){return this.map.size}};var La=64,rt=class{fp;h;seed;constructor(e,t,n,s=2){if(s>La)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=oe(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ge(this.fp,e.fp):!1}};function ir(r,e){return Math.floor(Math.random()*(e-r))+r}var or=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=ir(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var Ua={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},sf={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},of=new globalThis.TextEncoder;function i0(r,e){let t=Ua[e],n=sf[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function o0(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=Ua[e],s=sf[e],i=r;for(;i.length>0;){let o=of.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function Da(r,{size:e=32,utf8Buffer:t}={}){if(!Ua[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return o0(r,e,t);r=of.encode(r)}return i0(r,e)}var a0=tc(nf(),1);var Sn={hash:r=>Number(Da(r,{size:32})),hashV:(r,e)=>c0(Sn.hash(r,e))};function c0(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),G(e,"base16")}var l0=500,An=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Sn,this.seed=e.seed??ir(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new or(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new or(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ir(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new or(this.bucketSize));for(let a=0;a<l0;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new or(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},u0={1:.5,2:.84,4:.95,8:.98};function f0(r=.001){return r>.002?2:r>1e-5?4:8}function af(r,e=.001){let t=f0(e),n=u0[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),La);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var vi=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Sn,this.seed=e.seed??ir(0,Math.pow(2,10)),this.filterSeries=[new An({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=G(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new An({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=G(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=G(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Lr(r,e=.001,t){return new vi({...af(r,e),...t??{}})}var Ei=class{filter;constructor(e,t){this.filter=Lr(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function Oa(r,e=.001){return new Ei(r,e)}var Ma=class extends qt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Pa(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Ma({name:e,metrics:t}):n=new qt,n}var Va=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"}};function cf(r,e){let t=new Va(e?.errorMessage,e?.errorCode,e?.errorName),n=new AbortController,s=()=>{n.abort(t)},i=AbortSignal.timeout(r);i.addEventListener("abort",s);let o=n.signal;return o.reset=a=>{i?.removeEventListener("abort",s),i=AbortSignal.timeout(a??r),i.addEventListener("abort",()=>{n.abort(t)})},o.clear=()=>{i?.removeEventListener("abort",s),i=void 0},o}var Si=class{reservations;maxReservations;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:circuit-relay:server:reservation-store"),this.maxReservations=t.maxReservations??Mu,this.applyDefaultLimit=t.applyDefaultLimit!==!1,this.reservationTtl=t.reservationTtl??Pu,this.defaultDurationLimit=t.defaultDurationLimit??Fu,this.defaultDataLimit=t.defaultDataLimit??Ku,this.reservations=Pa({metrics:e.metrics,name:"libp2p_circuit_relay_server_reservations_total"})}reserve(e,t,n){let s=this.reservations.get(e);if(this.reservations.size>=this.maxReservations&&s==null)return{status:H.RESERVATION_REFUSED};let i=new Date(Date.now()+this.reservationTtl),o;return this.applyDefaultLimit&&(o=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),s!=null?(this.log("refreshing reservation for client %p",e),s.signal.reset(this.reservationTtl)):(this.log("creating new reservation for client %p",e),s={addr:t,expiry:i,limit:o,signal:cf(this.reservationTtl)}),this.reservations.set(e,s),s.signal.addEventListener("abort",()=>{this.reservations.delete(e)}),{status:H.OK,expire:Math.round(i.getTime()/1e3)}}removeReservation(e){this.reservations.delete(e)}get(e){return this.reservations.get(e)}clear(){this.reservations.clear()}};var Ai=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:e,peer:t,expiration:n}){this.relay=e,this.peer=t,this.expiration=n}marshal(){return Nr.encode({relay:this.relay.toMultihash().bytes,peer:this.peer.toMultihash().bytes,expiration:BigInt(this.expiration)})}equals(e){return!(!(e instanceof r)||!this.peer.equals(e.peer)||!this.relay.equals(e.relay)||this.expiration!==e.expiration)}};var lf=r=>r.protoCodes().includes(ni),h0={maxOutboundStopStreams:mn},Ha=class extends qe{registrar;peerStore;addressManager;peerId;privateKey;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.addressManager=e.addressManager,this.peerId=e.peerId,this.privateKey=e.privateKey,this.connectionManager=e.connectionManager,this.connectionGater=e.connectionGater,this.started=!1,this.hopTimeout=t?.hopTimeout??qu,this.maxInboundHopStreams=t.maxInboundHopStreams,this.maxOutboundHopStreams=t.maxOutboundHopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??h0.maxOutboundStopStreams,this.reservationStore=new Si(e,t.reservations),this.shutdownController=new AbortController,Re(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(We,e=>{this.onHop(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnLimitedConnection:!0}),this.started=!0)}async stop(){this.reservationStore.clear(),this.shutdownController.abort(),await this.registrar.unhandle(We),this.started=!1}async onHop({connection:e,stream:t}){this.log("received circuit v2 hop protocol stream from %p",e.remotePeer);let n={signal:AbortSignal.timeout(this.hopTimeout)},s=Kt(t);try{let i=await s.pb(j).read(n);if(i?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",i.type),await this.handleHopProtocol({connection:e,stream:s,request:i},n)}catch(i){this.log.error("error while handling hop",i),await s.pb(j).write({type:j.Type.STATUS,status:H.MALFORMED_MESSAGE},n),t.abort(i)}}async handleHopProtocol({stream:e,request:t,connection:n},s){switch(this.log("received hop message"),t.type){case j.Type.RESERVE:await this.handleReserve({stream:e,request:t,connection:n},s);break;case j.Type.CONNECT:await this.handleConnect({stream:e,request:t,connection:n},s);break;default:this.log.error("invalid hop request type %s via peer %p",t.type,n.remotePeer),await e.pb(j).write({type:j.Type.STATUS,status:H.UNEXPECTED_MESSAGE})}}async handleReserve({stream:e,connection:t},n){let s=e.pb(j);if(this.log("hop reserve request from %p",t.remotePeer),lf(t.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",t.remotePeer),await s.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},n);return}if(await this.connectionGater.denyInboundRelayReservation?.(t.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",t.remotePeer),await s.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},n);return}let i=this.reservationStore.reserve(t.remotePeer,t.remoteAddr);try{if(i.status!==H.OK){await s.write({type:j.Type.STATUS,status:i.status},n);return}if(i.expire!=null){let o=i.expire*1e3-Date.now();await this.peerStore.merge(t.remotePeer,{tags:{[Aa]:{value:1,ttl:o},[Ba]:{value:1,ttl:o}}})}await s.write({type:j.Type.STATUS,status:H.OK,reservation:await this.makeReservation(t.remotePeer,BigInt(i.expire??0)),limit:this.reservationStore.get(t.remotePeer)?.limit},n),this.log("sent confirmation response to %s",t.remotePeer)}catch(o){this.log.error("failed to send confirmation response to %p - %e",t.remotePeer,o),this.reservationStore.removeReservation(t.remotePeer);try{await this.peerStore.merge(t.remotePeer,{tags:{[Aa]:void 0,[Ba]:void 0}})}catch(a){this.log.error("failed to untag relay source peer %p - %e",t.remotePeer,a)}}}async makeReservation(e,t){let n=[];for(let i of this.addressManager.getAddresses())i.toString().includes("/p2p-circuit")||n.push(i.bytes);let s=await dn.seal(new Ai({peer:e,relay:this.peerId,expiration:t}),this.privateKey);return{addrs:n,expire:t,voucher:{publicKey:Dt(s.publicKey),payloadType:s.payloadType,payload:{peer:e.toMultihash().bytes,relay:this.peerId.toMultihash().bytes,expiration:t},signature:s.signature}}}async handleConnect({stream:e,request:t,connection:n},s){let i=e.pb(j);if(lf(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await i.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},s);return}this.log("hop connect request from %p",n.remotePeer);let o;try{if(t.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");t.peer.addrs.forEach(ve),o=fn(ze(t.peer.id))}catch(g){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,g),await i.write({type:j.Type.STATUS,status:H.MALFORMED_MESSAGE},s);return}let a=this.reservationStore.get(o);if(a==null){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",o,n.remotePeer,H.NO_RESERVATION),await i.write({type:j.Type.STATUS,status:H.NO_RESERVATION},s);return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,o)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,o),await i.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},s);return}let c=this.connectionManager.getConnections(o);if(c.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",o,n.remotePeer),await i.write({type:j.Type.STATUS,status:H.NO_RESERVATION},s);return}let h=c[0],f=await this.stopHop({connection:h,request:{type:Ke.Type.CONNECT,peer:{id:n.remotePeer.toMultihash().bytes,addrs:[]},limit:a?.limit}},s);if(f==null){this.log.error("failed to open stream to destination peer %p",h?.remotePeer),await i.write({type:j.Type.STATUS,status:H.CONNECTION_FAILED},s);return}await i.write({type:j.Type.STATUS,status:H.OK,limit:a?.limit},s);let u=e.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,o),ef(u,f,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:e,request:t},n){this.log("starting circuit relay v2 stop request to %s",e.remotePeer);let s=await e.newStream([nr],{maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0,...n}),i=Kt(s),o=i.pb(Ke);await o.write(t,n);let a;try{a=await o.read(n)}catch{this.log.error("error parsing stop message response from %p",e.remotePeer)}if(a==null){this.log.error("could not read response from %p",e.remotePeer),await s.close(n);return}if(a.status===H.OK)return this.log("stop request to %p was successful",e.remotePeer),i.unwrap();this.log("stop request failed with code %d",a.status),await s.close(n)}get reservations(){return this.reservationStore.reservations}};function uf(r={}){return e=>new Ha(e,r)}function d0(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ff=d0;function p0(r){return r[Symbol.asyncIterator]!=null}function hf(r){return r?.then!=null}function m0(r,e){let t=0;if(p0(r))return async function*(){for await(let c of r){let h=e(c,t++);hf(h)&&await h,yield c}}();let n=ff(r),{value:s,done:i}=n.next();if(i===!0)return function*(){}();if(typeof e(s,t++)?.then=="function")return async function*(){yield s;for await(let c of n){let h=e(c,t++);hf(h)&&await h,yield c}}();let a=e;return function*(){yield s;for(let c of n)a(c,t++),yield c}()}var df=m0;var Bi=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)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}},Ur=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Bi(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 Bi(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 Fa=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Dr(r={}){return g0(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 g0(r,e){e=e??{};let t=e.onEnd,n=new Ur,s,i,o,a=tt(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((y,b)=>{i=w=>{i=null,n.push(w);try{y(r(n))}catch(m){b(m)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=tt()})}},h=y=>i!=null?i(y):(n.push(y),s),f=y=>(n=new Ur,i!=null?i({error:y}):(n.push({error:y}),s)),u=y=>{if(o)return s;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:y})},g=y=>o?s:(o=!0,y!=null?f(y):h({done:!0})),l=()=>(n=new Ur,g(),{done:!0}),d=y=>(g(y),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:l,throw:d,push:u,end:g,get readableLength(){return n.size},onEmpty:async y=>{let b=y?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let w,m;b!=null&&(w=new Promise((v,A)=>{m=()=>{A(new Fa)},b.addEventListener("abort",m)}));try{await Promise.race([a.promise,w])}finally{m!=null&&b!=null&&b?.removeEventListener("abort",m)}}},t==null)return s;let p=s;return s={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),s},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},s}function y0(r){return r[Symbol.asyncIterator]!=null}function b0(...r){let e=[];for(let t of r)y0(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Dr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var pf=b0;function mf(r,...e){if(r==null)throw new Error("Empty pipeline");if(Ka(r)){let n=r;r=()=>n.source}else if(yf(r)||gf(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Ka(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++)Ka(t[n])&&(t[n]=x0(t[n]));return w0(...t)}var w0=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},gf=r=>r?.[Symbol.asyncIterator]!=null,yf=r=>r?.[Symbol.iterator]!=null,Ka=r=>r==null?!1:r.sink!=null&&r.source!=null,x0=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Dr({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(gf(i))s=async function*(){yield*i,n.end()};else if(yf(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return pf(n,s())}return r.source};function qa(r){let{stream:e,remoteAddr:t,logger:n,onDataRead:s,onDataWrite:i}=r,o=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,h=e.close.bind(e);e.close=async d=>{await h(d),l(!0)};let f=e.abort.bind(e);e.abort=d=>{f(d),l(!0)};let u=e.sink.bind(e);e.sink=async d=>{try{await u(mf(d,p=>df(p,y=>i?.(y))))}catch(p){p.type!=="aborted"&&o.error("%s error in sink",t,p)}finally{c=!0,l()}};let g={log:o,sink:e.sink,source:async function*(){try{for await(let d of e.source)s?.(d),yield d}finally{a=!0,l()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function l(d){d===!0&&(a=!0,c=!0),a&&c&&g.timeline.close==null&&(g.timeline.close=Date.now())}return g}var zt=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var za=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function _i(r,e,t,n){let s=new za(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(g){a(),o(g);return}a(),i(u)},h=u=>{a(),o(u.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var Ii=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var Ti=class{deferred;signal;constructor(e){this.signal=e,this.deferred=tt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ut)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function v0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ki=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=v0(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Re(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ut),this.cleanup())}async join(e={}){let t=new Ti(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Js(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var Ci=class extends qe{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Ii;let n=new ki(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ut)}),this.clear()}async onEmpty(e){this.size!==0&&await _i(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await _i(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await _i(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Dr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new ut("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Or=class extends Ci{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Ni=class extends qe{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,Re(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(We,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,Re(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(We)],orders:[()=>Math.random()<.5?1:-1,(n,s)=>{let i=bf(n),o=bf(s);return i>o?-1:o>i?1:0}]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=this.queue=new Or({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(async()=>{let s=di([this.discoveryController.signal,AbortSignal.timeout(5e3)]);Re(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};function bf(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(le(e)).getTime()}var $a=class extends qe{connectionManager;reservationStore;discovery;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.reservationStore=e.relayStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??si,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{relay:t,details:n}=e.detail;n.type!=="configured"&&n.id===this.reservationId&&(this.log("relay peer added %p",t),this.relay=t,this.listeningAddrs=n.reservation.addrs.map(s=>ve(s).encapsulate("/p2p-circuit")),this.safeDispatchEvent("listening"))};async listen(e){if(this.log("listen on %a",e),bi.exactMatch(e))this.reservationId=this.reservationStore.reserveRelay();else if(yi.exactMatch(e)){let t=AbortSignal.timeout(this.listenTimeout);Re(1/0,t);let n=e.decapsulate("/p2p-circuit"),s=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(s.remotePeer)){this.log("making reservation on peer %p",s.remotePeer);let i=await this.reservationStore.addRelay(s.remotePeer,"configured");this.log("made reservation on peer %p",s.remotePeer),this.relay=i.relay,this.listeningAddrs=i.details.reservation.addrs.map(o=>ve(o).encapsulate("/p2p-circuit")),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}}else throw new $t(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};function wf(r){return new $a(r)}var xf="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var vf=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r));for(;r--;)e+=xf[t[r]&63];return e};var E0=60*1e3*10,S0=60*1e3*5,A0=30*1e3,Ri=class extends qe{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new qt,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??Hu,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??si,this.started=!1,this.relayFilter=Lr(100),this.reserveQueue=new Or({concurrency:t?.reservationConcurrency??Vu,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(i=>i.connection===n.detail.id)!=null&&this.#t(n.detail.remotePeer).catch(i=>{this.log("could not remove relay %p - %e",n.detail,i)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(pn)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[pn]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#r()}).catch(e=>{this.log.error(e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=vf();return this.pendingReservations.push(e),this.#r(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new $t("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new gi("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new $t("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let s=Date.now();try{let i=this.reservations.get(e);if(i!=null){let d=this.connectionManager.getConnections(e),p=!1;if(d.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),d.map(y=>y.id).includes(i.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),p=!0),p&&Ra(i.reservation.expire)>E0)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:i};await this.#t(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new xn("Not making reservation on discovered relay because we do not need any more relays");let o=AbortSignal.timeout(this.reservationCompletionTimeout);Re(1/0,o);let a=await this.connectionManager.openConnection(e,{signal:o});if(hi.matches(a.remoteAddr))throw new mi("not creating reservation over relayed connection");let c=await this.#e(a,{signal:o}),h=Ra(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+h).toString());let f=Math.min(Math.max(h-S0,A0),Math.pow(2,31)-1),u=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async d=>{this.log.error("could not refresh reservation to relay %p - %e",e,d),await this.#t(e)}).catch(d=>{this.log.error("could not remove expired reservation to relay %p - %e",e,d)})},f),g;if(t==="discovered"){let d=this.pendingReservations.pop();if(d==null)throw new xn("Made reservation on relay but did not need any more discovered relays");g={timeout:u,reservation:c,type:t,connection:a.id,id:d}}else g={timeout:u,reservation:c,type:t,connection:a.id};this.reservations.set(e,g),await this.peerStore.merge(e,{tags:{[pn]:{value:1,ttl:h}}}),this.#r();let l={relay:e,details:g};return this.safeDispatchEvent("relay:created-reservation",{detail:l}),l}catch(i){throw t==="discovered"&&i.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-s,i),(i.name==="DialError"||i.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#t(e).catch(o=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,o)}),i}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(We,t),i=Kt(n).pb(j);this.log.trace("send RESERVE to %p",e.remotePeer),await i.write({type:j.Type.RESERVE},t);let o;try{this.log.trace("reading response from %p",e.remotePeer),o=await i.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %o",o),o.status===H.OK&&o.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let h of o.reservation.addrs){let f=ve(h);f.getPeerId()==null&&(f=f.encapsulate(`/p2p/${e.remotePeer}`)),f=ve(f.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(f.toString())}return o.reservation.addrs=[...c].map(h=>ve(h).bytes),o.reservation}let a=`reservation failed with status ${o.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#t(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[pn]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#r())}#r(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Lr(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var B0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(ve)}catch{return!1}return!0},Ga={maxInboundStopStreams:mn,maxOutboundStopStreams:mn,stopTimeout:3e4},Li=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??Ga.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Ga.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Ga.stopTimeout,this.discovery=new Ni(e,{filter:t.discoveryFilter??Oa(zu,$u)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(s=>{s.name!=="HadEnoughRelaysError"&&s.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p",n.detail,s)})}),this.reservationStore=new Ri(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[ac]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[cc](){return this.discovery!=null?["@libp2p/identify"]:[]}[nc]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(nr,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await ic(this.discovery,this.reservationStore),this.started=!0}async stop(){await oc(this.discovery,this.reservationStore),await this.registrar.unhandle(nr),this.started=!1}async dial(e,t){if(e.protoCodes().filter(l=>l===ni).length!==1){let l="Invalid circuit relay address";throw this.log.error(l,e),new Vr(l)}let n=e.toString().split("/p2p-circuit"),s=ve(n[0]),i=ve(n[n.length-1]),o=s.getPeerId(),a=i.getPeerId();if(o==null||a==null){let l=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${l}`),new Vr(`C${l}`)}let c=sa(o),h=sa(a),u=this.connectionManager.getConnections(c)[0];u==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),t.onProgress?.(new zt("circuit-relay:open-connection")),u=await this.connectionManager.openConnection(c,t)):t.onProgress?.(new zt("circuit-relay:reuse-connection"));let g;try{t.onProgress?.(new zt("circuit-relay:open-hop-stream")),g=await u.newStream(We,t);let l=Kt(g),d=l.pb(j);t.onProgress?.(new zt("circuit-relay:write-connect-message")),await d.write({type:j.Type.CONNECT,peer:{id:h.toMultihash().bytes,addrs:[ve(i).bytes]}},t),t.onProgress?.(new zt("circuit-relay:read-connect-response"));let p=await d.read(t);if(p.status!==H.OK)throw new In(`failed to connect via relay with status ${p?.status?.toString()??"undefined"}`);let y=new vn(p.limit),b=qa({stream:l.unwrap(),remoteAddr:e,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:y.onData,onDataWrite:y.onData});return this.log("new outbound relayed connection %a",b.remoteAddr),await this.upgrader.upgradeOutbound(b,{...t,limits:y.getLimits()})}catch(l){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,l),g?.abort(l),l}}createListener(e){return wf({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>yi.exactMatch(t)||bi.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>hi.exactMatch(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(u){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",u)}let n=AbortSignal.timeout(this.stopTimeout),s=Kt(t).pb(Ke),i=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,i.type),i?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(i.type!==Ke.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!B0(i)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=fn(ze(i.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.OK},{signal:n});let a=new vn(i.limit),c=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),h=this.addressManager.getAddresses()[0],f=qa({stream:s.unwrap().unwrap(),remoteAddr:c,localAddr:h,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",f.remoteAddr),await this.upgrader.upgradeInbound(f,{limits:a.getLimits()}),this.log("%s connection %a upgraded","inbound",f.remoteAddr)}};function Ef(r={}){return e=>new Li(e,r)}return Of(_0);})();
6
+ `)}`:`${t} :`}};ml=Ht;k.Constructed=ml;Ht.NAME="CONSTRUCTED";var ts=class extends _e{fromBER(e,t,n){return t}toBER(e){return Qe}};ts.override="EndOfContentValueBlock";var gl,rs=class extends we{constructor(e={}){super(e,ts),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};gl=rs;k.EndOfContent=gl;rs.NAME=en;var yl,Er=class extends we{constructor(e={}){super(e,_e),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};yl=Er;k.Null=yl;Er.NAME="NULL";var ns=class extends At(_e){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=z.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=z.BufferSourceConverter.toUint8Array(e);return St(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Go.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};ns.NAME="BooleanValueBlock";var bl,ss=class extends we{constructor(e={}){super(e,ns),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};bl=ss;k.Boolean=bl;ss.NAME="BOOLEAN";var is=class extends At(ot){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ot.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===en){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==fl)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?ot.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};is.NAME="OctetStringValueBlock";var wl,os=class r extends we{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},is),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=Us(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Ht.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${z.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return z.BufferSourceConverter.concat(e)}};wl=os;k.OctetString=wl;os.NAME=fl;var as=class extends At(ot){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=ot.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===en){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==hl)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let h=a.valueBlock;if(this.unusedBits>0&&h.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=h.unusedBits}return s}let i=z.BufferSourceConverter.toUint8Array(e);if(!St(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=Us(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ot.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Qe;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};as.NAME="BitStringValueBlock";var xl,Sr=class extends we{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},as),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Ht.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};xl=Sr;k.BitString=xl;Sr.NAME=hl;var vl;function mp(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h=0,f=c<o?o:c,u=0;for(let g=f;g>=0;g--,u++){switch(!0){case u<a.length:h=i[o-u]+a[c-u]+t[0];break;default:h=i[o-u]+t[0]}switch(t[0]=h/10,!0){case u>=i.length:i=Zn(new Uint8Array([h%10]),i);break;default:i[o-u]=h%10}}return t[0]>0&&(i=Zn(t,i)),i}function ul(r){if(r>=Jr.length)for(let e=Jr.length;e<=r;e++){let t=new Uint8Array([0]),n=Jr[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=Zn(t,n)),Jr.push(n)}return Jr[r]}function gp(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h,f=0;for(let u=c;u>=0;u--,f++)switch(h=i[o-f]-a[c-f]-t,!0){case h<0:t=1,i[o-f]=h+10;break;default:t=0,i[o-f]=h}if(t>0)for(let u=o-c+1;u>=0;u--,f++)if(h=i[o-f]-t,h<0)t=1,i[o-f]=h+10;else{t=0,i[o-f]=h;break}return i.slice()}var tn=class extends At(_e){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Go.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(al(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let h=0;h<8;h++){if((s&1)===1)switch(n){case e:t=gp(ul(n),t),o="-";break;default:t=mp(t,ul(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=ll.charAt(t[c]));return a===!1&&(o+=ll.charAt(0)),o}};vl=tn;tn.NAME="IntegerValueBlock";Object.defineProperty(vl.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var El,xe=class r extends we{constructor(e={}){super(e,tn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return jn(),BigInt(this.valueBlock.toString())}static fromBigInt(e){jn();let t=BigInt(e),n=new Qr,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(z.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let h=BigInt(`0x${z.Convert.ToHex(a)}`)+t,f=z.BufferSourceConverter.toUint8Array(z.Convert.FromHex(h.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};El=xe;k.Integer=El;xe.NAME="INTEGER";var Sl,cs=class extends xe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Sl=cs;k.Enumerated=Sl;cs.NAME="ENUMERATED";var rn=class extends At(_e){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=z.BufferSourceConverter.toUint8Array(e);if(!St(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=tr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){jn();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Vt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Qe;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=z.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};rn.NAME="sidBlock";var ls=class extends _e{constructor({value:e=Br,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new rn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,Qe;t.push(s)}return Wo(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new rn;if(s>Number.MAX_SAFE_INTEGER){jn();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};ls.NAME="ObjectIdentifierValueBlock";var Al,Ar=class extends we{constructor(e={}){super(e,ls),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Al=Ar;k.ObjectIdentifier=Al;Ar.NAME="OBJECT IDENTIFIER";var nn=class extends At(xt){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=z.BufferSourceConverter.toUint8Array(e);if(!St(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=tr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Vt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Qe;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=z.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};nn.NAME="relativeSidBlock";var us=class extends _e{constructor({value:e=Br,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new nn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,Qe;n.push(i)}return Wo(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new nn;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};us.NAME="RelativeObjectIdentifierValueBlock";var Bl,fs=class extends we{constructor(e={}){super(e,us),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Bl=fs;k.RelativeObjectIdentifier=Bl;fs.NAME="RelativeObjectIdentifier";var _l,vt=class extends Ht{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};_l=vt;k.Sequence=_l;vt.NAME="SEQUENCE";var Il,hs=class extends Ht{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Il=hs;k.Set=Il;hs.NAME="SET";var ds=class extends At(_e){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Br}toJSON(){return{...super.toJSON(),value:this.value}}};ds.NAME="StringValueBlock";var ps=class extends ds{};ps.NAME="SimpleStringValueBlock";var Ce=class extends Jn{constructor({...e}={}){super(e,ps)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,z.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Ce.NAME="SIMPLE STRING";var ms=class extends Ce{fromBuffer(e){this.valueBlock.valueHexView=z.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=z.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=z.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(z.Convert.FromUtf8String(e)),this.valueBlock.value=e}};ms.NAME="Utf8StringValueBlock";var Tl,Et=class extends ms{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Tl=Et;k.Utf8String=Tl;Et.NAME="UTF8String";var gs=class extends Ce{fromBuffer(e){this.valueBlock.value=z.Convert.ToUtf16String(e),this.valueBlock.valueHexView=z.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(z.Convert.FromUtf16String(e))}};gs.NAME="BmpStringValueBlock";var kl,ys=class extends gs{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};kl=ys;k.BmpString=kl;ys.NAME="BMPString";var bs=class extends Ce{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=Vt(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};bs.NAME="UniversalStringValueBlock";var Cl,ws=class extends bs{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};Cl=ws;k.UniversalString=Cl;ws.NAME="UniversalString";var Nl,xs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Nl=xs;k.NumericString=Nl;xs.NAME="NumericString";var Rl,vs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};Rl=vs;k.PrintableString=Rl;vs.NAME="PrintableString";var Ll,Es=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Ll=Es;k.TeletexString=Ll;Es.NAME="TeletexString";var Ul,Ss=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Ul=Ss;k.VideotexString=Ul;Ss.NAME="VideotexString";var Dl,As=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};Dl=As;k.IA5String=Dl;As.NAME="IA5String";var Ol,Bs=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};Ol=Bs;k.GraphicString=Ol;Bs.NAME="GraphicString";var Ml,sn=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Ml=sn;k.VisibleString=Ml;sn.NAME="VisibleString";var Pl,_s=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Pl=_s;k.GeneralString=Pl;_s.NAME="GeneralString";var Vl,Is=class extends Ce{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Vl=Is;k.CharacterString=Vl;Is.NAME="CharacterString";var Hl,on=class extends sn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,z.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Ve(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Ve(this.month,2),t[2]=Ve(this.day,2),t[3]=Ve(this.hour,2),t[4]=Ve(this.minute,2),t[5]=Ve(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};Hl=on;k.UTCTime=Hl;on.NAME="UTCTime";var Fl,Ts=class extends on{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,g=n.indexOf("+"),l="";if(g===-1&&(g=n.indexOf("-"),u=-1),g!==-1){if(l=n.substring(g+1),n=n.substring(0,g),l.length!==2&&l.length!==4)throw new Error("Wrong input string for conversion");let d=parseInt(l.substring(0,2),10);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*d,l.length===4){if(d=parseInt(l.substring(2,4),10),isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");c=u*d}}}let h=n.indexOf(".");if(h===-1&&(h=n.indexOf(",")),h!==-1){let u=new Number(`0${n.substring(h)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");i=u.valueOf(),s=n.substring(0,h)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,h!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*i;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*i;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=1e3*i;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Ve(this.year,4)),t.push(Ve(this.month,2)),t.push(Ve(this.day,2)),t.push(Ve(this.hour,2)),t.push(Ve(this.minute,2)),t.push(Ve(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Ve(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Fl=Ts;k.GeneralizedTime=Fl;Ts.NAME="GeneralizedTime";var Kl,ks=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Kl=ks;k.DATE=Kl;ks.NAME="DATE";var ql,Cs=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};ql=Cs;k.TimeOfDay=ql;Cs.NAME="TimeOfDay";var zl,Ns=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};zl=Ns;k.DateTime=zl;Ns.NAME="DateTime";var $l,Rs=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};$l=Rs;k.Duration=$l;Rs.NAME="Duration";var Gl,Ls=class extends Et{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Gl=Ls;k.TIME=Gl;Ls.NAME="TIME";function le(r,e="utf8"){let t=qn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var an=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Ds=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var Wl={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Ds("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Ft=Wl;async function Zl(r){let e=await Ft.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await bp(e);return{privateKey:t[0],publicKey:t[1]}}async function jl(r,e){let t=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Ft.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Yl(r,e,t){let n=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Ft.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function bp(r){if(r.privateKey==null||r.publicKey==null)throw new Ee("Private and public key are required");return Promise.all([Ft.get().subtle.exportKey("jwk",r.privateKey),Ft.get().subtle.exportKey("jwk",r.publicKey)])}function Yo(r){if(r.kty!=="RSA")throw new Ee("invalid key type");if(r.n==null)throw new Ee("invalid key modulus");return G(r.n,"base64url").length*8}var _r=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=cn.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return me.createV1(114,this._multihash)}toString(){return Q.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}verify(e,t){return Yl(this._key,t,e)}},ln=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=cn.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}sign(e){return jl(this._key,e)}};var Os=8192,Xo=18;function Xl(r){let{result:e}=jo(r),t=e.valueBlock.value;return{n:at(t[1]),e:at(t[2]),d:at(t[3]),p:at(t[4]),q:at(t[5]),dp:at(t[6]),dq:at(t[7]),qi:at(t[8]),kty:"RSA",alg:"RS256"}}function wp(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new Ee("JWK was missing components");let t=new vt({value:[new xe({value:0}),xe.fromBigInt(ct(G(r.n,"base64url"))),xe.fromBigInt(ct(G(r.e,"base64url"))),xe.fromBigInt(ct(G(r.d,"base64url"))),xe.fromBigInt(ct(G(r.p,"base64url"))),xe.fromBigInt(ct(G(r.q,"base64url"))),xe.fromBigInt(ct(G(r.dp,"base64url"))),xe.fromBigInt(ct(G(r.dq,"base64url"))),xe.fromBigInt(ct(G(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Jl(r){let{result:e}=jo(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:at(t[0]),e:at(t[1])}}function Jo(r){if(r.n==null||r.e==null)throw new Ee("JWK was missing components");let t=new vt({value:[new vt({value:[new Ar({value:"1.2.840.113549.1.1.1"}),new Er]}),new Sr({valueHex:new vt({value:[xe.fromBigInt(ct(G(r.n,"base64url"))),xe.fromBigInt(ct(G(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function at(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return le(e,"base64url")}function ct(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function Ql(r){let e=Xl(r);return eu(e)}function Qo(r){let e=Jl(r);if(Yo(e)>Os)throw new ar("Key size is too large");let t=xr(it.encode({Type:he.RSA,Data:r})),n=Ze(Xo,t);return new _r(e,n)}function eu(r){if(Yo(r)>Os)throw new Ee("Key size is too large");let e=ru(r),t=xr(it.encode({Type:he.RSA,Data:Jo(e.publicKey)})),n=Ze(Xo,t);return new ln(e.privateKey,new _r(e.publicKey,n))}async function tu(r){if(r>Os)throw new Ee("Key size is too large");let e=await Zl(r),t=xr(it.encode({Type:he.RSA,Data:Jo(e.publicKey)})),n=Ze(Xo,t);return new ln(e.privateKey,new _r(e.publicKey,n))}function ru(r){if(r==null)throw new Ee("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var Ms=class extends mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Bc(e);let n=zr(t);if(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 s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?e.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=e.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(e){return pr(this),this.iHash.update(e),this}digestInto(e){pr(this),dr(e,this.outputLen),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||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=i,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ea=(r,e,t)=>new Ms(r,e).update(t).digest();ea.create=(r,e)=>new Ms(r,e);function nu(r){r.lowS!==void 0&&Ye("lowS",r.lowS),r.prehash!==void 0&&Ye("prehash",r.prehash)}function xp(r){let e=Wr(r);st(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:vp,hexToBytes:Ep}=Un,Bt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Bt;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,s=Wt(n);if(s.length/2&128)throw new t("tlv.encode: long form length too big");let i=n>127?Wt(s.length/2|128):"";return`${Wt(r)}${i}${s}${e}`},decode(r,e){let{Err:t}=Bt,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 s=e[n++],i=!!(s&128),o=0;if(!i)o=s;else{let c=s&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 h=e.subarray(n,n+c);if(h.length!==c)throw new t("tlv.decode: length bytes not complete");if(h[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let f of h)o=o<<8|f;if(n+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+o)}}},_int:{encode(r){let{Err:e}=Bt;if(r<_t)throw new e("integer: negative integers are not allowed");let t=Wt(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected assertion");return t},decode(r){let{Err:e}=Bt;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 vp(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Bt,s=typeof r=="string"?Ep(r):r;yr(s);let{v:i,l:o}=n.decode(48,s);if(o.length)throw new e("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,i),{v:h,l:f}=n.decode(2,c);if(f.length)throw new e("Invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(h)}},hexFromSig(r){let{_tlv:e,_int:t}=Bt,n=`${e.encode(2,t.encode(r.r))}${e.encode(2,t.encode(r.s))}`;return e.encode(48,n)}},_t=BigInt(0),ye=BigInt(1),ab=BigInt(2),su=BigInt(3),cb=BigInt(4);function Sp(r){let e=xp(r),{Fp:t}=e,n=Ut(e.n,e.nBitLength),s=e.toBytes||((p,y,b)=>{let w=y.toAffine();return yt(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),i=e.fromBytes||(p=>{let y=p.subarray(1),b=t.fromBytes(y.subarray(0,t.BYTES)),w=t.fromBytes(y.subarray(t.BYTES,2*t.BYTES));return{x:b,y:w}});function o(p){let{a:y,b}=e,w=t.sqr(p),m=t.mul(w,p);return t.add(t.add(m,t.mul(p,y)),b)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(p){return $r(p,ye,e.n)}function c(p){let{allowedPrivateKeyLengths:y,nByteLength:b,wrapPrivateKey:w,n:m}=e;if(y&&typeof p!="bigint"){if(Nt(p)&&(p=mt(p)),typeof p!="string"||!y.includes(p.length))throw new Error("Invalid key");p=p.padStart(b*2,"0")}let v;try{v=typeof p=="bigint"?p:gt(ce("private key",p,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof p}`)}return w&&(v=X(v,m)),Le("private key",v,ye,m),v}function h(p){if(!(p instanceof g))throw new Error("ProjectivePoint expected")}let f=Yt((p,y)=>{let{px:b,py:w,pz:m}=p;if(t.eql(m,t.ONE))return{x:b,y:w};let v=p.is0();y==null&&(y=v?t.ONE:t.inv(m));let A=t.mul(b,y),_=t.mul(w,y),x=t.mul(m,y);if(v)return{x:t.ZERO,y:t.ZERO};if(!t.eql(x,t.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),u=Yt(p=>{if(p.is0()){if(e.allowInfinityPoint&&!t.is0(p.py))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=p.toAffine();if(!t.isValid(y)||!t.isValid(b))throw new Error("bad point: x or y not FE");let w=t.sqr(b),m=o(y);if(!t.eql(w,m))throw new Error("bad point: equation left != right");if(!p.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class g{constructor(y,b,w){if(this.px=y,this.py=b,this.pz=w,y==null||!t.isValid(y))throw new Error("x required");if(b==null||!t.isValid(b))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required");Object.freeze(this)}static fromAffine(y){let{x:b,y:w}=y||{};if(!y||!t.isValid(b)||!t.isValid(w))throw new Error("invalid affine point");if(y instanceof g)throw new Error("projective point not allowed");let m=v=>t.eql(v,t.ZERO);return m(b)&&m(w)?g.ZERO:new g(b,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(y){let b=t.invertBatch(y.map(w=>w.pz));return y.map((w,m)=>w.toAffine(b[m])).map(g.fromAffine)}static fromHex(y){let b=g.fromAffine(i(ce("pointHex",y)));return b.assertValidity(),b}static fromPrivateKey(y){return g.BASE.multiply(c(y))}static msm(y,b){return Mn(g,n,y,b)}_setWindowSize(y){d.setWindowSize(this,y)}assertValidity(){u(this)}hasEvenY(){let{y}=this.toAffine();if(t.isOdd)return!t.isOdd(y);throw new Error("Field doesn't support isOdd")}equals(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=t.eql(t.mul(b,_),t.mul(v,m)),B=t.eql(t.mul(w,_),t.mul(A,m));return x&&B}negate(){return new g(this.px,t.neg(this.py),this.pz)}double(){let{a:y,b}=e,w=t.mul(b,su),{px:m,py:v,pz:A}=this,_=t.ZERO,x=t.ZERO,B=t.ZERO,C=t.mul(m,m),ne=t.mul(v,v),P=t.mul(A,A),M=t.mul(m,v);return M=t.add(M,M),B=t.mul(m,A),B=t.add(B,B),_=t.mul(y,B),x=t.mul(w,P),x=t.add(_,x),_=t.sub(ne,x),x=t.add(ne,x),x=t.mul(_,x),_=t.mul(M,_),B=t.mul(w,B),P=t.mul(y,P),M=t.sub(C,P),M=t.mul(y,M),M=t.add(M,B),B=t.add(C,C),C=t.add(B,C),C=t.add(C,P),C=t.mul(C,M),x=t.add(x,C),P=t.mul(v,A),P=t.add(P,P),C=t.mul(P,M),_=t.sub(_,C),B=t.mul(P,ne),B=t.add(B,B),B=t.add(B,B),new g(_,x,B)}add(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=t.ZERO,B=t.ZERO,C=t.ZERO,ne=e.a,P=t.mul(e.b,su),M=t.mul(b,v),L=t.mul(w,A),T=t.mul(m,_),N=t.add(b,w),S=t.add(v,A);N=t.mul(N,S),S=t.add(M,L),N=t.sub(N,S),S=t.add(b,m);let E=t.add(v,_);return S=t.mul(S,E),E=t.add(M,T),S=t.sub(S,E),E=t.add(w,m),x=t.add(A,_),E=t.mul(E,x),x=t.add(L,T),E=t.sub(E,x),C=t.mul(ne,S),x=t.mul(P,T),C=t.add(x,C),x=t.sub(L,C),C=t.add(L,C),B=t.mul(x,C),L=t.add(M,M),L=t.add(L,M),T=t.mul(ne,T),S=t.mul(P,S),L=t.add(L,T),T=t.sub(M,T),T=t.mul(ne,T),S=t.add(S,T),M=t.mul(L,S),B=t.add(B,M),M=t.mul(E,S),x=t.mul(N,x),x=t.sub(x,M),M=t.mul(N,L),C=t.mul(E,C),C=t.add(C,M),new g(x,B,C)}subtract(y){return this.add(y.negate())}is0(){return this.equals(g.ZERO)}wNAF(y){return d.wNAFCached(this,y,g.normalizeZ)}multiplyUnsafe(y){Le("scalar",y,_t,e.n);let b=g.ZERO;if(y===_t)return b;if(y===ye)return this;let{endo:w}=e;if(!w)return d.unsafeLadder(this,y);let{k1neg:m,k1:v,k2neg:A,k2:_}=w.splitScalar(y),x=b,B=b,C=this;for(;v>_t||_>_t;)v&ye&&(x=x.add(C)),_&ye&&(B=B.add(C)),C=C.double(),v>>=ye,_>>=ye;return m&&(x=x.negate()),A&&(B=B.negate()),B=new g(t.mul(B.px,w.beta),B.py,B.pz),x.add(B)}multiply(y){let{endo:b,n:w}=e;Le("scalar",y,ye,w);let m,v;if(b){let{k1neg:A,k1:_,k2neg:x,k2:B}=b.splitScalar(y),{p:C,f:ne}=this.wNAF(_),{p:P,f:M}=this.wNAF(B);C=d.constTimeNegate(A,C),P=d.constTimeNegate(x,P),P=new g(t.mul(P.px,b.beta),P.py,P.pz),m=C.add(P),v=ne.add(M)}else{let{p:A,f:_}=this.wNAF(y);m=A,v=_}return g.normalizeZ([m,v])[0]}multiplyAndAddUnsafe(y,b,w){let m=g.BASE,v=(_,x)=>x===_t||x===ye||!_.equals(m)?_.multiplyUnsafe(x):_.multiply(x),A=v(this,b).add(v(y,w));return A.is0()?void 0:A}toAffine(y){return f(this,y)}isTorsionFree(){let{h:y,isTorsionFree:b}=e;if(y===ye)return!0;if(b)return b(g,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:y,clearCofactor:b}=e;return y===ye?this:b?b(g,this):this.multiplyUnsafe(e.h)}toRawBytes(y=!0){return Ye("isCompressed",y),this.assertValidity(),s(g,this,y)}toHex(y=!0){return Ye("isCompressed",y),mt(this.toRawBytes(y))}}g.BASE=new g(e.Gx,e.Gy,t.ONE),g.ZERO=new g(t.ZERO,t.ONE,t.ZERO);let l=e.nBitLength,d=On(g,e.endo?Math.ceil(l/2):l);return{CURVE:e,ProjectivePoint:g,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function Ap(r){let e=Wr(r);return st(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function iu(r){let e=Ap(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(T){return X(T,n)}function a(T){return Dn(T,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:h,weierstrassEquation:f,isWithinCurveOrder:u}=Sp({...e,toBytes(T,N,S){let E=N.toAffine(),I=t.toBytes(E.x),R=yt;return Ye("isCompressed",S),S?R(Uint8Array.from([N.hasEvenY()?2:3]),I):R(Uint8Array.from([4]),I,t.toBytes(E.y))},fromBytes(T){let N=T.length,S=T[0],E=T.subarray(1);if(N===s&&(S===2||S===3)){let I=gt(E);if(!$r(I,ye,t.ORDER))throw new Error("Point is not on curve");let R=f(I),U;try{U=t.sqrt(R)}catch($){let q=$ instanceof Error?": "+$.message:"";throw new Error("Point is not on curve"+q)}let D=(U&ye)===ye;return(S&1)===1!==D&&(U=t.neg(U)),{x:I,y:U}}else if(N===i&&S===4){let I=t.fromBytes(E.subarray(0,t.BYTES)),R=t.fromBytes(E.subarray(t.BYTES,2*t.BYTES));return{x:I,y:R}}else throw new Error(`Point of length ${N} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),g=T=>mt(Lt(T,e.nByteLength));function l(T){let N=n>>ye;return T>N}function d(T){return l(T)?o(-T):T}let p=(T,N,S)=>gt(T.slice(N,S));class y{constructor(N,S,E){this.r=N,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(N){let S=e.nByteLength;return N=ce("compactSignature",N,S*2),new y(p(N,0,S),p(N,S,2*S))}static fromDER(N){let{r:S,s:E}=Bt.toSig(ce("DER",N));return new y(S,E)}assertValidity(){Le("r",this.r,ye,n),Le("s",this.s,ye,n)}addRecoveryBit(N){return new y(this.r,this.s,N)}recoverPublicKey(N){let{r:S,s:E,recovery:I}=this,R=_(ce("msgHash",N));if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");let U=I===2||I===3?S+e.n:S;if(U>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let D=I&1?"03":"02",K=c.fromHex(D+g(U)),$=a(U),q=o(-R*$),Y=o(E*$),te=c.BASE.multiplyAndAddUnsafe(K,q,Y);if(!te)throw new Error("point at infinify");return te.assertValidity(),te}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return Zt(this.toDERHex())}toDERHex(){return Bt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Zt(this.toCompactHex())}toCompactHex(){return g(this.r)+g(this.s)}}let b={isValidPrivateKey(T){try{return h(T),!0}catch{return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{let T=oo(e.n);return Pc(e.randomBytes(T),e.n)},precompute(T=8,N=c.BASE){return N._setWindowSize(T),N.multiply(BigInt(3)),N}};function w(T,N=!0){return c.fromPrivateKey(T).toRawBytes(N)}function m(T){let N=Nt(T),S=typeof T=="string",E=(N||S)&&T.length;return N?E===s||E===i:S?E===2*s||E===2*i:T instanceof c}function v(T,N,S=!0){if(m(T))throw new Error("first arg must be private key");if(!m(N))throw new Error("second arg must be public key");return c.fromHex(N).multiply(h(T)).toRawBytes(S)}let A=e.bits2int||function(T){let N=gt(T),S=T.length*8-e.nBitLength;return S>0?N>>BigInt(S):N},_=e.bits2int_modN||function(T){return o(A(T))},x=Gr(e.nBitLength);function B(T){return Le(`num < 2^${e.nBitLength}`,T,_t,x),Lt(T,e.nByteLength)}function C(T,N,S=ne){if(["recovered","canonical"].some(pe=>pe in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:I}=e,{lowS:R,prehash:U,extraEntropy:D}=S;R==null&&(R=!0),T=ce("msgHash",T),nu(S),U&&(T=ce("prehashed msgHash",E(T)));let K=_(T),$=h(N),q=[B($),B(K)];if(D!=null&&D!==!1){let pe=D===!0?I(t.BYTES):D;q.push(ce("extraEntropy",pe))}let Y=yt(...q),te=K;function de(pe){let be=A(pe);if(!u(be))return;let Te=a(be),ue=c.BASE.multiply(be).toAffine(),Ne=o(ue.x);if(Ne===_t)return;let lt=o(Te*o(te+Ne*$));if(lt===_t)return;let Mr=(ue.x===Ne?0:2)|Number(ue.y&ye),Pr=lt;return R&&l(lt)&&(Pr=d(lt),Mr^=1),new y(Ne,Pr,Mr)}return{seed:Y,k2sig:de}}let ne={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};function M(T,N,S=ne){let{seed:E,k2sig:I}=C(T,N,S),R=e;return ro(R.hash.outputLen,R.nByteLength,R.hmac)(E,I)}c.BASE._setWindowSize(8);function L(T,N,S,E=P){let I=T;if(N=ce("msgHash",N),S=ce("publicKey",S),"strict"in E)throw new Error("options.strict was renamed to lowS");nu(E);let{lowS:R,prehash:U}=E,D,K;try{if(typeof I=="string"||Nt(I))try{D=y.fromDER(I)}catch(ue){if(!(ue instanceof Bt.Err))throw ue;D=y.fromCompact(I)}else if(typeof I=="object"&&typeof I.r=="bigint"&&typeof I.s=="bigint"){let{r:ue,s:Ne}=I;D=new y(ue,Ne)}else throw new Error("PARSE");K=c.fromHex(S)}catch(ue){if(ue.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&D.hasHighS())return!1;U&&(N=e.hash(N));let{r:$,s:q}=D,Y=_(N),te=a(q),de=o(Y*te),pe=o($*te),be=c.BASE.multiplyAndAddUnsafe(K,de,pe)?.toAffine();return be?o(be.x)===$:!1}return{CURVE:e,getPublicKey:w,getSharedSecret:v,sign:M,verify:L,ProjectivePoint:c,Signature:y,utils:b}}function Bp(r){return{hash:r,hmac:(e,...t)=>ea(r,e,Zi(...t)),randomBytes:Nn}}function ou(r,e){let t=n=>iu({...r,...Bp(n)});return Object.freeze({...t(e),create:t})}var lu=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),au=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),_p=BigInt(1),ta=BigInt(2),cu=(r,e)=>(r+e/ta)/e;function Ip(r){let e=lu,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%e,f=h*h*r%e,u=ie(f,t,e)*f%e,g=ie(u,t,e)*f%e,l=ie(g,ta,e)*h%e,d=ie(l,s,e)*l%e,p=ie(d,i,e)*d%e,y=ie(p,a,e)*p%e,b=ie(y,c,e)*y%e,w=ie(b,a,e)*p%e,m=ie(w,t,e)*f%e,v=ie(m,o,e)*d%e,A=ie(v,n,e)*h%e,_=ie(A,ta,e);if(!ra.eql(ra.sqr(_),r))throw new Error("Cannot find square root");return _}var ra=Ut(lu,void 0,void 0,{sqrt:Ip}),rr=ou({a:BigInt(0),b:BigInt(7),Fp:ra,n:au,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=au,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-_p*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=cu(i*r,e),c=cu(-n*r,e),h=X(r-a*t-c*s,e),f=X(-a*n-c*i,e),u=h>o,g=f>o;if(u&&(h=e-h),g&&(f=e-f),h>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:h,k2neg:g,k2:f}}}},xr),yb=BigInt(0);var bb=rr.ProjectivePoint;function Fe(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=De(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function uu(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function fu(r,e,t){let n=br.digest(t instanceof Uint8Array?t:t.subarray());if(uu(n))return n.then(({digest:s})=>rr.verify(e,s,r)).catch(s=>{throw new an(String(s))});try{return rr.verify(e,n.digest,r)}catch(s){throw new an(String(s))}}var Ps=class{type="secp256k1";raw;_key;constructor(e){this._key=du(e),this.raw=hu(this._key)}toMultihash(){return dt.digest(Dt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return Q.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ge(this.raw,e.raw)}verify(e,t){return fu(this._key,t,e)}};function na(r){return new Ps(r)}function hu(r){return rr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function du(r){try{return rr.ProjectivePoint.fromHex(r),r}catch(e){throw new ar(String(e))}}function pu(r){let{Type:e,Data:t}=it.decode(r),n=t??new Uint8Array;switch(e){case he.RSA:return Qo(n);case he.Ed25519:return fo(n);case he.secp256k1:return na(n);default:throw new cr}}function mu(r){let{Type:e,Data:t}=it.decode(r.digest),n=t??new Uint8Array;switch(e){case he.Ed25519:return fo(n);case he.secp256k1:return na(n);default:throw new cr}}function Dt(r){return it.encode({Type:he[r.type],Data:r.raw})}var gu=Symbol.for("nodejs.util.inspect.custom"),Tp=114,un=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()})`}[Oi]=!0;toString(){return this.string==null&&(this.string=Q.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return me.createV1(Tp,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ge(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ge(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[gu](){return`PeerId(${this.toString()})`}},Vs=class extends un{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Hs=class extends un{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Fs=class extends un{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},kp=2336,Ks=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=dt.digest(G(this.url))}[gu](){return`PeerId(${this.url})`}[Oi]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return me.createV1(kp,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=le(e)),e.toString()===this.toString())}};function sa(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ze(Q.decode(`z${r}`));else{if(e==null)throw new Ee('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ze(e.decode(r))}return fn(t)}function fn(r){if(Np(r))return new Vs({multihash:r});if(Cp(r))try{let e=mu(r);if(e.type==="Ed25519")return new Hs({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Fs({multihash:r,publicKey:e})}catch{let t=le(r.digest);return new Ks(new URL(t))}throw new _n("Supplied PeerID Multihash is invalid")}function Cp(r){return r.code===dt.code}function Np(r){return r.code===br.code}var bu=Symbol.for("@achingbrain/uint8arraylist");function yu(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function qs(r){return!!r?.[bu]}var et=class r{bufs;length;[bu]=!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(qs(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(qs(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=yu(this.bufs,e);return t.buf[t.index]}set(e,t){let n=yu(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(qs(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:s}=this._subList(e,t);return Fe(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Fe(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_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=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let h=e>=a&&e<c,f=t>a&&t<=c;if(h&&f){if(e===a&&t===c){n.push(o);break}let u=e-a;n.push(o.subarray(u,u+(t-e)));break}if(h){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!qs(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 s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let u=0;u<i;u++)o[u]=-1;for(let u=0;u<s;u++)o[n[u]]=u;let a=o,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let g=h;g>=0;g--){let l=this.get(u+g);if(n[g]!==l){f=Math.max(1,g-a[l]);break}}if(f===0)return u}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=De(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 s=oe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,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=De(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 s=oe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,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 s=oe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,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 s=oe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,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(!ge(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((s,i)=>s+i.byteLength,0)),n.length=t,n}};var hn;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={publicKey:oe(0),payloadType:oe(0),payload:oe(0),signature:oe(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.publicKey=t.bytes();break}case 2:{i.payloadType=t.bytes();break}case 3:{i.payload=t.bytes();break}case 5:{i.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(hn||(hn={}));var zs=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var dn=class r{static createFromProtobuf=async e=>{let t=hn.decode(e),n=pu(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,i=e.marshal(),o=wu(n,s,i),a=await t.sign(o.subarray());return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new zs("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:s,signature:i}=e;this.publicKey=t,this.payloadType=n,this.payload=s,this.signature=i}marshal(){return this.marshaled==null&&(this.marshaled=hn.encode({publicKey:Dt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ge(this.marshal(),e.marshal())}async validate(e){let t=wu(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},wu=(r,e,t)=>{let n=G(r),s=$e(n.byteLength),i=$e(e.length),o=$e(t.length);return new et(s,n,i,e,o,t)};var $s=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let g=Number.parseInt(u,e);if(!Number.isNaN(g))return g});if(f===void 0)break;if(i*=e,i+=f,i>h||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var xu=45,Rp=15,Ir=new $s;function ia(r){if(!(r.length>Rp))return Ir.new(r).parseWith(()=>Ir.readIPv4Addr())}function oa(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>xu))return Ir.new(r).parseWith(()=>Ir.readIPv6Addr())}function Gs(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>xu))return Ir.new(r).parseWith(()=>Ir.readIPAddr())}var jw=parseInt("0xFFFF",16),Yw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Ws(r){return!!ia(r)}function Zs(r){return!!oa(r)}function js(r){return!!Gs(r)}var Su=Ws,Mp=Zs,aa=function(r){let e=0;if(r=r.toString().trim(),Su(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Mp(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=Su(t[n]),o;i&&(o=aa(t[n]),t[n]=le(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,le(o.slice(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 i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},Au=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Tr={},ca={},Vp=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Vp.forEach(r=>{let e=Hp(...r);ca[e.code]=e,Tr[e.name]=e});function Hp(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function ee(r){if(typeof r=="number"){if(ca[r]!=null)return ca[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Tr[r]!=null)return Tr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Lx=ee("ip4"),Ux=ee("ip6"),Dx=ee("ipcidr");function ha(r,e){switch(ee(r).code){case 4:case 41:return Kp(e);case 42:return fa(e);case 6:case 273:case 33:case 132:return Iu(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return fa(e);case 421:return Gp(e);case 444:return _u(e);case 445:return _u(e);case 466:return $p(e);case 481:return globalThis.encodeURIComponent(fa(e));default:return le(e,"base16")}}function da(r,e){switch(ee(r).code){case 4:return Bu(e);case 41:return Bu(e);case 42:return ua(e);case 6:case 273:case 33:case 132:return pa(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ua(e);case 421:return qp(e);case 444:return Wp(e);case 445:return Zp(e);case 466:return zp(e);case 481:return ua(globalThis.decodeURIComponent(e));default:return G(e,"base16")}}var la=Object.values(Zr).map(r=>r.decoder),Fp=function(){let r=la[0].or(la[1]);return la.slice(2).forEach(e=>r=r.or(e)),r}();function Bu(r){if(!js(r))throw new Error("invalid ip address");return aa(r)}function Kp(r){let e=Au(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!js(e))throw new Error("invalid ip address");return e}function pa(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Iu(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function ua(r){let e=G(r),t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function fa(r){let e=bt(r);if(r=r.slice(Ae(e)),r.length!==e)throw new Error("inconsistent lengths");return le(r)}function qp(r){let e;r[0]==="Q"||r[0]==="1"?e=ze(Q.decode(`z${r}`)).bytes:e=me.parse(r).multihash.bytes;let t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function zp(r){let e=Fp.decode(r),t=Uint8Array.from($e(e.length));return Fe([t,e],t.length+e.length)}function $p(r){let e=bt(r),t=r.slice(Ae(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+le(t,"base64url")}function Gp(r){let e=bt(r),t=r.slice(Ae(e));if(t.length!==e)throw new Error("inconsistent lengths");return le(t,"base58btc")}function Wp(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=ht.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 s=pa(n);return Fe([t,s],t.length+s.length)}function Zp(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=ht.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 s=pa(n);return Fe([t,s],t.length+s.length)}function _u(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=le(e,"base32"),s=Iu(t);return`${n}:${s}`}function Tu(r){r=ma(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=ee(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw Cu("invalid address: "+r);if(a.path===!0){n=ma(s.slice(i).join("/")),e.push([a.code,da(a.code,n)]),t.push([a.code,n]);break}let c=da(a.code,s[i]);e.push([a.code,c]),t.push([a.code,ha(a.code,c)])}return{string:ku(t),bytes:ya(e),tuples:e,stringTuples:t,path:n}}function ga(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=bt(r,s),o=Ae(i),a=ee(i),c=jp(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let h=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw Cu("Invalid address Uint8Array: "+le(r,"base16"));e.push([i,h]);let f=ha(i,h);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:ku(t),tuples:e,stringTuples:t,path:n}}function ku(r){let e=[];return r.map(t=>{let n=ee(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),ma(e.join("/"))}function ya(r){return Fe(r.map(e=>{let t=ee(e[0]),n=Uint8Array.from($e(t.code));return e.length>1&&e[1]!=null&&(n=Fe([n,e[1]])),n}))}function jp(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=bt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Ae(t)}}function ma(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function Cu(r){return new Error("Error parsing address: "+r)}var Yp=Symbol.for("nodejs.util.inspect.custom"),wa=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Xp=[ee("dns").code,ee("dns4").code,ee("dns6").code,ee("dnsaddr").code],ba=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ys=class r{bytes;#e;#t;#r;#n;[wa]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=ga(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=Tu(e)}else if(Ru(e))t=ga(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#n=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=ee("tcp"),a=ee("udp"),c=ee("ip4"),h=ee("ip6"),f=ee("dns6"),u=ee("ip6zone");for(let[l,d]of this.stringTuples())l===u.code&&(i=`%${d??""}`),Xp.includes(l)&&(t=o.name,s=443,n=`${d??""}${i}`,e=l===f.code?6:4),(l===o.code||l===a.code)&&(t=ee(l).name,s=parseInt(d??"")),(l===c.code||l===h.code)&&(t=ee(l).name,n=`${d??""}${i}`,e=l===h.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},ee(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ee(e).name)}tuples(){return this.#t.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#r.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(ya(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===Tr.p2p.code&&e.push([n,s]),n===Tr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?le(Q.decode(`z${n}`),"base58btc"):le(me.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return ge(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=Nu.get(t.name);if(n==null)throw new ba(`no available resolver for ${t.name}`);return(await n(this,e)).map(i=>ve(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[Yp](){return`Multiaddr(${this.#e})`}};var Nu=new Map;function Ru(r){return!!r?.[wa]}function ve(r){return new Ys(r)}function tt(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Xs=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 Js(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Xs(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new Xs(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var xa=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=tt(),this.haveNext=tt()}[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=tt(),e}async throw(e){return this.ended=!0,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 await this._push(void 0),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 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=tt(),await Js(this.readNext.promise,t?.signal,t)}};function Lu(){return new xa}var Qs=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var va=class extends Error{code;constructor(e,t){super(e),this.code=t}},Ea=class extends va{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Uu(r,e){let t=Lu();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new et;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,u)=>{c=()=>{u(new Ea("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:u,value:g}=await Promise.race([n.next(),h]);return u===!0?new et:g}for(;s.byteLength<o;){let{value:u,done:g}=await Promise.race([n.next(),h]);if(g===!0)throw new Qs("unexpected end of input");s.append(u)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var ei=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},ti=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ri=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Du(r,e={}){let t=Uu(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Ae(e.maxDataLength));let n=e?.lengthDecoder??bt,s=e?.lengthEncoder??$e;return{read:async o=>{let a=-1,c=new et;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(a<0)throw new ei("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ri("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new ti("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new et(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new et(...o.flatMap(h=>[s(h.byteLength),h]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Kt(r,e){let t=Du(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Sa=1e3,Ou=60*Sa,ni=290,Mu=15,Pu=2*60*Ou,Vu=1,si=2e3,Hu=100,Aa="circuit-relay-source",pn=`${Mi}-circuit-relay`,Ba=`${Mi}-circuit-relay-source`,Fu=2*Ou,Ku=BigInt(1<<17),We="/libp2p/circuit/relay/0.2.0/hop",nr="/libp2p/circuit/relay/0.2.0/stop",qu=30*Sa,B1=30*Sa,mn=300,zu=4096,$u=.001;var j;(function(r){let e;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(t||(t={})),function(s){s.codec=()=>er(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Pe((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),kr.codec().encode(s.peer,i)),s.reservation!=null&&(i.uint32(26),ii.codec().encode(s.reservation,i)),s.limit!=null&&(i.uint32(34),Cr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(40),H.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.reservation=ii.codec().decode(s,s.uint32(),{limits:o.limits?.reservation});break}case 4:{a.limit=Cr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 5:{a.status=H.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Me(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(j||(j={}));var Ke;(function(r){let e;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(t||(t={})),function(s){s.codec=()=>er(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Pe((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),kr.codec().encode(s.peer,i)),s.limit!=null&&(i.uint32(26),Cr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(32),H.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.limit=Cr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 4:{a.status=H.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Me(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(Ke||(Ke={}));var kr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={id:oe(0),addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.id=t.bytes();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new Xr('Decode error - map field "addrs" had too many elements');i.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(kr||(kr={}));var ii;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);t.voucher!=null&&(n.uint32(26),oi.codec().encode(t.voucher,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={expire:0n,addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.expire=t.uint64();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new Xr('Decode error - map field "addrs" had too many elements');i.addrs.push(t.bytes());break}case 3:{i.voucher=oi.codec().decode(t,t.uint32(),{limits:s.limits?.voucher});break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(ii||(ii={}));var Cr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.duration=t.uint32();break}case 2:{i.data=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Cr||(Cr={}));var H;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(H||(H={}));var _a;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(_a||(_a={}));(function(r){r.codec=()=>er(_a)})(H||(H={}));var Nr;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={relay:oe(0),peer:oe(0),expiration:0n},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.relay=t.bytes();break}case 2:{i.peer=t.bytes();break}case 3:{i.expiration=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Nr||(Nr={}));var oi;(function(r){let e;r.codec=()=>(e==null&&(e=Pe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&(n.uint32(26),Nr.codec().encode(t.payload,n)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={publicKey:oe(0),payloadType:oe(0),signature:oe(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.publicKey=t.bytes();break}case 2:{i.payloadType=t.bytes();break}case 3:{i.payload=Nr.codec().decode(t,t.uint32(),{limits:s.limits?.payload});break}case 5:{i.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Me(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(oi||(oi={}));var Jp=r=>r.toString().split("/").slice(1),Rr=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),V=r=>({match:e=>Rr(t=>t===r).match(e),pattern:r}),sr=()=>({match:r=>Rr(e=>typeof e=="string").match(r),pattern:"{string}"}),gn=()=>({match:r=>Rr(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),J=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Q.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),yn=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{To.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),W=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Ie=(...r)=>({match:e=>{let t;for(let n of r){let s=n.match(e);s!==!1&&(t==null||s.length<t.length)&&(t=s)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),F=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function re(...r){function e(s){let i=Jp(s);for(let o of r){let a=o.match(i);if(a===!1)return!1;i=a}return i}function t(s){return e(s)!==!1}function n(s){let i=e(s);return i===!1?!1:i.length===0}return{matchers:r,matches:t,exactMatch:n}}var ci=F(V("dns4"),sr()),li=F(V("dns6"),sr()),ui=F(V("dnsaddr"),sr()),Ta=F(V("dns"),sr()),D1=re(ci,W(J())),O1=re(li,W(J())),M1=re(ui,W(J())),P1=re(Ie(Ta,ui,ci,li),W(J())),Gu=F(V("ip4"),Rr(Ws)),Wu=F(V("ip6"),Rr(Zs)),ka=Ie(Gu,Wu),It=Ie(ka,Ta,ci,li,ui),V1=re(Ie(ka,F(Ie(Ta,ui,ci,li),W(J())))),H1=re(Gu),F1=re(Wu),K1=re(ka),Ca=F(It,V("tcp"),gn()),bn=F(It,V("udp"),gn()),q1=re(F(Ca,W(J()))),z1=re(bn),Na=F(bn,V("quic"),W(J())),fi=F(bn,V("quic-v1"),W(J())),Qp=Ie(Na,fi),$1=re(Na),G1=re(fi),Ia=Ie(It,Ca,bn,Na,fi),Zu=Ie(F(Ia,V("ws"),W(J()))),W1=re(Zu),ju=Ie(F(Ia,V("wss"),W(J())),F(Ia,V("tls"),W(F(V("sni"),sr())),V("ws"),W(J()))),Z1=re(ju),Yu=F(bn,V("webrtc-direct"),W(yn()),W(yn()),W(J())),j1=re(Yu),Xu=F(fi,V("webtransport"),W(yn()),W(yn()),W(J())),Y1=re(Xu),ai=Ie(Zu,ju,F(Ca,W(J())),F(Qp,W(J())),F(It,W(J())),Yu,Xu,J()),Ju=re(ai),e0=F(ai,V("p2p-circuit"),J()),hi=re(e0),t0=Ie(F(ai,V("p2p-circuit"),V("webrtc"),W(J())),F(ai,V("webrtc"),W(J())),F(V("webrtc"),W(J()))),X1=re(t0),r0=Ie(F(It,V("tcp"),gn(),V("http"),W(J())),F(It,V("http"),W(J()))),J1=re(r0),n0=Ie(F(It,V("tcp"),Ie(F(V("443"),V("http")),F(gn(),V("https"))),W(J())),F(It,V("tls"),V("http"),W(J())),F(It,V("https"),W(J()))),Q1=re(n0),s0=Ie(F(V("memory"),sr(),W(J()))),ev=re(s0);function di(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}var pi=class extends Error{constructor(e="Transfer limit error"){super(e),this.name="TransferLimitError"}},wn=class extends Error{constructor(e="Duration limit error"){super(e),this.name="DurationLimitError"}},xn=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},mi=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},gi=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};async function*Qu(r,e,t){let n=e.remaining;for await(let s of r){let i=BigInt(s.byteLength);if(e.remaining-i<0){let o=Number(e.remaining);e.remaining=0n;try{o!==0&&(yield s.subarray(0,o))}catch(a){t.log.error(a)}throw new pi(`data limit of ${n} bytes exceeded`)}e.remaining-=i,yield s}}function ef(r,e,t,n,s){function i(u){r.abort(u),e.abort(u)}let o=[t,n.signal];n.limit?.duration!=null&&(s.log("limiting relayed connection duration to %dms",n.limit.duration),o.push(AbortSignal.timeout(n.limit.duration)));let a=di(o),c=!1,h=!1,f;n.limit?.data!=null&&(f={remaining:n.limit.data}),queueMicrotask(()=>{let u=()=>{s.log("relayed connection reached time limit"),e.abort(new wn(`duration limit of ${n.limit?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),e.sink(f==null?r.source:Qu(r.source,f,s)).catch(g=>{s.log.error("error while relaying streams src -> dst",g),i(g)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",u),a.clear())})}),queueMicrotask(()=>{let u=()=>{s.log("relayed connection reached time limit"),r.abort(new wn(`duration limit of ${n.limit?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),r.sink(f==null?e.source:Qu(e.source,f,s)).catch(g=>{s.log.error("error while relaying streams dst -> src",g),i(g)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",u),a.clear())})})}function Ra(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var vn=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},yi=re(F(Ju.matchers[0],V("p2p-circuit"))),bi=re(V("p2p-circuit"));function wi(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var qt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return wi(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return wi(this.map.values(),e=>e.key)}values(){return wi(this.map.values(),e=>e.value)}get size(){return this.map.size}};var La=64,rt=class{fp;h;seed;constructor(e,t,n,s=2){if(s>La)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=oe(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ge(this.fp,e.fp):!1}};function ir(r,e){return Math.floor(Math.random()*(e-r))+r}var or=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=ir(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var Ua={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},sf={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},of=new globalThis.TextEncoder;function i0(r,e){let t=Ua[e],n=sf[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function o0(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=Ua[e],s=sf[e],i=r;for(;i.length>0;){let o=of.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function Da(r,{size:e=32,utf8Buffer:t}={}){if(!Ua[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return o0(r,e,t);r=of.encode(r)}return i0(r,e)}var a0=tc(nf(),1);var Sn={hash:r=>Number(Da(r,{size:32})),hashV:(r,e)=>c0(Sn.hash(r,e))};function c0(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),G(e,"base16")}var l0=500,An=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Sn,this.seed=e.seed??ir(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new or(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new or(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ir(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new or(this.bucketSize));for(let a=0;a<l0;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new or(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=G(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},u0={1:.5,2:.84,4:.95,8:.98};function f0(r=.001){return r>.002?2:r>1e-5?4:8}function af(r,e=.001){let t=f0(e),n=u0[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),La);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var vi=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Sn,this.seed=e.seed??ir(0,Math.pow(2,10)),this.filterSeries=[new An({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=G(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new An({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=G(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=G(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Lr(r,e=.001,t){return new vi({...af(r,e),...t??{}})}var Ei=class{filter;constructor(e,t){this.filter=Lr(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function Oa(r,e=.001){return new Ei(r,e)}var Ma=class extends qt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Pa(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Ma({name:e,metrics:t}):n=new qt,n}var Va=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"}};function cf(r,e){let t=new Va(e?.errorMessage,e?.errorCode,e?.errorName),n=new AbortController,s=()=>{n.abort(t)},i=AbortSignal.timeout(r);i.addEventListener("abort",s);let o=n.signal;return o.reset=a=>{i?.removeEventListener("abort",s),i=AbortSignal.timeout(a??r),i.addEventListener("abort",()=>{n.abort(t)})},o.clear=()=>{i?.removeEventListener("abort",s),i=void 0},o}var Si=class{reservations;maxReservations;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:circuit-relay:server:reservation-store"),this.maxReservations=t.maxReservations??Mu,this.applyDefaultLimit=t.applyDefaultLimit!==!1,this.reservationTtl=t.reservationTtl??Pu,this.defaultDurationLimit=t.defaultDurationLimit??Fu,this.defaultDataLimit=t.defaultDataLimit??Ku,this.reservations=Pa({metrics:e.metrics,name:"libp2p_circuit_relay_server_reservations_total"})}reserve(e,t,n){let s=this.reservations.get(e);if(this.reservations.size>=this.maxReservations&&s==null)return{status:H.RESERVATION_REFUSED};let i=new Date(Date.now()+this.reservationTtl),o;return this.applyDefaultLimit&&(o=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),s!=null?(this.log("refreshing reservation for client %p",e),s.signal.reset(this.reservationTtl)):(this.log("creating new reservation for client %p",e),s={addr:t,expiry:i,limit:o,signal:cf(this.reservationTtl)}),this.reservations.set(e,s),s.signal.addEventListener("abort",()=>{this.reservations.delete(e)}),{status:H.OK,expire:Math.round(i.getTime()/1e3)}}removeReservation(e){this.reservations.delete(e)}get(e){return this.reservations.get(e)}clear(){this.reservations.clear()}};var Ai=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:e,peer:t,expiration:n}){this.relay=e,this.peer=t,this.expiration=n}marshal(){return Nr.encode({relay:this.relay.toMultihash().bytes,peer:this.peer.toMultihash().bytes,expiration:BigInt(this.expiration)})}equals(e){return!(!(e instanceof r)||!this.peer.equals(e.peer)||!this.relay.equals(e.relay)||this.expiration!==e.expiration)}};var lf=r=>r.protoCodes().includes(ni),h0={maxOutboundStopStreams:mn},Ha=class extends qe{registrar;peerStore;addressManager;peerId;privateKey;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.addressManager=e.addressManager,this.peerId=e.peerId,this.privateKey=e.privateKey,this.connectionManager=e.connectionManager,this.connectionGater=e.connectionGater,this.started=!1,this.hopTimeout=t?.hopTimeout??qu,this.maxInboundHopStreams=t.maxInboundHopStreams,this.maxOutboundHopStreams=t.maxOutboundHopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??h0.maxOutboundStopStreams,this.reservationStore=new Si(e,t.reservations),this.shutdownController=new AbortController,Re(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(We,e=>{this.onHop(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnLimitedConnection:!0}),this.started=!0)}async stop(){this.reservationStore.clear(),this.shutdownController.abort(),await this.registrar.unhandle(We),this.started=!1}async onHop({connection:e,stream:t}){this.log("received circuit v2 hop protocol stream from %p",e.remotePeer);let n={signal:AbortSignal.timeout(this.hopTimeout)},s=Kt(t);try{let i=await s.pb(j).read(n);if(i?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",i.type),await this.handleHopProtocol({connection:e,stream:s,request:i},n)}catch(i){this.log.error("error while handling hop",i),await s.pb(j).write({type:j.Type.STATUS,status:H.MALFORMED_MESSAGE},n),t.abort(i)}}async handleHopProtocol({stream:e,request:t,connection:n},s){switch(this.log("received hop message"),t.type){case j.Type.RESERVE:await this.handleReserve({stream:e,request:t,connection:n},s);break;case j.Type.CONNECT:await this.handleConnect({stream:e,request:t,connection:n},s);break;default:this.log.error("invalid hop request type %s via peer %p",t.type,n.remotePeer),await e.pb(j).write({type:j.Type.STATUS,status:H.UNEXPECTED_MESSAGE})}}async handleReserve({stream:e,connection:t},n){let s=e.pb(j);if(this.log("hop reserve request from %p",t.remotePeer),lf(t.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",t.remotePeer),await s.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},n);return}if(await this.connectionGater.denyInboundRelayReservation?.(t.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",t.remotePeer),await s.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},n);return}let i=this.reservationStore.reserve(t.remotePeer,t.remoteAddr);try{if(i.status!==H.OK){await s.write({type:j.Type.STATUS,status:i.status},n);return}if(i.expire!=null){let o=i.expire*1e3-Date.now();await this.peerStore.merge(t.remotePeer,{tags:{[Aa]:{value:1,ttl:o},[Ba]:{value:1,ttl:o}}})}await s.write({type:j.Type.STATUS,status:H.OK,reservation:await this.makeReservation(t.remotePeer,BigInt(i.expire??0)),limit:this.reservationStore.get(t.remotePeer)?.limit},n),this.log("sent confirmation response to %s",t.remotePeer)}catch(o){this.log.error("failed to send confirmation response to %p - %e",t.remotePeer,o),this.reservationStore.removeReservation(t.remotePeer);try{await this.peerStore.merge(t.remotePeer,{tags:{[Aa]:void 0,[Ba]:void 0}})}catch(a){this.log.error("failed to untag relay source peer %p - %e",t.remotePeer,a)}}}async makeReservation(e,t){let n=[];for(let i of this.addressManager.getAddresses())i.toString().includes("/p2p-circuit")||n.push(i.bytes);let s=await dn.seal(new Ai({peer:e,relay:this.peerId,expiration:t}),this.privateKey);return{addrs:n,expire:t,voucher:{publicKey:Dt(s.publicKey),payloadType:s.payloadType,payload:{peer:e.toMultihash().bytes,relay:this.peerId.toMultihash().bytes,expiration:t},signature:s.signature}}}async handleConnect({stream:e,request:t,connection:n},s){let i=e.pb(j);if(lf(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await i.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},s);return}this.log("hop connect request from %p",n.remotePeer);let o;try{if(t.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");t.peer.addrs.forEach(ve),o=fn(ze(t.peer.id))}catch(g){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,g),await i.write({type:j.Type.STATUS,status:H.MALFORMED_MESSAGE},s);return}let a=this.reservationStore.get(o);if(a==null){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",o,n.remotePeer,H.NO_RESERVATION),await i.write({type:j.Type.STATUS,status:H.NO_RESERVATION},s);return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,o)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,o),await i.write({type:j.Type.STATUS,status:H.PERMISSION_DENIED},s);return}let c=this.connectionManager.getConnections(o);if(c.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",o,n.remotePeer),await i.write({type:j.Type.STATUS,status:H.NO_RESERVATION},s);return}let h=c[0],f=await this.stopHop({connection:h,request:{type:Ke.Type.CONNECT,peer:{id:n.remotePeer.toMultihash().bytes,addrs:[]},limit:a?.limit}},s);if(f==null){this.log.error("failed to open stream to destination peer %p",h?.remotePeer),await i.write({type:j.Type.STATUS,status:H.CONNECTION_FAILED},s);return}await i.write({type:j.Type.STATUS,status:H.OK,limit:a?.limit},s);let u=e.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,o),ef(u,f,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:e,request:t},n){this.log("starting circuit relay v2 stop request to %s",e.remotePeer);let s=await e.newStream([nr],{maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0,...n}),i=Kt(s),o=i.pb(Ke);await o.write(t,n);let a;try{a=await o.read(n)}catch{this.log.error("error parsing stop message response from %p",e.remotePeer)}if(a==null){this.log.error("could not read response from %p",e.remotePeer),await s.close(n);return}if(a.status===H.OK)return this.log("stop request to %p was successful",e.remotePeer),i.unwrap();this.log("stop request failed with code %d",a.status),await s.close(n)}get reservations(){return this.reservationStore.reservations}};function uf(r={}){return e=>new Ha(e,r)}function d0(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ff=d0;function p0(r){return r[Symbol.asyncIterator]!=null}function hf(r){return r?.then!=null}function m0(r,e){let t=0;if(p0(r))return async function*(){for await(let c of r){let h=e(c,t++);hf(h)&&await h,yield c}}();let n=ff(r),{value:s,done:i}=n.next();if(i===!0)return function*(){}();if(typeof e(s,t++)?.then=="function")return async function*(){yield s;for await(let c of n){let h=e(c,t++);hf(h)&&await h,yield c}}();let a=e;return function*(){yield s;for(let c of n)a(c,t++),yield c}()}var df=m0;var Bi=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)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}},Ur=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Bi(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 Bi(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 Fa=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Dr(r={}){return g0(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 g0(r,e){e=e??{};let t=e.onEnd,n=new Ur,s,i,o,a=tt(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((y,b)=>{i=w=>{i=null,n.push(w);try{y(r(n))}catch(m){b(m)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=tt()})}},h=y=>i!=null?i(y):(n.push(y),s),f=y=>(n=new Ur,i!=null?i({error:y}):(n.push({error:y}),s)),u=y=>{if(o)return s;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:y})},g=y=>o?s:(o=!0,y!=null?f(y):h({done:!0})),l=()=>(n=new Ur,g(),{done:!0}),d=y=>(g(y),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:l,throw:d,push:u,end:g,get readableLength(){return n.size},onEmpty:async y=>{let b=y?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let w,m;b!=null&&(w=new Promise((v,A)=>{m=()=>{A(new Fa)},b.addEventListener("abort",m)}));try{await Promise.race([a.promise,w])}finally{m!=null&&b!=null&&b?.removeEventListener("abort",m)}}},t==null)return s;let p=s;return s={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),s},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},s}function y0(r){return r[Symbol.asyncIterator]!=null}function b0(...r){let e=[];for(let t of r)y0(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Dr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var pf=b0;function mf(r,...e){if(r==null)throw new Error("Empty pipeline");if(Ka(r)){let n=r;r=()=>n.source}else if(yf(r)||gf(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Ka(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++)Ka(t[n])&&(t[n]=x0(t[n]));return w0(...t)}var w0=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},gf=r=>r?.[Symbol.asyncIterator]!=null,yf=r=>r?.[Symbol.iterator]!=null,Ka=r=>r==null?!1:r.sink!=null&&r.source!=null,x0=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Dr({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(gf(i))s=async function*(){yield*i,n.end()};else if(yf(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return pf(n,s())}return r.source};function qa(r){let{stream:e,remoteAddr:t,logger:n,onDataRead:s,onDataWrite:i}=r,o=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,h=e.close.bind(e);e.close=async d=>{await h(d),l(!0)};let f=e.abort.bind(e);e.abort=d=>{f(d),l(!0)};let u=e.sink.bind(e);e.sink=async d=>{try{await u(mf(d,p=>df(p,y=>i?.(y))))}catch(p){p.type!=="aborted"&&o.error("%s error in sink",t,p)}finally{c=!0,l()}};let g={log:o,sink:e.sink,source:async function*(){try{for await(let d of e.source)s?.(d),yield d}finally{a=!0,l()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function l(d){d===!0&&(a=!0,c=!0),a&&c&&g.timeline.close==null&&(g.timeline.close=Date.now())}return g}var zt=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var za=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function _i(r,e,t,n){let s=new za(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(g){a(),o(g);return}a(),i(u)},h=u=>{a(),o(u.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var Ii=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var Ti=class{deferred;signal;constructor(e){this.signal=e,this.deferred=tt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ut)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function v0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ki=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=v0(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Re(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ut),this.cleanup())}async join(e={}){let t=new Ti(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Js(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var Ci=class extends qe{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Ii;let n=new ki(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ut)}),this.clear()}async onEmpty(e){this.size!==0&&await _i(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await _i(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await _i(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Dr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new ut("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Or=class extends Ci{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Ni=class extends qe{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,Re(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(We,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,Re(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(We)],orders:[()=>Math.random()<.5?1:-1,(n,s)=>{let i=bf(n),o=bf(s);return i>o?-1:o>i?1:0}]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=this.queue=new Or({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(async()=>{let s=di([this.discoveryController.signal,AbortSignal.timeout(5e3)]);Re(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};function bf(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(le(e)).getTime()}var $a=class extends qe{connectionManager;reservationStore;discovery;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.reservationStore=e.relayStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??si,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{relay:t,details:n}=e.detail;n.type!=="configured"&&n.id===this.reservationId&&(this.log("relay peer added %p",t),this.relay=t,this.listeningAddrs=n.reservation.addrs.map(s=>ve(s).encapsulate("/p2p-circuit")),this.safeDispatchEvent("listening"))};async listen(e){if(this.log("listen on %a",e),bi.exactMatch(e))this.reservationId=this.reservationStore.reserveRelay();else if(yi.exactMatch(e)){let t=AbortSignal.timeout(this.listenTimeout);Re(1/0,t);let n=e.decapsulate("/p2p-circuit"),s=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(s.remotePeer)){this.log("making reservation on peer %p",s.remotePeer);let i=await this.reservationStore.addRelay(s.remotePeer,"configured");this.log("made reservation on peer %p",s.remotePeer),this.relay=i.relay,this.listeningAddrs=i.details.reservation.addrs.map(o=>ve(o).encapsulate("/p2p-circuit")),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}}else throw new $t(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};function wf(r){return new $a(r)}var xf="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var vf=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r));for(;r--;)e+=xf[t[r]&63];return e};var E0=60*1e3*10,S0=60*1e3*5,A0=30*1e3,Ri=class extends qe{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new qt,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??Hu,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??si,this.started=!1,this.relayFilter=Lr(100),this.reserveQueue=new Or({concurrency:t?.reservationConcurrency??Vu,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(i=>i.connection===n.detail.id)!=null&&this.#t(n.detail.remotePeer).catch(i=>{this.log("could not remove relay %p - %e",n.detail,i)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(pn)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[pn]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#r()}).catch(e=>{this.log.error(e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=vf();return this.pendingReservations.push(e),this.#r(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new $t("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new gi("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new $t("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let s=Date.now();try{let i=this.reservations.get(e);if(i!=null){let d=this.connectionManager.getConnections(e),p=!1;if(d.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),d.map(y=>y.id).includes(i.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),p=!0),p&&Ra(i.reservation.expire)>E0)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:i};await this.#t(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new xn("Not making reservation on discovered relay because we do not need any more relays");let o=AbortSignal.timeout(this.reservationCompletionTimeout);Re(1/0,o);let a=await this.connectionManager.openConnection(e,{signal:o});if(hi.matches(a.remoteAddr))throw new mi("not creating reservation over relayed connection");let c=await this.#e(a,{signal:o}),h=Ra(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+h).toString());let f=Math.min(Math.max(h-S0,A0),Math.pow(2,31)-1),u=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async d=>{this.log.error("could not refresh reservation to relay %p - %e",e,d),await this.#t(e)}).catch(d=>{this.log.error("could not remove expired reservation to relay %p - %e",e,d)})},f),g;if(t==="discovered"){let d=this.pendingReservations.pop();if(d==null)throw new xn("Made reservation on relay but did not need any more discovered relays");g={timeout:u,reservation:c,type:t,connection:a.id,id:d}}else g={timeout:u,reservation:c,type:t,connection:a.id};this.reservations.set(e,g),await this.peerStore.merge(e,{tags:{[pn]:{value:1,ttl:h}}}),this.#r();let l={relay:e,details:g};return this.safeDispatchEvent("relay:created-reservation",{detail:l}),l}catch(i){throw t==="discovered"&&i.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-s,i),(i.name==="DialError"||i.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#t(e).catch(o=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,o)}),i}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(We,t),i=Kt(n).pb(j);this.log.trace("send RESERVE to %p",e.remotePeer),await i.write({type:j.Type.RESERVE},t);let o;try{this.log.trace("reading response from %p",e.remotePeer),o=await i.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %o",o),o.status===H.OK&&o.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let h of o.reservation.addrs){let f=ve(h);f.getPeerId()==null&&(f=f.encapsulate(`/p2p/${e.remotePeer}`)),f=ve(f.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(f.toString())}return o.reservation.addrs=[...c].map(h=>ve(h).bytes),o.reservation}let a=`reservation failed with status ${o.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#t(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[pn]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#r())}#r(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Lr(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var B0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(ve)}catch{return!1}return!0},Ga={maxInboundStopStreams:mn,maxOutboundStopStreams:mn,stopTimeout:3e4},Li=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??Ga.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Ga.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Ga.stopTimeout,this.discovery=new Ni(e,{filter:t.discoveryFilter??Oa(zu,$u)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(s=>{s.name!=="HadEnoughRelaysError"&&s.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p",n.detail,s)})}),this.reservationStore=new Ri(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[ac]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[cc](){return this.discovery!=null?["@libp2p/identify"]:[]}[nc]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(nr,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await ic(this.discovery,this.reservationStore),this.started=!0}async stop(){await oc(this.discovery,this.reservationStore),await this.registrar.unhandle(nr),this.started=!1}async dial(e,t){if(e.protoCodes().filter(l=>l===ni).length!==1){let l="Invalid circuit relay address";throw this.log.error(l,e),new Vr(l)}let n=e.toString().split("/p2p-circuit"),s=ve(n[0]),i=ve(n[n.length-1]),o=s.getPeerId(),a=i.getPeerId();if(o==null||a==null){let l=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${l}`),new Vr(`C${l}`)}let c=sa(o),h=sa(a),u=this.connectionManager.getConnections(c)[0];u==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),t.onProgress?.(new zt("circuit-relay:open-connection")),u=await this.connectionManager.openConnection(c,t)):t.onProgress?.(new zt("circuit-relay:reuse-connection"));let g;try{t.onProgress?.(new zt("circuit-relay:open-hop-stream")),g=await u.newStream(We,t);let l=Kt(g),d=l.pb(j);t.onProgress?.(new zt("circuit-relay:write-connect-message")),await d.write({type:j.Type.CONNECT,peer:{id:h.toMultihash().bytes,addrs:[ve(i).bytes]}},t),t.onProgress?.(new zt("circuit-relay:read-connect-response"));let p=await d.read(t);if(p.status!==H.OK)throw new In(`failed to connect via relay with status ${p?.status?.toString()??"undefined"}`);let y=new vn(p.limit),b=qa({stream:l.unwrap(),remoteAddr:e,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:y.onData,onDataWrite:y.onData});return this.log("new outbound relayed connection %a",b.remoteAddr),await this.upgrader.upgradeOutbound(b,{...t,limits:y.getLimits()})}catch(l){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,l),g?.abort(l),l}}createListener(e){return wf({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>yi.exactMatch(t)||bi.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>hi.exactMatch(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(u){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",u)}let n=AbortSignal.timeout(this.stopTimeout),s=Kt(t).pb(Ke),i=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,i.type),i?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(i.type!==Ke.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!B0(i)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=fn(ze(i.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await s.write({type:Ke.Type.STATUS,status:H.OK},{signal:n});let a=new vn(i.limit),c=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),h=this.addressManager.getAddresses()[0],f=qa({stream:s.unwrap().unwrap(),remoteAddr:c,localAddr:h,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",f.remoteAddr),await this.upgrader.upgradeInbound(f,{limits:a.getLimits()}),this.log("%s connection %a upgraded","inbound",f.remoteAddr)}};function Ef(r={}){return e=>new Li(e,r)}return Of(_0);})();
7
7
  /*! Bundled license information:
8
8
 
9
9
  pvtsutils/build/index.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/circuit-relay-v2",
3
- "version": "3.1.2",
3
+ "version": "3.1.3-6ddc1b80e",
4
4
  "description": "Implementation of Circuit Relay v2",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-circuit-relay-v2#readme",
@@ -52,13 +52,13 @@
52
52
  "doc-check": "aegir doc-check"
53
53
  },
54
54
  "dependencies": {
55
- "@libp2p/crypto": "^5.0.7",
56
- "@libp2p/interface": "^2.2.1",
57
- "@libp2p/interface-internal": "^2.1.1",
58
- "@libp2p/peer-collections": "^6.0.12",
59
- "@libp2p/peer-id": "^5.0.8",
60
- "@libp2p/peer-record": "^8.0.12",
61
- "@libp2p/utils": "^6.2.1",
55
+ "@libp2p/crypto": "5.0.7-6ddc1b80e",
56
+ "@libp2p/interface": "2.2.1-6ddc1b80e",
57
+ "@libp2p/interface-internal": "2.1.1-6ddc1b80e",
58
+ "@libp2p/peer-collections": "6.0.12-6ddc1b80e",
59
+ "@libp2p/peer-id": "5.0.8-6ddc1b80e",
60
+ "@libp2p/peer-record": "8.0.12-6ddc1b80e",
61
+ "@libp2p/utils": "6.2.1-6ddc1b80e",
62
62
  "@multiformats/multiaddr": "^12.2.3",
63
63
  "@multiformats/multiaddr-matcher": "^1.3.0",
64
64
  "any-signal": "^4.1.1",
@@ -73,8 +73,8 @@
73
73
  "uint8arrays": "^5.1.0"
74
74
  },
75
75
  "devDependencies": {
76
- "@libp2p/interface-compliance-tests": "^6.1.10",
77
- "@libp2p/logger": "^5.1.4",
76
+ "@libp2p/interface-compliance-tests": "6.1.11-6ddc1b80e",
77
+ "@libp2p/logger": "5.1.4-6ddc1b80e",
78
78
  "aegir": "^44.0.1",
79
79
  "delay": "^6.0.0",
80
80
  "it-drain": "^3.0.7",
@@ -1,23 +0,0 @@
1
- {
2
- "codec": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.Limit.codec.html",
3
- "decode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.Limit.decode.html",
4
- "encode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.Limit.encode.html",
5
- "CircuitRelayServerComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServerComponents.html",
6
- "CircuitRelayServerInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServerInit.html",
7
- "CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayService.html",
8
- ".:CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayService.html",
9
- "CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServiceEvents.html",
10
- ".:CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServiceEvents.html",
11
- "CircuitRelayTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayTransportComponents.html",
12
- "CircuitRelayTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayTransportInit.html",
13
- "Limit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.Limit-1.html",
14
- "RelayDiscoveryComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.RelayDiscoveryComponents.html",
15
- "RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.RelayReservation.html",
16
- ".:RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.RelayReservation.html",
17
- "ServerReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.ServerReservationStoreInit.html",
18
- "TransportReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.TransportReservationStoreInit.html",
19
- "RELAY_V2_HOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit_relay_v2.RELAY_V2_HOP_CODEC.html",
20
- "RELAY_V2_STOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit_relay_v2.RELAY_V2_STOP_CODEC.html",
21
- "circuitRelayServer": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.circuitRelayServer.html",
22
- "circuitRelayTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.circuitRelayTransport.html"
23
- }