libp2p 2.10.0 → 3.0.0-049bfa0fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -37
- package/dist/index.min.js +14 -17
- package/dist/index.min.js.map +4 -4
- package/dist/src/address-manager/dns-mappings.d.ts +1 -2
- package/dist/src/address-manager/dns-mappings.d.ts.map +1 -1
- package/dist/src/address-manager/dns-mappings.js +39 -43
- package/dist/src/address-manager/dns-mappings.js.map +1 -1
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +31 -14
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/address-manager/ip-mappings.d.ts +1 -0
- package/dist/src/address-manager/ip-mappings.d.ts.map +1 -1
- package/dist/src/address-manager/ip-mappings.js +51 -40
- package/dist/src/address-manager/ip-mappings.js.map +1 -1
- package/dist/src/address-manager/observed-addresses.d.ts.map +1 -1
- package/dist/src/address-manager/observed-addresses.js +1 -3
- package/dist/src/address-manager/observed-addresses.js.map +1 -1
- package/dist/src/address-manager/transport-addresses.d.ts.map +1 -1
- package/dist/src/address-manager/transport-addresses.js +6 -8
- package/dist/src/address-manager/transport-addresses.js.map +1 -1
- package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
- package/dist/src/config/connection-gater.browser.js +8 -22
- package/dist/src/config/connection-gater.browser.js.map +1 -1
- package/dist/src/config/connection-gater.d.ts.map +1 -1
- package/dist/src/config/connection-gater.js +1 -12
- package/dist/src/config/connection-gater.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +3 -22
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/address-sorter.d.ts.map +1 -1
- package/dist/src/connection-manager/address-sorter.js +1 -2
- package/dist/src/connection-manager/address-sorter.js.map +1 -1
- package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
- package/dist/src/connection-manager/connection-pruner.js +7 -3
- package/dist/src/connection-manager/connection-pruner.js.map +1 -1
- package/dist/src/connection-manager/constants.defaults.d.ts +4 -0
- package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
- package/dist/src/connection-manager/constants.defaults.js +4 -0
- package/dist/src/connection-manager/constants.defaults.js.map +1 -1
- package/dist/src/connection-manager/dial-queue.d.ts +2 -2
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
- package/dist/src/connection-manager/dial-queue.js +11 -23
- package/dist/src/connection-manager/dial-queue.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +10 -18
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +44 -26
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/connection-manager/reconnect-queue.js +1 -1
- package/dist/src/connection-manager/reconnect-queue.js.map +1 -1
- package/dist/src/connection-manager/utils.d.ts +31 -3
- package/dist/src/connection-manager/utils.d.ts.map +1 -1
- package/dist/src/connection-manager/utils.js +99 -18
- package/dist/src/connection-manager/utils.js.map +1 -1
- package/dist/src/connection-monitor.d.ts +1 -1
- package/dist/src/connection-monitor.d.ts.map +1 -1
- package/dist/src/connection-monitor.js +2 -3
- package/dist/src/connection-monitor.js.map +1 -1
- package/dist/src/connection.d.ts +14 -9
- package/dist/src/connection.d.ts.map +1 -1
- package/dist/src/connection.js +118 -139
- package/dist/src/connection.js.map +1 -1
- package/dist/src/get-peer.js +3 -3
- package/dist/src/get-peer.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +2 -2
- package/dist/src/libp2p.d.ts +3 -1
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +13 -7
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/peer-routing.js +1 -1
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/random-walk.d.ts.map +1 -1
- package/dist/src/random-walk.js +13 -3
- package/dist/src/random-walk.js.map +1 -1
- package/dist/src/registrar.d.ts +8 -4
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +66 -46
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/transport-manager.js +15 -2
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +26 -16
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +88 -122
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/utils.d.ts +3 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +25 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +27 -30
- package/src/address-manager/dns-mappings.ts +50 -50
- package/src/address-manager/index.ts +37 -17
- package/src/address-manager/ip-mappings.ts +64 -44
- package/src/address-manager/observed-addresses.ts +1 -3
- package/src/address-manager/transport-addresses.ts +7 -9
- package/src/config/connection-gater.browser.ts +8 -24
- package/src/config/connection-gater.ts +1 -12
- package/src/config.ts +3 -25
- package/src/connection-manager/address-sorter.ts +1 -2
- package/src/connection-manager/connection-pruner.ts +8 -3
- package/src/connection-manager/constants.defaults.ts +5 -0
- package/src/connection-manager/dial-queue.ts +12 -27
- package/src/connection-manager/index.ts +60 -45
- package/src/connection-manager/reconnect-queue.ts +1 -1
- package/src/connection-manager/utils.ts +129 -21
- package/src/connection-monitor.ts +3 -4
- package/src/connection.ts +142 -179
- package/src/get-peer.ts +3 -3
- package/src/index.ts +2 -2
- package/src/libp2p.ts +16 -9
- package/src/peer-routing.ts +1 -1
- package/src/random-walk.ts +13 -3
- package/src/registrar.ts +87 -61
- package/src/transport-manager.ts +18 -2
- package/src/upgrader.ts +132 -149
- package/src/utils.ts +31 -0
- package/src/version.ts +1 -1
- package/dist/typedoc-urls.json +0 -24
package/dist/index.min.js
CHANGED
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2P = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Libp2P=(()=>{var pm=Object.create;var Jo=Object.defineProperty;var mm=Object.getOwnPropertyDescriptor;var gm=Object.getOwnPropertyNames;var ym=Object.getPrototypeOf,bm=Object.prototype.hasOwnProperty;var Kr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Bt=(r,t)=>{for(var e in t)Jo(r,e,{get:t[e],enumerable:!0})},cf=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of gm(t))!bm.call(r,o)&&o!==e&&Jo(r,o,{get:()=>t[o],enumerable:!(n=mm(t,o))||n.enumerable});return r};var ts=(r,t,e)=>(e=r!=null?pm(ym(r)):{},cf(t||!r||!r.__esModule?Jo(e,"default",{value:r,enumerable:!0}):e,r)),wm=r=>cf(Jo({},"__esModule",{value:!0}),r);var Eh=Kr((v_,Cl)=>{"use strict";var h0=Object.prototype.hasOwnProperty,Mt="~";function Eo(){}Object.create&&(Eo.prototype=Object.create(null),new Eo().__proto__||(Mt=!1));function p0(r,t,e){this.fn=r,this.context=t,this.once=e||!1}function xh(r,t,e,n,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new p0(e,n||r,o),i=Mt?Mt+t:t;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function Us(r,t){--r._eventsCount===0?r._events=new Eo:delete r._events[t]}function Ct(){this._events=new Eo,this._eventsCount=0}Ct.prototype.eventNames=function(){var t=[],e,n;if(this._eventsCount===0)return t;for(n in e=this._events)h0.call(e,n)&&t.push(Mt?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Ct.prototype.listeners=function(t){var e=Mt?Mt+t:t,n=this._events[e];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Ct.prototype.listenerCount=function(t){var e=Mt?Mt+t:t,n=this._events[e];return n?n.fn?1:n.length:0};Ct.prototype.emit=function(t,e,n,o,s,i){var a=Mt?Mt+t:t;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,n),!0;case 4:return c.fn.call(c.context,e,n,o),!0;case 5:return c.fn.call(c.context,e,n,o,s),!0;case 6:return c.fn.call(c.context,e,n,o,s,i),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var d=c.length,h;for(f=0;f<d;f++)switch(c[f].once&&this.removeListener(t,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,e);break;case 3:c[f].fn.call(c[f].context,e,n);break;case 4:c[f].fn.call(c[f].context,e,n,o);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[f].fn.apply(c[f].context,u)}}return!0};Ct.prototype.on=function(t,e,n){return xh(this,t,e,n,!1)};Ct.prototype.once=function(t,e,n){return xh(this,t,e,n,!0)};Ct.prototype.removeListener=function(t,e,n,o){var s=Mt?Mt+t:t;if(!this._events[s])return this;if(!e)return Us(this,s),this;var i=this._events[s];if(i.fn)i.fn===e&&(!o||i.once)&&(!n||i.context===n)&&Us(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==e||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:Us(this,s)}return this};Ct.prototype.removeAllListeners=function(t){var e;return t?(e=Mt?Mt+t:t,this._events[e]&&Us(this,e)):(this._events=new Eo,this._eventsCount=0),this};Ct.prototype.off=Ct.prototype.removeListener;Ct.prototype.addListener=Ct.prototype.on;Ct.prefixed=Mt;Ct.EventEmitter=Ct;typeof Cl<"u"&&(Cl.exports=Ct)});var Ch=Kr((H_,Ah)=>{Ah.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var t=0,e=Object.create(null),n=Object.create(null);function o(s,i){e[s]=i,t++,t>=r&&(t=0,n=e,e=Object.create(null))}return{has:function(s){return e[s]!==void 0||n[s]!==void 0},remove:function(s){e[s]!==void 0&&(e[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=e[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){e[s]!==void 0?e[s]=i:o(s,i)},clear:function(){e=Object.create(null),n=Object.create(null)}}}});var Ap=Kr(Fo=>{(function(){var r,t,e,n,o,s,i,a;a=function(c){var l,u,f,d;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,d=c&255,[l,u,f,d].join(".")},i=function(c){var l,u,f,d,h,p;for(l=[],f=d=0;d<=3&&c.length!==0;f=++d){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=t(c),h=p[0],u=p[1],c=c.substring(u),l.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},e=function(c){return c.charCodeAt(0)},n=e("0"),s=e("a"),o=e("A"),t=function(c){var l,u,f,d,h;for(d=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),h=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)d=d*l+(e(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")d=d*l+(10+e(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")d=d*l+(10+e(c[f])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");f++}if(f===h)throw new Error("empty octet");return[d,f]},r=(function(){function c(l,u){var f,d,h,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(p=l.split("/",2),l=p[0],u=p[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=i(u)}catch(m){throw f=m,new Error("Invalid mask: "+u)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(m){throw f=m,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,d;for(d=i(this.first),f=i(this.last),u=0;d<=f;)l(a(d),d,u),u++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c})(),Fo.ip2long=i,Fo.long2ip=a,Fo.Netmask=r}).call(Fo)});var Qp=Kr((MP,Yp)=>{function ee(r,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Yp.exports=ee;ee.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};ee.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};ee.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var t=new Date().getTime();if(r&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var e=this._timeouts.shift();if(e===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),e=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},e),this._options.unref&&this._timer.unref(),!0};ee.prototype.attempt=function(r,t){this._fn=r,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var e=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){e._operationTimeoutCb()},e._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};ee.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};ee.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};ee.prototype.start=ee.prototype.try;ee.prototype.errors=function(){return this._errors};ee.prototype.attempts=function(){return this._attempts};ee.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},t=null,e=0,n=0;n<this._errors.length;n++){var o=this._errors[n],s=o.message,i=(r[s]||0)+1;r[s]=i,i>=e&&(t=o,e=i)}return t}});var Jp=Kr(Br=>{var Cw=Qp();Br.operation=function(r){var t=Br.timeouts(r);return new Cw(t,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Br.timeouts=function(r){if(r instanceof Array)return[].concat(r);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var e in r)t[e]=r[e];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],o=0;o<t.retries;o++)n.push(this.createTimeout(o,t));return r&&r.forever&&!n.length&&n.push(this.createTimeout(o,t)),n.sort(function(s,i){return s-i}),n};Br.createTimeout=function(r,t){var e=t.randomize?Math.random()+1:1,n=Math.round(e*Math.max(t.minTimeout,1)*Math.pow(t.factor,r));return n=Math.min(n,t.maxTimeout),n};Br.wrap=function(r,t,e){if(t instanceof Array&&(e=t,t=null),!e){e=[];for(var n in r)typeof r[n]=="function"&&e.push(n)}for(var o=0;o<e.length;o++){var s=e[o],i=r[s];r[s]=function(c){var l=Br.operation(t),u=Array.prototype.slice.call(arguments,1),f=u.pop();u.push(function(d){l.retry(d)||(d&&(arguments[0]=l.mainError()),f.apply(this,arguments))}),l.attempt(function(){c.apply(r,u)})}.bind(r,i),r[s].options=t}}});var em=Kr((BP,tm)=>{tm.exports=Jp()});var ox={};Bt(ox,{createLibp2p:()=>ex,dnsaddrResolver:()=>Ne,isLibp2p:()=>nx});var lf=Symbol.for("@libp2p/connection");var Ua=Symbol.for("@libp2p/content-routing");var Fa=Symbol.for("@libp2p/peer-discovery");var es=Symbol.for("@libp2p/peer-id");function Ke(r){return!!r?.[es]}var Ka=Symbol.for("@libp2p/peer-routing");var qa="keep-alive";var dx=Symbol.for("@libp2p/transport");var or;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(or||(or={}));var re=class extends Error{static name="AbortError";constructor(t="The operation was aborted"){super(t),this.name="AbortError"}};var k=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},qr=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}},Nn=class extends Error{static name="InvalidPrivateKeyError";constructor(t="Invalid private key"){super(t),this.name="InvalidPrivateKeyError"}};var rs=class extends Error{static name="ConnectionClosingError";constructor(t="The connection is closing"){super(t),this.name="ConnectionClosingError"}},Vr=class extends Error{static name="ConnectionClosedError";constructor(t="The connection is closed"){super(t),this.name="ConnectionClosedError"}};var sr=class extends Error{static name="NotFoundError";constructor(t="Not found"){super(t),this.name="NotFoundError"}},zr=class extends Error{static name="InvalidPeerIdError";constructor(t="Invalid PeerID"){super(t),this.name="InvalidPeerIdError"}},qe=class extends Error{static name="InvalidMultiaddrError";constructor(t="Invalid multiaddr"){super(t),this.name="InvalidMultiaddrError"}},ns=class extends Error{static name="InvalidCIDError";constructor(t="Invalid CID"){super(t),this.name="InvalidCIDError"}},os=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}},Bn=class extends Error{static name="UnsupportedProtocolError";constructor(t="Unsupported protocol error"){super(t),this.name="UnsupportedProtocolError"}},ss=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var is=class extends Error{static name="TimeoutError";constructor(t="Timed out"){super(t),this.name="TimeoutError"}},we=class extends Error{static name="NotStartedError";constructor(t="Not started"){super(t),this.name="NotStartedError"}};var $r=class extends Error{static name="DialError";constructor(t="Dial error"){super(t),this.name="DialError"}};var Un=class extends Error{static name="LimitedConnectionError";constructor(t="Limited connection"){super(t),this.name="LimitedConnectionError"}},as=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(t="Too many inbound protocol streams"){super(t),this.name="TooManyInboundProtocolStreamsError"}},cs=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(t="Too many outbound protocol streams"){super(t),this.name="TooManyOutboundProtocolStreamsError"}},Ve=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Vt=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};function ls(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function uf(...r){let t=[];for(let e of r)ls(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStart!=null&&await e.beforeStart()})),await Promise.all(t.map(async e=>{await e.start()})),await Promise.all(t.map(async e=>{e.afterStart!=null&&await e.afterStart()}))}async function ff(...r){let t=[];for(let e of r)ls(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStop!=null&&await e.beforeStop()})),await Promise.all(t.map(async e=>{await e.stop()})),await Promise.all(t.map(async e=>{e.afterStop!=null&&await e.afterStop()}))}var Fn=Symbol.for("@libp2p/service-capabilities"),Va=Symbol.for("@libp2p/service-dependencies");var Ga={};Bt(Ga,{base58btc:()=>Y,base58flickr:()=>Cm});var Ux=new Uint8Array(0);function df(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function xe(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function hf(r){return new TextEncoder().encode(r)}function pf(r){return new TextDecoder().decode(r)}function xm(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,x=0,g=0,_=p.length;g!==_&&p[g]===0;)g++,m++;for(var w=(_-g)*u+1>>>0,A=new Uint8Array(w);g!==_;){for(var R=p[g],K=0,V=w-1;(R!==0||K<x)&&V!==-1;V--,K++)R+=256*A[V]>>>0,A[V]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");x=K,g++}for(var M=w-x;M!==w&&A[M]===0;)M++;for(var v=c.repeat(m);M<w;++M)v+=r.charAt(A[M]);return v}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var x=0,g=0;p[m]===c;)x++,m++;for(var _=(p.length-m)*l+1>>>0,w=new Uint8Array(_);p[m];){var A=e[p.charCodeAt(m)];if(A===255)return;for(var R=0,K=_-1;(A!==0||R<g)&&K!==-1;K--,R++)A+=a*w[K]>>>0,w[K]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");g=R,m++}if(p[m]!==" "){for(var V=_-g;V!==_&&w[V]===0;)V++;for(var M=new Uint8Array(x+(_-V)),v=x;V!==_;)M[v++]=w[V++];return M}}}function h(p){var m=d(p);if(m)return m;throw new Error(`Non-${t} character`)}return{encode:f,decodeUnsafe:d,decode:h}}var Em=xm,vm=Em,gf=vm;var za=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},$a=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let o=e.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return yf(this,t)}},Ha=class{decoders;constructor(t){this.decoders=t}or(t){return yf(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function yf(r,t){return new Ha({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var Wa=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new za(t,e,n),this.decoder=new $a(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function Hr({name:r,prefix:t,encode:e,decode:n}){return new Wa(r,t,e,n)}function ze({name:r,prefix:t,alphabet:e}){let{encode:n,decode:o}=gf(e,r);return Hr({prefix:t,name:r,encode:n,decode:s=>xe(o(s))})}function _m(r,t,e,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*e/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=t[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<e|u,i+=e,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=e||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Sm(r,t,e){let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i!==0&&(s+=t[o&a<<e-i]),n)for(;(s.length*e&7)!==0;)s+="=";return s}function Am(r){let t={};for(let e=0;e<r.length;++e)t[r[e]]=e;return t}function at({name:r,prefix:t,bitsPerChar:e,alphabet:n}){let o=Am(n);return Hr({prefix:t,name:r,encode(s){return Sm(s,n,e)},decode(s){return _m(s,o,e,r)}})}var Y=ze({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Cm=ze({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ja={};Bt(ja,{base32:()=>Xt,base32hex:()=>Dm,base32hexpad:()=>Rm,base32hexpadupper:()=>Om,base32hexupper:()=>Lm,base32pad:()=>Tm,base32padupper:()=>Pm,base32upper:()=>Im,base32z:()=>km});var Xt=at({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Im=at({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Tm=at({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Pm=at({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Dm=at({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Lm=at({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Rm=at({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Om=at({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),km=at({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Xa={};Bt(Xa,{base36:()=>Kn,base36upper:()=>Mm});var Kn=ze({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Mm=ze({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Nm=xf,bf=128,Bm=127,Um=~Bm,Fm=Math.pow(2,31);function xf(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Fm;)t[e++]=r&255|bf,r/=128;for(;r&Um;)t[e++]=r&255|bf,r>>>=7;return t[e]=r|0,xf.bytes=e-n+1,t}var Km=Za,qm=128,wf=127;function Za(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Za.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&wf)<<o:(i&wf)*Math.pow(2,o),o+=7}while(i>=qm);return Za.bytes=s-n,e}var Vm=Math.pow(2,7),zm=Math.pow(2,14),$m=Math.pow(2,21),Hm=Math.pow(2,28),Wm=Math.pow(2,35),Gm=Math.pow(2,42),jm=Math.pow(2,49),Xm=Math.pow(2,56),Zm=Math.pow(2,63),Ym=function(r){return r<Vm?1:r<zm?2:r<$m?3:r<Hm?4:r<Wm?5:r<Gm?6:r<jm?7:r<Xm?8:r<Zm?9:10},Qm={encode:Nm,decode:Km,encodingLength:Ym},Jm=Qm,qn=Jm;function Vn(r,t=0){return[qn.decode(r,t),qn.decode.bytes]}function Wr(r,t,e=0){return qn.encode(r,t,e),t}function Gr(r){return qn.encodingLength(r)}function de(r,t){let e=t.byteLength,n=Gr(r),o=n+Gr(e),s=new Uint8Array(o+e);return Wr(r,s,0),Wr(e,s,n),s.set(t,o),new jr(r,e,t,s)}function Ee(r){let t=xe(r),[e,n]=Vn(t),[o,s]=Vn(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new jr(e,o,i,t)}function Ef(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&df(r.bytes,e.bytes)}}var jr=class{code;size;digest;bytes;constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};function vf(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return eg(e,Ya(r),t??Y.encoder);default:return rg(e,Ya(r),t??Xt.encoder)}}var _f=new WeakMap;function Ya(r){let t=_f.get(r);if(t==null){let e=new Map;return _f.set(r,e),e}return t}var nt=class r{code;version;multihash;bytes;"/";constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==zn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==ng)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=de(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&Ef(t.multihash,n.multihash)}toString(t){return vf(this,t)}toJSON(){return{"/":vf(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i??Sf(n,o,s.bytes))}else if(e[og]===!0){let{version:n,multihash:o,code:s}=e,i=Ee(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==zn)throw new Error(`Version 0 CID must use dag-pb (code: ${zn}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Sf(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,zn,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=xe(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new jr(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[f,d]=Vn(t.subarray(e));return e+=d,f},o=n(),s=zn;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),c=n(),l=e+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(t,e){let[n,o]=tg(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ya(s).set(n,t),s}};function tg(r,t){switch(r[0]){case"Q":{let e=t??Y;return[Y.prefix,e.decode(`${Y.prefix}${r}`)]}case Y.prefix:{let e=t??Y;return[Y.prefix,e.decode(r)]}case Xt.prefix:{let e=t??Xt;return[Xt.prefix,e.decode(r)]}case Kn.prefix:{let e=t??Kn;return[Kn.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function eg(r,t,e){let{prefix:n}=e;if(n!==Y.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o}function rg(r,t,e){let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o}var zn=112,ng=18;function Sf(r,t,e){let n=Gr(r),o=n+Gr(t),s=new Uint8Array(o+e.byteLength);return Wr(r,s,0),Wr(t,s,n),s.set(e,o),s}var og=Symbol.for("@ipld/js-cid/CID");var Qa={};Bt(Qa,{identity:()=>ne});var Af=0,sg="identity",Cf=xe;function ig(r,t){if(t?.truncate!=null&&t.truncate!==r.byteLength){if(t.truncate<0||t.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t.truncate)}return de(Af,Cf(r))}var ne={code:Af,name:sg,encode:Cf,digest:ig};function Z(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ct(r=0){return new Uint8Array(r)}function _t(r=0){return new Uint8Array(r)}function oe(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=_t(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return e}var Tf=Symbol.for("@achingbrain/uint8arraylist");function If(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function fs(r){return!!r?.[Tf]}var W=class r{bufs;length;[Tf]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(fs(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(fs(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=If(this.bufs,t);return e.buf[e.index]}set(t,e){let n=If(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(fs(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return oe(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:oe(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,t>=c)continue;let l=t>=a&&t<c,u=e>a&&e<=c;if(l&&u){if(t===a&&e===c){n.push(i);break}let f=t-a;n.push(i.subarray(f,f+(e-t)));break}if(l){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(u){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!fs(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=e;f<=c;f+=u){u=0;for(let d=l;d>=0;d--){let h=this.get(f+d);if(n[d]!==h){u=Math.max(1,d-a[h]);break}}if(u===0)return f}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=_t(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=_t(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Z(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};var Ja={};Bt(Ja,{base10:()=>ag});var ag=ze({prefix:"9",name:"base10",alphabet:"0123456789"});var tc={};Bt(tc,{base16:()=>cg,base16upper:()=>lg});var cg=at({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),lg=at({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ec={};Bt(ec,{base2:()=>ug});var ug=at({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var rc={};Bt(rc,{base256emoji:()=>mg});var Pf=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),fg=Pf.reduce((r,t,e)=>(r[e]=t,r),[]),dg=Pf.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function hg(r){return r.reduce((t,e)=>(t+=fg[e],t),"")}function pg(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let o=dg[n];if(o==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(o)}return new Uint8Array(t)}var mg=Hr({prefix:"\u{1F680}",name:"base256emoji",encode:hg,decode:pg});var sc={};Bt(sc,{base64:()=>nc,base64pad:()=>gg,base64url:()=>oc,base64urlpad:()=>yg});var nc=at({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),gg=at({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),oc=at({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),yg=at({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var ic={};Bt(ic,{base8:()=>bg});var bg=at({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ac={};Bt(ac,{identity:()=>wg});var wg=Hr({prefix:"\0",name:"identity",encode:r=>pf(r),decode:r=>hf(r)});var EE=new TextEncoder,vE=new TextDecoder;var uc={};Bt(uc,{sha256:()=>Xr,sha512:()=>_g});var vg=20;function lc({name:r,code:t,encode:e,minDigestLength:n,maxDigestLength:o}){return new cc(r,t,e,n,o)}var cc=class{name;code;encode;minDigestLength;maxDigestLength;constructor(t,e,n,o,s){this.name=t,this.code=e,this.encode=n,this.minDigestLength=o??vg,this.maxDigestLength=s}digest(t,e){if(e?.truncate!=null){if(e.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&e.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(t instanceof Uint8Array){let n=this.encode(t);return n instanceof Uint8Array?Df(n,this.code,e?.truncate):n.then(o=>Df(o,this.code,e?.truncate))}else throw Error("Unknown type, must be binary type")}};function Df(r,t,e){if(e!=null&&e!==r.byteLength){if(e>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e)}return de(t,r)}function Rf(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var Xr=lc({name:"sha2-256",code:18,encode:Rf("SHA-256")}),_g=lc({name:"sha2-512",code:19,encode:Rf("SHA-512")});var $n={...ac,...ec,...ic,...Ja,...tc,...ja,...Xa,...Ga,...sc,...rc},kE={...uc,...Qa};function kf(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Of=kf("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),fc=kf("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=_t(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Sg={utf8:Of,"utf-8":Of,hex:$n.base16,latin1:fc,ascii:fc,binary:fc,...$n},ds=Sg;function C(r,t="utf8"){let e=ds[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function U(r,t="utf8"){let e=ds[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}var Ag=parseInt("11111",2),dc=parseInt("10000000",2),Cg=parseInt("01111111",2),Mf={0:Hn,1:Hn,2:Ig,3:Dg,4:Lg,5:Pg,6:Tg,16:Hn,22:Hn,48:Hn};function ve(r,t={offset:0}){let e=r[t.offset]&Ag;if(t.offset++,Mf[e]!=null)return Mf[e](r,t);throw new Error("No decoder for tag "+e)}function Wn(r,t){let e=0;if((r[t.offset]&dc)===dc){let n=r[t.offset]&Cg,o="0x";t.offset++;for(let s=0;s<n;s++,t.offset++)o+=r[t.offset].toString(16).padStart(2,"0");e=parseInt(o,16)}else e=r[t.offset],t.offset++;return e}function Hn(r,t){Wn(r,t);let e=[];for(;!(t.offset>=r.byteLength);){let n=ve(r,t);if(n===null)break;e.push(n)}return e}function Ig(r,t){let e=Wn(r,t),n=t.offset,o=t.offset+e,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return t.offset+=e,Uint8Array.from(s)}function Tg(r,t){let e=Wn(r,t),n=t.offset+e,o=r[t.offset];t.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;t.offset<n;){let l=r[t.offset];if(t.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function Pg(r,t){return t.offset++,null}function Dg(r,t){let e=Wn(r,t),n=r[t.offset];t.offset++;let o=r.subarray(t.offset,t.offset+e-1);if(t.offset+=e,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Lg(r,t){let e=Wn(r,t),n=r.subarray(t.offset,t.offset+e);return t.offset+=e,n}function Rg(r){let t=r.toString(16);t.length%2===1&&(t="0"+t);let e=new W;for(let n=0;n<t.length;n+=2)e.append(Uint8Array.from([parseInt(`${t[n]}${t[n+1]}`,16)]));return e}function hs(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let t=Rg(r.byteLength);return new W(Uint8Array.from([t.byteLength|dc]),t)}function Pt(r){let t=new W,e=128;return(r.subarray()[0]&e)===e&&t.append(Uint8Array.from([0])),t.append(r),new W(Uint8Array.from([2]),hs(t),t)}function Gn(r){let t=Uint8Array.from([0]),e=new W(t,r);return new W(Uint8Array.from([3]),hs(e),e)}function Nf(r){return new W(Uint8Array.from([4]),hs(r),r)}function se(r,t=48){let e=new W;for(let n of r)e.append(n);return new W(Uint8Array.from([t]),hs(e),e)}async function Bf(r="P-256"){let t=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",t.publicKey),privateKey:await crypto.subtle.exportKey("jwk",t.privateKey)}}async function Uf(r,t,e){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);e?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Ff(r,t,e,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,t,e.subarray());return n?.signal?.throwIfAborted(),s}var Og=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),kg=Uint8Array.from([6,5,43,129,4,0,34]),Mg=Uint8Array.from([6,5,43,129,4,0,35]),Ng={ext:!0,kty:"EC",crv:"P-256"},Bg={ext:!0,kty:"EC",crv:"P-384"},Ug={ext:!0,kty:"EC",crv:"P-521"},hc=32,pc=48,mc=66;function gc(r){let t=ve(r);return Kf(t)}function Kf(r){let t=r[1][1][0],e=1,n,o;if(t.byteLength===hc*2+1)return n=U(t.subarray(e,e+hc),"base64url"),o=U(t.subarray(e+hc),"base64url"),new ir({...Ng,key_ops:["verify"],x:n,y:o});if(t.byteLength===pc*2+1)return n=U(t.subarray(e,e+pc),"base64url"),o=U(t.subarray(e+pc),"base64url"),new ir({...Bg,key_ops:["verify"],x:n,y:o});if(t.byteLength===mc*2+1)return n=U(t.subarray(e,e+mc),"base64url"),o=U(t.subarray(e+mc),"base64url"),new ir({...Ug,key_ops:["verify"],x:n,y:o});throw new k(`coordinates were wrong length, got ${t.byteLength}, expected 65, 97 or 133`)}function qf(r){return se([Pt(Uint8Array.from([1])),Nf(C(r.d??"","base64url")),se([zf(r.crv)],160),se([Gn(new W(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function Vf(r){return se([Pt(Uint8Array.from([1])),se([zf(r.crv)],160),se([Gn(new W(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function zf(r){if(r==="P-256")return Og;if(r==="P-384")return kg;if(r==="P-521")return Mg;throw new k(`Invalid curve ${r}`)}async function $f(r="P-256"){let t=await Bf(r);return new ps(t.privateKey)}var ir=class{type="ECDSA";jwk;_raw;constructor(t){this.jwk=t}get raw(){return this._raw==null&&(this._raw=Vf(this.jwk)),this._raw}toMultihash(){return ne.digest(Zt(this))}toCID(){return nt.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}async verify(t,e,n){return Ff(this.jwk,e,t,n)}},ps=class{type="ECDSA";jwk;publicKey;_raw;constructor(t){this.jwk=t,this.publicKey=new ir({crv:t.crv,ext:t.ext,key_ops:["verify"],kty:"EC",x:t.x,y:t.y})}get raw(){return this._raw==null&&(this._raw=qf(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}async sign(t,e){return Uf(this.jwk,t,e)}};var ar=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Se(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function jn(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Ut(r,...t){if(!Se(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function ms(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");jn(r.outputLen),jn(r.blockLen)}function Yr(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function Wf(r,t){Ut(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function Ae(...r){for(let t=0;t<r.length;t++)r[t].fill(0)}function gs(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function ie(r,t){return r<<32-t|r>>>t}var Gf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Fg=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function Yt(r){if(Ut(r),Gf)return r.toHex();let t="";for(let e=0;e<r.length;e++)t+=Fg[r[e]];return t}var _e={_0:48,_9:57,A:65,F:70,a:97,f:102};function Hf(r){if(r>=_e._0&&r<=_e._9)return r-_e._0;if(r>=_e.A&&r<=_e.F)return r-(_e.A-10);if(r>=_e.a&&r<=_e.f)return r-(_e.a-10)}function cr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(Gf)return Uint8Array.fromHex(r);let t=r.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let o=0,s=0;o<e;o++,s+=2){let i=Hf(r.charCodeAt(s)),a=Hf(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function yc(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function Xn(r){return typeof r=="string"&&(r=yc(r)),Ut(r),r}function Dt(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];Ut(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var Zr=class{};function bc(r){let t=n=>r().update(Xn(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function He(r=32){if(ar&&typeof ar.getRandomValues=="function")return ar.getRandomValues(new Uint8Array(r));if(ar&&typeof ar.randomBytes=="function")return Uint8Array.from(ar.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Kg(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,l=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+l,a,n)}function jf(r,t,e){return r&t^~r&e}function Xf(r,t,e){return r&t^r&e^t&e}var Zn=class extends Zr{constructor(t,e,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=gs(this.buffer)}update(t){Yr(this),t=Xn(t),Ut(t);let{view:e,buffer:n,blockLen:o}=this,s=t.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=gs(t);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Yr(this),Wf(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;e[i++]=128,Ae(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)e[f]=0;Kg(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=gs(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return t.destroyed=i,t.finished=s,t.length=o,t.pos=a,o%e&&t.buffer.set(n),t}clone(){return this._cloneInto()}},Ce=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var bt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var ys=BigInt(4294967295),Zf=BigInt(32);function qg(r,t=!1){return t?{h:Number(r&ys),l:Number(r>>Zf&ys)}:{h:Number(r>>Zf&ys)|0,l:Number(r&ys)|0}}function Yf(r,t=!1){let e=r.length,n=new Uint32Array(e),o=new Uint32Array(e);for(let s=0;s<e;s++){let{h:i,l:a}=qg(r[s],t);[n[s],o[s]]=[i,a]}return[n,o]}var wc=(r,t,e)=>r>>>e,xc=(r,t,e)=>r<<32-e|t>>>e,lr=(r,t,e)=>r>>>e|t<<32-e,ur=(r,t,e)=>r<<32-e|t>>>e,Yn=(r,t,e)=>r<<64-e|t>>>e-32,Qn=(r,t,e)=>r>>>e-32|t<<64-e;function he(r,t,e,n){let o=(t>>>0)+(n>>>0);return{h:r+e+(o/2**32|0)|0,l:o|0}}var Qf=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),Jf=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,td=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),ed=(r,t,e,n,o)=>t+e+n+o+(r/2**32|0)|0,rd=(r,t,e,n,o)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),nd=(r,t,e,n,o,s)=>t+e+n+o+s+(r/2**32|0)|0;var zg=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),We=new Uint32Array(64),bs=class extends Zn{constructor(t=32){super(64,t,8,!1),this.A=Ce[0]|0,this.B=Ce[1]|0,this.C=Ce[2]|0,this.D=Ce[3]|0,this.E=Ce[4]|0,this.F=Ce[5]|0,this.G=Ce[6]|0,this.H=Ce[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(t,e){for(let f=0;f<16;f++,e+=4)We[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=We[f-15],h=We[f-2],p=ie(d,7)^ie(d,18)^d>>>3,m=ie(h,17)^ie(h,19)^h>>>10;We[f]=m+We[f-7]+p+We[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=ie(a,6)^ie(a,11)^ie(a,25),h=u+d+jf(a,c,l)+zg[f]+We[f]|0,m=(ie(n,2)^ie(n,13)^ie(n,22))+Xf(n,o,s)|0;u=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){Ae(We)}destroy(){this.set(0,0,0,0,0,0,0,0),Ae(this.buffer)}};var od=Yf(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),$g=od[0],Hg=od[1],Ge=new Uint32Array(80),je=new Uint32Array(80),Ec=class extends Zn{constructor(t=64){super(128,t,16,!1),this.Ah=bt[0]|0,this.Al=bt[1]|0,this.Bh=bt[2]|0,this.Bl=bt[3]|0,this.Ch=bt[4]|0,this.Cl=bt[5]|0,this.Dh=bt[6]|0,this.Dl=bt[7]|0,this.Eh=bt[8]|0,this.El=bt[9]|0,this.Fh=bt[10]|0,this.Fl=bt[11]|0,this.Gh=bt[12]|0,this.Gl=bt[13]|0,this.Hh=bt[14]|0,this.Hl=bt[15]|0}get(){let{Ah:t,Al:e,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:d,Gh:h,Gl:p,Hh:m,Hl:x}=this;return[t,e,n,o,s,i,a,c,l,u,f,d,h,p,m,x]}set(t,e,n,o,s,i,a,c,l,u,f,d,h,p,m,x){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=m|0,this.Hl=x|0}process(t,e){for(let w=0;w<16;w++,e+=4)Ge[w]=t.getUint32(e),je[w]=t.getUint32(e+=4);for(let w=16;w<80;w++){let A=Ge[w-15]|0,R=je[w-15]|0,K=lr(A,R,1)^lr(A,R,8)^wc(A,R,7),V=ur(A,R,1)^ur(A,R,8)^xc(A,R,7),M=Ge[w-2]|0,v=je[w-2]|0,D=lr(M,v,19)^Yn(M,v,61)^wc(M,v,6),F=ur(M,v,19)^Qn(M,v,61)^xc(M,v,6),L=td(V,F,je[w-7],je[w-16]),E=ed(L,K,D,Ge[w-7],Ge[w-16]);Ge[w]=E|0,je[w]=L|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:d,Fh:h,Fl:p,Gh:m,Gl:x,Hh:g,Hl:_}=this;for(let w=0;w<80;w++){let A=lr(f,d,14)^lr(f,d,18)^Yn(f,d,41),R=ur(f,d,14)^ur(f,d,18)^Qn(f,d,41),K=f&h^~f&m,V=d&p^~d&x,M=rd(_,R,V,Hg[w],je[w]),v=nd(M,g,A,K,$g[w],Ge[w]),D=M|0,F=lr(n,o,28)^Yn(n,o,34)^Yn(n,o,39),L=ur(n,o,28)^Qn(n,o,34)^Qn(n,o,39),E=n&s^n&a^s&a,y=o&i^o&c^i&c;g=m|0,_=x|0,m=h|0,x=p|0,h=f|0,p=d|0,{h:f,l:d}=he(l|0,u|0,v|0,D|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let b=Qf(D,L,y);n=Jf(b,v,F,E),o=b|0}({h:n,l:o}=he(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=he(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=he(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=he(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:d}=he(this.Eh|0,this.El|0,f|0,d|0),{h,l:p}=he(this.Fh|0,this.Fl|0,h|0,p|0),{h:m,l:x}=he(this.Gh|0,this.Gl|0,m|0,x|0),{h:g,l:_}=he(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,o,s,i,a,c,l,u,f,d,h,p,m,x,g,_)}roundClean(){Ae(Ge,je)}destroy(){Ae(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var ws=bc(()=>new bs);var sd=bc(()=>new Ec);var Sc=BigInt(0),_c=BigInt(1);function Ie(r,t=""){if(typeof r!="boolean"){let e=t&&`"${t}"`;throw new Error(e+"expected boolean, got type="+typeof r)}return r}function zt(r,t,e=""){let n=Se(r),o=r?.length,s=t!==void 0;if(!n||s&&o!==t){let i=e&&`"${e}" `,a=s?` of length ${t}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Jn(r){let t=r.toString(16);return t.length&1?"0"+t:t}function id(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Sc:BigInt("0x"+r)}function Qr(r){return id(Yt(r))}function Te(r){return Ut(r),id(Yt(Uint8Array.from(r).reverse()))}function xs(r,t){return cr(r.toString(16).padStart(t*2,"0"))}function Ac(r,t){return xs(r,t).reverse()}function Q(r,t,e){let n;if(typeof t=="string")try{n=cr(t)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(Se(t))n=Uint8Array.from(t);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof e=="number"&&o!==e)throw new Error(r+" of length "+e+" expected, got "+o);return n}function ad(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}function Cc(r){return Uint8Array.from(r)}var vc=r=>typeof r=="bigint"&&Sc<=r;function cd(r,t,e){return vc(r)&&vc(t)&&vc(e)&&t<=r&&r<e}function to(r,t,e,n){if(!cd(t,e,n))throw new Error("expected valid "+r+": "+e+" <= n < "+n+", got "+t)}function Es(r){let t;for(t=0;r>Sc;r>>=_c,t+=1);return t}var Xe=r=>(_c<<BigInt(r))-_c;function ld(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h),s=n(r),i=n(r),a=0,c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>e(i,s,...h),u=(h=n(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},f=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0,p=[];for(;h<t;){s=l();let m=s.slice();p.push(m),h+=s.length}return Dt(...p)};return(h,p)=>{c(),u(h);let m;for(;!(m=p(f()));)u();return c(),m}}function Ze(r,t,e={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(o,s,i){let a=r[o];if(i&&a===void 0)return;let c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(t).forEach(([o,s])=>n(o,s,!1)),Object.entries(e).forEach(([o,s])=>n(o,s,!0))}var Ic=()=>{throw new Error("not implemented")};function Jr(r){let t=new WeakMap;return(e,...n)=>{let o=t.get(e);if(o!==void 0)return o;let s=r(e,...n);return t.set(e,s),s}}var Lt=BigInt(0),pt=BigInt(1),fr=BigInt(2),dd=BigInt(3),hd=BigInt(4),pd=BigInt(5),Wg=BigInt(7),md=BigInt(8),Gg=BigInt(9),gd=BigInt(16);function lt(r,t){let e=r%t;return e>=Lt?e:t+e}function et(r,t,e){let n=r;for(;t-- >Lt;)n*=n,n%=e;return n}function ud(r,t){if(r===Lt)throw new Error("invert: expected non-zero number");if(t<=Lt)throw new Error("invert: expected positive modulus, got "+t);let e=lt(r,t),n=t,o=Lt,s=pt,i=pt,a=Lt;for(;e!==Lt;){let l=n/e,u=n%e,f=o-i*l,d=s-a*l;n=e,e=u,o=i,s=a,i=f,a=d}if(n!==pt)throw new Error("invert: does not exist");return lt(o,t)}function Tc(r,t,e){if(!r.eql(r.sqr(t),e))throw new Error("Cannot find square root")}function yd(r,t){let e=(r.ORDER+pt)/hd,n=r.pow(t,e);return Tc(r,n,t),n}function jg(r,t){let e=(r.ORDER-pd)/md,n=r.mul(t,fr),o=r.pow(n,e),s=r.mul(t,o),i=r.mul(r.mul(s,fr),o),a=r.mul(s,r.sub(i,r.ONE));return Tc(r,a,t),a}function Xg(r){let t=$t(r),e=bd(r),n=e(t,t.neg(t.ONE)),o=e(t,n),s=e(t,t.neg(n)),i=(r+Wg)/gd;return(a,c)=>{let l=a.pow(c,i),u=a.mul(l,n),f=a.mul(l,o),d=a.mul(l,s),h=a.eql(a.sqr(u),c),p=a.eql(a.sqr(f),c);l=a.cmov(l,u,h),u=a.cmov(d,f,p);let m=a.eql(a.sqr(u),c),x=a.cmov(l,u,m);return Tc(a,x,c),x}}function bd(r){if(r<dd)throw new Error("sqrt is not defined for small field");let t=r-pt,e=0;for(;t%fr===Lt;)t/=fr,e++;let n=fr,o=$t(r);for(;fd(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return yd;let s=o.pow(n,t),i=(t+pt)/fr;return function(c,l){if(c.is0(l))return l;if(fd(c,l)!==1)throw new Error("Cannot find square root");let u=e,f=c.mul(c.ONE,s),d=c.pow(l,t),h=c.pow(l,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let p=1,m=c.sqr(d);for(;!c.eql(m,c.ONE);)if(p++,m=c.sqr(m),p===u)throw new Error("Cannot find square root");let x=pt<<BigInt(u-p-1),g=c.pow(f,x);u=p,f=c.sqr(g),d=c.mul(d,f),h=c.mul(h,g)}return h}}function Zg(r){return r%hd===dd?yd:r%md===pd?jg:r%gd===Gg?Xg(r):bd(r)}var Pe=(r,t)=>(lt(r,t)&pt)===pt,Yg=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Pc(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},e=Yg.reduce((n,o)=>(n[o]="function",n),t);return Ze(r,e),r}function Qg(r,t,e){if(e<Lt)throw new Error("invalid exponent, negatives unsupported");if(e===Lt)return r.ONE;if(e===pt)return t;let n=r.ONE,o=t;for(;e>Lt;)e&pt&&(n=r.mul(n,o)),o=r.sqr(o),e>>=pt;return n}function eo(r,t,e=!1){let n=new Array(t.length).fill(e?r.ZERO:void 0),o=t.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return t.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function fd(r,t){let e=(r.ORDER-pt)/fr,n=r.pow(t,e),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function vs(r,t){t!==void 0&&jn(t);let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function $t(r,t,e=!1,n={}){if(r<=Lt)throw new Error("invalid field: expected ORDER > 0, got "+r);let o,s,i=!1,a;if(typeof t=="object"&&t!=null){if(n.sqrt||e)throw new Error("cannot specify opts in two arguments");let d=t;d.BITS&&(o=d.BITS),d.sqrt&&(s=d.sqrt),typeof d.isLE=="boolean"&&(e=d.isLE),typeof d.modFromBytes=="boolean"&&(i=d.modFromBytes),a=d.allowedLengths}else typeof t=="number"&&(o=t),n.sqrt&&(s=n.sqrt);let{nBitLength:c,nByteLength:l}=vs(r,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let u,f=Object.freeze({ORDER:r,isLE:e,BITS:c,BYTES:l,MASK:Xe(c),ZERO:Lt,ONE:pt,allowedLengths:a,create:d=>lt(d,r),isValid:d=>{if(typeof d!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof d);return Lt<=d&&d<r},is0:d=>d===Lt,isValidNot0:d=>!f.is0(d)&&f.isValid(d),isOdd:d=>(d&pt)===pt,neg:d=>lt(-d,r),eql:(d,h)=>d===h,sqr:d=>lt(d*d,r),add:(d,h)=>lt(d+h,r),sub:(d,h)=>lt(d-h,r),mul:(d,h)=>lt(d*h,r),pow:(d,h)=>Qg(f,d,h),div:(d,h)=>lt(d*ud(h,r),r),sqrN:d=>d*d,addN:(d,h)=>d+h,subN:(d,h)=>d-h,mulN:(d,h)=>d*h,inv:d=>ud(d,r),sqrt:s||(d=>(u||(u=Zg(r)),u(f,d))),toBytes:d=>e?Ac(d,l):xs(d,l),fromBytes:(d,h=!0)=>{if(a){if(!a.includes(d.length)||d.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+d.length);let m=new Uint8Array(l);m.set(d,e?0:m.length-d.length),d=m}if(d.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+d.length);let p=e?Te(d):Qr(d);if(i&&(p=lt(p,r)),!h&&!f.isValid(p))throw new Error("invalid field element: outside of range 0..ORDER");return p},invertBatch:d=>eo(f,d),cmov:(d,h,p)=>p?h:d});return Object.freeze(f)}function wd(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function Dc(r){let t=wd(r);return t+Math.ceil(t/2)}function Lc(r,t,e=!1){let n=r.length,o=wd(t),s=Dc(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=e?Te(r):Qr(r),a=lt(i,t-pt)+pt;return e?Ac(a,o):xs(a,o)}var tn=BigInt(0),dr=BigInt(1);function ro(r,t){let e=t.negate();return r?e:t}function De(r,t){let e=eo(r.Fp,t.map(n=>n.Z));return t.map((n,o)=>r.fromAffine(n.toAffine(e[o])))}function _d(r,t){if(!Number.isSafeInteger(r)||r<=0||r>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+r)}function Rc(r,t){_d(r,t);let e=Math.ceil(t/r)+1,n=2**(r-1),o=2**r,s=Xe(r),i=BigInt(r);return{windows:e,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function xd(r,t,e){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=e,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=dr);let l=t*n,u=l+Math.abs(a)-1,f=a===0,d=a<0,h=t%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:d,isNegF:h,offsetF:l}}function Jg(r,t){if(!Array.isArray(r))throw new Error("array expected");r.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function ty(r,t){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}var Oc=new WeakMap,Sd=new WeakMap;function kc(r){return Sd.get(r)||1}function Ed(r){if(r!==tn)throw new Error("invalid wNAF")}var en=class{constructor(t,e){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=e}_unsafeLadder(t,e,n=this.ZERO){let o=t;for(;e>tn;)e&dr&&(n=n.add(o)),o=o.double(),e>>=dr;return n}precomputeWindow(t,e){let{windows:n,windowSize:o}=Rc(e,this.bits),s=[],i=t,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(t,e,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=Rc(t,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:d,offsetF:h}=xd(n,a,i);n=c,u?s=s.add(ro(d,e[h])):o=o.add(ro(f,e[l]))}return Ed(n),{p:o,f:s}}wNAFUnsafe(t,e,n,o=this.ZERO){let s=Rc(t,this.bits);for(let i=0;i<s.windows&&n!==tn;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=xd(n,i,s);if(n=a,!l){let f=e[c];o=o.add(u?f.negate():f)}}return Ed(n),o}getPrecomputes(t,e,n){let o=Oc.get(e);return o||(o=this.precomputeWindow(e,t),t!==1&&(typeof n=="function"&&(o=n(o)),Oc.set(e,o))),o}cached(t,e,n){let o=kc(t);return this.wNAF(o,this.getPrecomputes(o,t,n),e)}unsafe(t,e,n,o){let s=kc(t);return s===1?this._unsafeLadder(t,e,o):this.wNAFUnsafe(s,this.getPrecomputes(s,t,n),e,o)}createCache(t,e){_d(e,this.bits),Sd.set(t,e),Oc.delete(t)}hasCache(t){return kc(t)!==1}};function Ad(r,t,e,n){let o=t,s=r.ZERO,i=r.ZERO;for(;e>tn||n>tn;)e&dr&&(s=s.add(o)),n&dr&&(i=i.add(o)),o=o.double(),e>>=dr,n>>=dr;return{p1:s,p2:i}}function rn(r,t,e,n){Jg(e,r),ty(n,t);let o=e.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,a=Es(BigInt(o)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let l=Xe(c),u=new Array(Number(l)+1).fill(i),f=Math.floor((t.BITS-1)/c)*c,d=i;for(let h=f;h>=0;h-=c){u.fill(i);for(let m=0;m<s;m++){let x=n[m],g=Number(x>>BigInt(h)&l);u[g]=u[g].add(e[m])}let p=i;for(let m=u.length-1,x=i;m>0;m--)x=x.add(u[m]),p=p.add(x);if(d=d.add(p),h!==0)for(let m=0;m<c;m++)d=d.double()}return d}function vd(r,t,e){if(t){if(t.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Pc(t),t}else return $t(r,{isLE:e})}function _s(r,t,e={},n){if(n===void 0&&(n=r==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=t[c];if(!(typeof l=="bigint"&&l>tn))throw new Error(`CURVE.${c} must be positive bigint`)}let o=vd(t.p,e.Fp,n),s=vd(t.n,e.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(t[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:o,Fn:s}}var Ye=BigInt(0),mt=BigInt(1),Mc=BigInt(2),ey=BigInt(8);function ry(r,t,e,n){let o=r.sqr(e),s=r.sqr(n),i=r.add(r.mul(t.a,o),s),a=r.add(r.ONE,r.mul(t.d,r.mul(o,s)));return r.eql(i,a)}function ny(r,t={}){let e=_s("edwards",r,t,t.FpFnLE),{Fp:n,Fn:o}=e,s=e.CURVE,{h:i}=s;Ze(t,{},{uvRatio:"function"});let a=Mc<<BigInt(o.BYTES*8)-mt,c=x=>n.create(x),l=t.uvRatio||((x,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(x,g))}}catch{return{isValid:!1,value:Ye}}});if(!ry(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function u(x,g,_=!1){let w=_?mt:Ye;return to("coordinate "+x,g,w,a),g}function f(x){if(!(x instanceof p))throw new Error("ExtendedPoint expected")}let d=Jr((x,g)=>{let{X:_,Y:w,Z:A}=x,R=x.is0();g==null&&(g=R?ey:n.inv(A));let K=c(_*g),V=c(w*g),M=n.mul(A,g);if(R)return{x:Ye,y:mt};if(M!==mt)throw new Error("invZ was invalid");return{x:K,y:V}}),h=Jr(x=>{let{a:g,d:_}=s;if(x.is0())throw new Error("bad point: ZERO");let{X:w,Y:A,Z:R,T:K}=x,V=c(w*w),M=c(A*A),v=c(R*R),D=c(v*v),F=c(V*g),L=c(v*c(F+M)),E=c(D+c(_*c(V*M)));if(L!==E)throw new Error("bad point: equation left != right (1)");let y=c(w*A),b=c(R*K);if(y!==b)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(g,_,w,A){this.X=u("x",g),this.Y=u("y",_),this.Z=u("z",w,!0),this.T=u("t",A),Object.freeze(this)}static CURVE(){return s}static fromAffine(g){if(g instanceof p)throw new Error("extended point not allowed");let{x:_,y:w}=g||{};return u("x",_),u("y",w),new p(_,w,mt,c(_*w))}static fromBytes(g,_=!1){let w=n.BYTES,{a:A,d:R}=s;g=Cc(zt(g,w,"point")),Ie(_,"zip215");let K=Cc(g),V=g[w-1];K[w-1]=V&-129;let M=Te(K),v=_?a:n.ORDER;to("point.y",M,Ye,v);let D=c(M*M),F=c(D-mt),L=c(R*D-A),{isValid:E,value:y}=l(F,L);if(!E)throw new Error("bad point: invalid y coordinate");let b=(y&mt)===mt,S=(V&128)!==0;if(!_&&y===Ye&&S)throw new Error("bad point: x=0 and x_0=1");return S!==b&&(y=c(-y)),p.fromAffine({x:y,y:M})}static fromHex(g,_=!1){return p.fromBytes(Q("point",g),_)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,_=!0){return m.createCache(this,g),_||this.multiply(Mc),this}assertValidity(){h(this)}equals(g){f(g);let{X:_,Y:w,Z:A}=this,{X:R,Y:K,Z:V}=g,M=c(_*V),v=c(R*A),D=c(w*V),F=c(K*A);return M===v&&D===F}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:g}=s,{X:_,Y:w,Z:A}=this,R=c(_*_),K=c(w*w),V=c(Mc*c(A*A)),M=c(g*R),v=_+w,D=c(c(v*v)-R-K),F=M+K,L=F-V,E=M-K,y=c(D*L),b=c(F*E),S=c(D*E),I=c(L*F);return new p(y,b,I,S)}add(g){f(g);let{a:_,d:w}=s,{X:A,Y:R,Z:K,T:V}=this,{X:M,Y:v,Z:D,T:F}=g,L=c(A*M),E=c(R*v),y=c(V*w*F),b=c(K*D),S=c((A+R)*(M+v)-L-E),I=b-y,O=b+y,T=c(E-_*L),P=c(S*I),B=c(O*T),q=c(S*T),ot=c(I*O);return new p(P,B,ot,q)}subtract(g){return this.add(g.negate())}multiply(g){if(!o.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:_,f:w}=m.cached(this,g,A=>De(p,A));return De(p,[_,w])[0]}multiplyUnsafe(g,_=p.ZERO){if(!o.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===Ye?p.ZERO:this.is0()||g===mt?this:m.unsafe(this,g,w=>De(p,w),_)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(g){return d(this,g)}clearCofactor(){return i===mt?this:this.multiplyUnsafe(i)}toBytes(){let{x:g,y:_}=this.toAffine(),w=n.toBytes(_);return w[w.length-1]|=g&mt?128:0,w}toHex(){return Yt(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(g){return De(p,g)}static msm(g,_){return rn(p,o,g,_)}_setWindowSize(g){this.precompute(g)}toRawBytes(){return this.toBytes()}}p.BASE=new p(s.Gx,s.Gy,mt,c(s.Gx*s.Gy)),p.ZERO=new p(Ye,mt,mt,Ye),p.Fp=n,p.Fn=o;let m=new en(p,o.BITS);return p.BASE.precompute(8),p}var Ss=class{constructor(t){this.ep=t}static fromBytes(t){Ic()}static fromHex(t){Ic()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return Yt(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,e){return this.init(this.ep.precompute(t,e))}toRawBytes(){return this.toBytes()}};function oy(r,t,e={}){if(typeof t!="function")throw new Error('"hash" function param is required');Ze(e,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=e,{BASE:o,Fp:s,Fn:i}=r,a=e.randomBytes||He,c=e.adjustScalarBytes||(v=>v),l=e.domain||((v,D,F)=>{if(Ie(F,"phflag"),D.length||F)throw new Error("Contexts/pre-hash are not supported");return v});function u(v){return i.create(Te(v))}function f(v){let D=w.secretKey;v=Q("private key",v,D);let F=Q("hashed private key",t(v),2*D),L=c(F.slice(0,D)),E=F.slice(D,2*D),y=u(L);return{head:L,prefix:E,scalar:y}}function d(v){let{head:D,prefix:F,scalar:L}=f(v),E=o.multiply(L),y=E.toBytes();return{head:D,prefix:F,scalar:L,point:E,pointBytes:y}}function h(v){return d(v).pointBytes}function p(v=Uint8Array.of(),...D){let F=Dt(...D);return u(t(l(F,Q("context",v),!!n)))}function m(v,D,F={}){v=Q("message",v),n&&(v=n(v));let{prefix:L,scalar:E,pointBytes:y}=d(D),b=p(F.context,L,v),S=o.multiply(b).toBytes(),I=p(F.context,S,y,v),O=i.create(b+I*E);if(!i.isValid(O))throw new Error("sign failed: invalid s");let T=Dt(S,i.toBytes(O));return zt(T,w.signature,"result")}let x={zip215:!0};function g(v,D,F,L=x){let{context:E,zip215:y}=L,b=w.signature;v=Q("signature",v,b),D=Q("message",D),F=Q("publicKey",F,w.publicKey),y!==void 0&&Ie(y,"zip215"),n&&(D=n(D));let S=b/2,I=v.subarray(0,S),O=Te(v.subarray(S,b)),T,P,B;try{T=r.fromBytes(F,y),P=r.fromBytes(I,y),B=o.multiplyUnsafe(O)}catch{return!1}if(!y&&T.isSmallOrder())return!1;let q=p(E,P.toBytes(),T.toBytes(),D);return P.add(T.multiplyUnsafe(q)).subtract(B).clearCofactor().is0()}let _=s.BYTES,w={secretKey:_,publicKey:_,signature:2*_,seed:_};function A(v=a(w.seed)){return zt(v,w.seed,"seed")}function R(v){let D=M.randomSecretKey(v);return{secretKey:D,publicKey:h(D)}}function K(v){return Se(v)&&v.length===i.BYTES}function V(v,D){try{return!!r.fromBytes(v,D)}catch{return!1}}let M={getExtendedPublicKey:d,randomSecretKey:A,isValidSecretKey:K,isValidPublicKey:V,toMontgomery(v){let{y:D}=r.fromBytes(v),F=w.publicKey,L=F===32;if(!L&&F!==57)throw new Error("only defined for 25519 and 448");let E=L?s.div(mt+D,mt-D):s.div(D-mt,D+mt);return s.toBytes(E)},toMontgomerySecret(v){let D=w.secretKey;zt(v,D);let F=t(v.subarray(0,D));return c(F).subarray(0,D)},randomPrivateKey:A,precompute(v=8,D=r.BASE){return D.precompute(v,!1)}};return Object.freeze({keygen:R,getPublicKey:h,sign:m,verify:g,utils:M,Point:r,lengths:w})}function sy(r){let t={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},e=r.Fp,n=$t(t.n,r.nBitLength,!0),o={Fp:e,Fn:n,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:t,curveOpts:o,hash:r.hash,eddsaOpts:s}}function iy(r,t){let e=t.Point;return Object.assign({},t,{ExtendedPoint:e,CURVE:r,nBitLength:e.Fn.BITS,nByteLength:e.Fn.BYTES})}function Cd(r){let{CURVE:t,curveOpts:e,hash:n,eddsaOpts:o}=sy(r),s=ny(t,e),i=oy(s,n,o);return iy(r,i)}var ay=BigInt(0),Le=BigInt(1),Id=BigInt(2),F1=BigInt(3),cy=BigInt(5),ly=BigInt(8),nn=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),no={p:nn,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:ly,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function uy(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),o=BigInt(80),s=nn,a=r*r%s*r%s,c=et(a,Id,s)*a%s,l=et(c,Le,s)*r%s,u=et(l,cy,s)*l%s,f=et(u,t,s)*u%s,d=et(f,e,s)*f%s,h=et(d,n,s)*d%s,p=et(h,o,s)*h%s,m=et(p,o,s)*h%s,x=et(m,t,s)*u%s;return{pow_p_5_8:et(x,Id,s)*r%s,b2:a}}function fy(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Nc=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Fc(r,t){let e=nn,n=lt(t*t*t,e),o=lt(n*n*t,e),s=uy(r*o).pow_p_5_8,i=lt(r*n*s,e),a=lt(t*i*i,e),c=i,l=lt(i*Nc,e),u=a===r,f=a===lt(-r,e),d=a===lt(-r*Nc,e);return u&&(i=c),(f||d)&&(i=l),Pe(i,e)&&(i=lt(-i,e)),{isValid:u||f,value:i}}var Qe=$t(no.p,{isLE:!0}),dy=$t(no.n,{isLE:!0}),hy={...no,Fp:Qe,hash:sd,adjustScalarBytes:fy,uvRatio:Fc},Qt=Cd(hy);var Bc=Nc,py=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),my=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),gy=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),yy=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Td=r=>Fc(Le,r),by=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Uc=r=>Qt.Point.Fp.create(Te(r)&by);function Pd(r){let{d:t}=no,e=nn,n=g=>Qe.create(g),o=n(Bc*r*r),s=n((o+Le)*gy),i=BigInt(-1),a=n((i-t*o)*n(o+t)),{isValid:c,value:l}=Fc(s,a),u=n(l*r);Pe(u,e)||(u=n(-u)),c||(l=u),c||(i=o);let f=n(i*(o-Le)*yy-a),d=l*l,h=n((l+l)*a),p=n(f*py),m=n(Le-d),x=n(Le+d);return new Qt.Point(n(h*x),n(m*p),n(p*x),n(h*m))}function wy(r){Ut(r,64);let t=Uc(r.subarray(0,32)),e=Pd(t),n=Uc(r.subarray(32,64)),o=Pd(n);return new Re(e.add(o))}var Re=class r extends Ss{constructor(t){super(t)}static fromAffine(t){return new r(Qt.Point.fromAffine(t))}assertSame(t){if(!(t instanceof r))throw new Error("RistrettoPoint expected")}init(t){return new r(t)}static hashToCurve(t){return wy(Q("ristrettoHash",t,64))}static fromBytes(t){Ut(t,32);let{a:e,d:n}=no,o=nn,s=A=>Qe.create(A),i=Uc(t);if(!ad(Qe.toBytes(i),t)||Pe(i,o))throw new Error("invalid ristretto255 encoding 1");let a=s(i*i),c=s(Le+e*a),l=s(Le-e*a),u=s(c*c),f=s(l*l),d=s(e*n*u-f),{isValid:h,value:p}=Td(s(d*f)),m=s(p*l),x=s(p*m*d),g=s((i+i)*m);Pe(g,o)&&(g=s(-g));let _=s(c*x),w=s(g*_);if(!h||Pe(w,o)||_===ay)throw new Error("invalid ristretto255 encoding 2");return new r(new Qt.Point(g,_,Le,w))}static fromHex(t){return r.fromBytes(Q("ristrettoHex",t,32))}static msm(t,e){return rn(r,Qt.Point.Fn,t,e)}toBytes(){let{X:t,Y:e,Z:n,T:o}=this.ep,s=nn,i=x=>Qe.create(x),a=i(i(n+e)*i(n-e)),c=i(t*e),l=i(c*c),{value:u}=Td(i(a*l)),f=i(u*a),d=i(u*c),h=i(f*d*o),p;if(Pe(o*h,s)){let x=i(e*Bc),g=i(t*Bc);t=x,e=g,p=i(f*my)}else p=d;Pe(t*h,s)&&(e=i(-e));let m=i((n-e)*p);return Pe(m,s)&&(m=i(-m)),Qe.toBytes(m)}equals(t){this.assertSame(t);let{X:e,Y:n}=this.ep,{X:o,Y:s}=t.ep,i=l=>Qe.create(l),a=i(e*s)===i(n*o),c=i(n*s)===i(e*o);return a||c}is0(){return this.equals(r.ZERO)}};Re.BASE=new Re(Qt.Point.BASE);Re.ZERO=new Re(Qt.Point.ZERO);Re.Fp=Qe;Re.Fn=dy;var oo=class extends Error{constructor(t="An error occurred while signing a message"){super(t),this.name="SigningError"}},so=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},As=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var Dd={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new As("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return t}};var Ft=Dd;var Cs=32,io=64,Kc=32;var on,Ld=(async()=>{try{return await Ft.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Rd(){let r=Qt.utils.randomPrivateKey(),t=Qt.getPublicKey(r);return{privateKey:Sy(r,t),publicKey:t}}async function xy(r,t){let e;r.length===io?e=r.subarray(0,32):e=r;let n={crv:"Ed25519",kty:"OKP",x:U(r.subarray(32),"base64url"),d:U(e,"base64url"),ext:!0,key_ops:["sign"]},o=await Ft.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Ft.get().subtle.sign({name:"Ed25519"},o,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(s,0,s.byteLength)}function Ey(r,t){let e=r.subarray(0,Kc);return Qt.sign(t instanceof Uint8Array?t:t.subarray(),e)}async function Od(r,t){return on==null&&(on=await Ld),on?xy(r,t):Ey(r,t)}async function vy(r,t,e){if(r.buffer instanceof ArrayBuffer){let n=await Ft.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Ft.get().subtle.verify({name:"Ed25519"},n,t,e instanceof Uint8Array?e:e.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function _y(r,t,e){return Qt.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}async function kd(r,t,e){return on==null&&(on=await Ld),on?vy(r,t,e):_y(r,t,e)}function Sy(r,t){let e=new Uint8Array(io);for(let n=0;n<Kc;n++)e[n]=r[n],e[Kc+n]=t[n];return e}function sn(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ao=class{type="Ed25519";raw;constructor(t){this.raw=Ts(t,Cs)}toMultihash(){return ne.digest(Zt(this))}toCID(){return nt.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}verify(t,e,n){n?.signal?.throwIfAborted();let o=kd(this.raw,e,t);return sn(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Is=class{type="Ed25519";raw;publicKey;constructor(t,e){this.raw=Ts(t,io),this.publicKey=new ao(e)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}sign(t,e){e?.signal?.throwIfAborted();let n=Od(this.raw,t);return sn(n)?n.then(o=>(e?.signal?.throwIfAborted(),o)):(e?.signal?.throwIfAborted(),n)}};function qc(r){return r=Ts(r,Cs),new ao(r)}async function Nd(){let{privateKey:r,publicKey:t}=Rd();return new Is(r,t)}function Ts(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new k(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}var Ay=Math.pow(2,7),Cy=Math.pow(2,14),Iy=Math.pow(2,21),Vc=Math.pow(2,28),zc=Math.pow(2,35),$c=Math.pow(2,42),Hc=Math.pow(2,49),j=128,St=127;function gt(r){if(r<Ay)return 1;if(r<Cy)return 2;if(r<Iy)return 3;if(r<Vc)return 4;if(r<zc)return 5;if(r<$c)return 6;if(r<Hc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function an(r,t,e=0){switch(gt(r)){case 8:t[e++]=r&255|j,r/=128;case 7:t[e++]=r&255|j,r/=128;case 6:t[e++]=r&255|j,r/=128;case 5:t[e++]=r&255|j,r/=128;case 4:t[e++]=r&255|j,r>>>=7;case 3:t[e++]=r&255|j,r>>>=7;case 2:t[e++]=r&255|j,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function Ty(r,t,e=0){switch(gt(r)){case 8:t.set(e++,r&255|j),r/=128;case 7:t.set(e++,r&255|j),r/=128;case 6:t.set(e++,r&255|j),r/=128;case 5:t.set(e++,r&255|j),r/=128;case 4:t.set(e++,r&255|j),r>>>=7;case 3:t.set(e++,r&255|j),r>>>=7;case 2:t.set(e++,r&255|j),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Wc(r,t){let e=r[t],n=0;if(n+=e&St,e<j||(e=r[t+1],n+=(e&St)<<7,e<j)||(e=r[t+2],n+=(e&St)<<14,e<j)||(e=r[t+3],n+=(e&St)<<21,e<j)||(e=r[t+4],n+=(e&St)*Vc,e<j)||(e=r[t+5],n+=(e&St)*zc,e<j)||(e=r[t+6],n+=(e&St)*$c,e<j)||(e=r[t+7],n+=(e&St)*Hc,e<j))return n;throw new RangeError("Could not decode varint")}function Py(r,t){let e=r.get(t),n=0;if(n+=e&St,e<j||(e=r.get(t+1),n+=(e&St)<<7,e<j)||(e=r.get(t+2),n+=(e&St)<<14,e<j)||(e=r.get(t+3),n+=(e&St)<<21,e<j)||(e=r.get(t+4),n+=(e&St)*Vc,e<j)||(e=r.get(t+5),n+=(e&St)*zc,e<j)||(e=r.get(t+6),n+=(e&St)*$c,e<j)||(e=r.get(t+7),n+=(e&St)*Hc,e<j))return n;throw new RangeError("Could not decode varint")}function pe(r,t,e=0){return t==null&&(t=_t(gt(r))),t instanceof Uint8Array?an(r,t,e):Ty(r,t,e)}function hr(r,t=0){return r instanceof Uint8Array?Wc(r,t):Py(r,t)}var Gc=new Float32Array([-0]),Je=new Uint8Array(Gc.buffer);function Bd(r,t,e){Gc[0]=r,t[e]=Je[0],t[e+1]=Je[1],t[e+2]=Je[2],t[e+3]=Je[3]}function Ud(r,t){return Je[0]=r[t],Je[1]=r[t+1],Je[2]=r[t+2],Je[3]=r[t+3],Gc[0]}var jc=new Float64Array([-0]),At=new Uint8Array(jc.buffer);function Fd(r,t,e){jc[0]=r,t[e]=At[0],t[e+1]=At[1],t[e+2]=At[2],t[e+3]=At[3],t[e+4]=At[4],t[e+5]=At[5],t[e+6]=At[6],t[e+7]=At[7]}function Kd(r,t){return At[0]=r[t],At[1]=r[t+1],At[2]=r[t+2],At[3]=r[t+3],At[4]=r[t+4],At[5]=r[t+5],At[6]=r[t+6],At[7]=r[t+7],jc[0]}var Dy=BigInt(Number.MAX_SAFE_INTEGER),Ly=BigInt(Number.MIN_SAFE_INTEGER),Ht=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return pr;if(t<Dy&&t>Ly)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>qd&&(o=0n,++n>qd&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return pr;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):pr}},pr=new Ht(0,0);pr.toBigInt=function(){return 0n};pr.zzEncode=pr.zzDecode=function(){return this};pr.length=function(){return 1};var qd=4294967296n;function Vd(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function zd(r,t,e){if(e-t<1)return"";let o,s=[],i=0,a;for(;t<e;)a=r[t++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Xc(r,t,e){let n=e,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function ae(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Ps(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var Zc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,ae(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw ae(this,4);return Ps(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw ae(this,4);return Ps(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw ae(this,4);let t=Ud(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw ae(this,4);let t=Kd(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw ae(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return zd(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw ae(this,t);this.pos+=t}else do if(this.pos>=this.len)throw ae(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new Ht(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw ae(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw ae(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw ae(this,8);let t=Ps(this.buf,this.pos+=4),e=Ps(this.buf,this.pos+=4);return new Ht(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=Wc(this.buf,this.pos);return this.pos+=gt(t),t}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Yc(r){return new Zc(r instanceof Uint8Array?r:r.subarray())}function Rt(r,t,e){let n=Yc(r);return t.decode(n,void 0,e)}function Qc(r){let t=r??8192,e=t>>>1,n,o=t;return function(i){if(i<1||i>e)return _t(i);o+i>t&&(n=_t(t),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var mr=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function Jc(){}var el=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Ry=Qc();function Oy(r){return globalThis.Buffer!=null?_t(r):Ry(r)}var lo=class{len;head;tail;states;constructor(){this.len=0,this.head=new mr(Jc,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new mr(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new rl((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(Ds,10,Ht.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=Ht.fromBigInt(t);return this._push(Ds,e.length(),e)}uint64Number(t){return this._push(an,gt(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=Ht.fromBigInt(t).zzEncode();return this._push(Ds,e.length(),e)}sint64Number(t){let e=Ht.fromNumber(t).zzEncode();return this._push(Ds,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(tl,1,t?1:0)}fixed32(t){return this._push(co,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=Ht.fromBigInt(t);return this._push(co,4,e.lo)._push(co,4,e.hi)}fixed64Number(t){let e=Ht.fromNumber(t);return this._push(co,4,e.lo)._push(co,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(Bd,4,t)}double(t){return this._push(Fd,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(tl,1,0):this.uint32(e)._push(My,e,t)}string(t){let e=Vd(t);return e!==0?this.uint32(e)._push(Xc,e,t):this._push(tl,1,0)}fork(){return this.states=new el(this),this.head=this.tail=new mr(Jc,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new mr(Jc,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Oy(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function tl(r,t,e){t[e]=r&255}function ky(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var rl=class extends mr{next;constructor(t,e){super(ky,t,e),this.next=void 0}};function Ds(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function co(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function My(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(lo.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Ny,t,r),this},lo.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(By,t,r),this});function Ny(r,t,e){t.set(r,e)}function By(r,t,e){r.length<40?Xc(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(C(r),e)}function nl(){return new lo}function Ot(r,t){let e=nl();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var ln;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(ln||(ln={}));function Ls(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function ol(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(s,i){let a=t(s);i.int32(a)},n=function(s){let i=s.int32();return t(i)};return Ls("enum",ln.VARINT,e,n)}function kt(r,t){return Ls("message",ln.LENGTH_DELIMITED,r,t)}var gr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},uo=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ft;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ft||(ft={}));var sl;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(sl||(sl={}));(function(r){r.codec=()=>ol(sl)})(ft||(ft={}));var me;(function(r){let t;r.codec=()=>(t==null&&(t=kt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Ot(e,r.codec()),r.decode=(e,n)=>Rt(e,r.codec(),n)})(me||(me={}));var il;(function(r){let t;r.codec=()=>(t==null&&(t=kt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Ot(e,r.codec()),r.decode=(e,n)=>Rt(e,r.codec(),n)})(il||(il={}));function un(r){if(isNaN(r)||r<=0)throw new k("random bytes length must be a Number bigger than 0");return He(r)}var ho={};Bt(ho,{MAX_RSA_KEY_SIZE:()=>al,generateRSAKeyPair:()=>gl,jwkToJWKKeyPair:()=>Xd,jwkToPkcs1:()=>qy,jwkToPkix:()=>fl,jwkToRSAPrivateKey:()=>ml,pkcs1MessageToJwk:()=>ll,pkcs1MessageToRSAPrivateKey:()=>dl,pkcs1ToJwk:()=>Ky,pkcs1ToRSAPrivateKey:()=>jd,pkixMessageToJwk:()=>ul,pkixMessageToRSAPublicKey:()=>pl,pkixToJwk:()=>Vy,pkixToRSAPublicKey:()=>hl});var Rs=ws;var fn=class{type="RSA";jwk;_raw;_multihash;constructor(t,e){this.jwk=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=ho.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return nt.createV1(114,this._multihash)}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}verify(t,e,n){return Gd(this.jwk,e,t,n)}},fo=class{type="RSA";jwk;_raw;publicKey;constructor(t,e){this.jwk=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=ho.jwkToPkcs1(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}sign(t,e){return Wd(this.jwk,t,e)}};var al=8192,cl=18,Uy=1062,Fy=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Ky(r){let t=ve(r);return ll(t)}function ll(r){return{n:U(r[1],"base64url"),e:U(r[2],"base64url"),d:U(r[3],"base64url"),p:U(r[4],"base64url"),q:U(r[5],"base64url"),dp:U(r[6],"base64url"),dq:U(r[7],"base64url"),qi:U(r[8],"base64url"),kty:"RSA"}}function qy(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 k("JWK was missing components");return se([Pt(Uint8Array.from([0])),Pt(C(r.n,"base64url")),Pt(C(r.e,"base64url")),Pt(C(r.d,"base64url")),Pt(C(r.p,"base64url")),Pt(C(r.q,"base64url")),Pt(C(r.dp,"base64url")),Pt(C(r.dq,"base64url")),Pt(C(r.qi,"base64url"))]).subarray()}function Vy(r){let t=ve(r,{offset:0});return ul(t)}function ul(r){let t=ve(r[1],{offset:0});return{kty:"RSA",n:U(t[0],"base64url"),e:U(t[1],"base64url")}}function fl(r){if(r.n==null||r.e==null)throw new k("JWK was missing components");return se([Fy,Gn(se([Pt(C(r.n,"base64url")),Pt(C(r.e,"base64url"))]))]).subarray()}function jd(r){let t=ve(r);return dl(t)}function dl(r){let t=ll(r);return ml(t)}function hl(r,t){if(r.byteLength>=Uy)throw new qr("Key size is too large");let e=ve(r,{offset:0});return pl(e,r,t)}function pl(r,t,e){let n=ul(r);if(e==null){let o=Rs(me.encode({Type:ft.RSA,Data:t}));e=de(cl,o)}return new fn(n,e)}function ml(r){if(Yd(r)>al)throw new k("Key size is too large");let t=Xd(r),e=Rs(me.encode({Type:ft.RSA,Data:fl(t.publicKey)})),n=de(cl,e);return new fo(t.privateKey,new fn(t.publicKey,n))}async function gl(r){if(r>al)throw new k("Key size is too large");let t=await Zd(r),e=Rs(me.encode({Type:ft.RSA,Data:fl(t.publicKey)})),n=de(cl,e);return new fo(t.privateKey,new fn(t.publicKey,n))}function Xd(r){if(r==null)throw new k("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function Zd(r,t){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?.signal?.throwIfAborted();let n=await zy(e,t);return{privateKey:n[0],publicKey:n[1]}}async function Wd(r,t,e){let n=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);e?.signal?.throwIfAborted();let o=await Ft.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,t instanceof Uint8Array?t:t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Gd(r,t,e,n){let o=await Ft.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Ft.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,t,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),s}async function zy(r,t){if(r.privateKey==null||r.publicKey==null)throw new k("Private and public key are required");let e=await Promise.all([Ft.get().subtle.exportKey("jwk",r.privateKey),Ft.get().subtle.exportKey("jwk",r.publicKey)]);return t?.signal?.throwIfAborted(),e}function Yd(r){if(r.kty!=="RSA")throw new k("invalid key type");if(r.n==null)throw new k("invalid key modulus");return C(r.n,"base64url").length*8}var Os=class extends Zr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,ms(t);let n=Xn(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?t.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=t.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),Ae(s)}update(t){return Yr(this),this.iHash.update(t),this}digestInto(t){Yr(this),Ut(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},yl=(r,t,e)=>new Os(r,t).update(e).digest();yl.create=(r,t)=>new Os(r,t);var Qd=(r,t)=>(r+(r>=0?t:-t)/Jd)/t;function $y(r,t,e){let[[n,o],[s,i]]=t,a=Qd(i*r,e),c=Qd(-o*r,e),l=r-a*n-c*s,u=-a*o-c*i,f=l<ke,d=u<ke;f&&(l=-l),d&&(u=-u);let h=Xe(Math.ceil(Es(e)/2))+hn;if(l<ke||l>=h||u<ke||u>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}function wl(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function bl(r,t){let e={};for(let n of Object.keys(t))e[n]=r[n]===void 0?t[n]:r[n];return Ie(e.lowS,"lowS"),Ie(e.prehash,"prehash"),e.format!==void 0&&wl(e.format),e}var xl=class extends Error{constructor(t=""){super(t)}},Oe={Err:xl,_tlv:{encode:(r,t)=>{let{Err:e}=Oe;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,o=Jn(n);if(o.length/2&128)throw new e("tlv.encode: long form length too big");let s=n>127?Jn(o.length/2|128):"";return Jn(r)+s+o+t},decode(r,t){let{Err:e}=Oe,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let o=t[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let l=t.subarray(n,n+c);if(l.length!==c)throw new e("tlv.decode: length bytes not complete");if(l[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=Oe;if(r<ke)throw new t("integer: negative integers are not allowed");let e=Jn(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return e},decode(r){let{Err:t}=Oe;if(r[0]&128)throw new t("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Qr(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=Oe,o=Q("signature",r),{v:s,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new t("invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(l)}},hexFromSig(r){let{_tlv:t,_int:e}=Oe,n=t.encode(2,e.encode(r.r)),o=t.encode(2,e.encode(r.s)),s=n+o;return t.encode(48,s)}},ke=BigInt(0),hn=BigInt(1),Jd=BigInt(2),ks=BigInt(3),Hy=BigInt(4);function dn(r,t){let{BYTES:e}=r,n;if(typeof t=="bigint")n=t;else{let o=Q("private key",t);try{n=r.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${e}, got ${typeof t}`)}}if(!r.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Wy(r,t={}){let e=_s("weierstrass",r,t),{Fp:n,Fn:o}=e,s=e.CURVE,{h:i,n:a}=s;Ze(t,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=t;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=eh(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(L,E,y){let{x:b,y:S}=E.toAffine(),I=n.toBytes(b);if(Ie(y,"isCompressed"),y){u();let O=!n.isOdd(S);return Dt(th(O),I)}else return Dt(Uint8Array.of(4),I,n.toBytes(S))}function d(L){zt(L,void 0,"Point");let{publicKey:E,publicKeyUncompressed:y}=l,b=L.length,S=L[0],I=L.subarray(1);if(b===E&&(S===2||S===3)){let O=n.fromBytes(I);if(!n.isValid(O))throw new Error("bad point: is not on curve, wrong x");let T=m(O),P;try{P=n.sqrt(T)}catch(ot){let J=ot instanceof Error?": "+ot.message:"";throw new Error("bad point: is not on curve, sqrt error"+J)}u();let B=n.isOdd(P);return(S&1)===1!==B&&(P=n.neg(P)),{x:O,y:P}}else if(b===y&&S===4){let O=n.BYTES,T=n.fromBytes(I.subarray(0,O)),P=n.fromBytes(I.subarray(O,O*2));if(!x(T,P))throw new Error("bad point: is not on curve");return{x:T,y:P}}else throw new Error(`bad point: got length ${b}, expected compressed=${E} or uncompressed=${y}`)}let h=t.toBytes||f,p=t.fromBytes||d;function m(L){let E=n.sqr(L),y=n.mul(E,L);return n.add(n.add(y,n.mul(L,s.a)),s.b)}function x(L,E){let y=n.sqr(E),b=m(L);return n.eql(y,b)}if(!x(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let g=n.mul(n.pow(s.a,ks),Hy),_=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(g,_)))throw new Error("bad curve params: a or b");function w(L,E,y=!1){if(!n.isValid(E)||y&&n.is0(E))throw new Error(`bad point coordinate ${L}`);return E}function A(L){if(!(L instanceof v))throw new Error("ProjectivePoint expected")}function R(L){if(!c||!c.basises)throw new Error("no endo");return $y(L,c.basises,o.ORDER)}let K=Jr((L,E)=>{let{X:y,Y:b,Z:S}=L;if(n.eql(S,n.ONE))return{x:y,y:b};let I=L.is0();E==null&&(E=I?n.ONE:n.inv(S));let O=n.mul(y,E),T=n.mul(b,E),P=n.mul(S,E);if(I)return{x:n.ZERO,y:n.ZERO};if(!n.eql(P,n.ONE))throw new Error("invZ was invalid");return{x:O,y:T}}),V=Jr(L=>{if(L.is0()){if(t.allowInfinityPoint&&!n.is0(L.Y))return;throw new Error("bad point: ZERO")}let{x:E,y}=L.toAffine();if(!n.isValid(E)||!n.isValid(y))throw new Error("bad point: x or y not field elements");if(!x(E,y))throw new Error("bad point: equation left != right");if(!L.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function M(L,E,y,b,S){return y=new v(n.mul(y.X,L),y.Y,y.Z),E=ro(b,E),y=ro(S,y),E.add(y)}class v{constructor(E,y,b){this.X=w("x",E),this.Y=w("y",y,!0),this.Z=w("z",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(E){let{x:y,y:b}=E||{};if(!E||!n.isValid(y)||!n.isValid(b))throw new Error("invalid affine point");if(E instanceof v)throw new Error("projective point not allowed");return n.is0(y)&&n.is0(b)?v.ZERO:new v(y,b,n.ONE)}static fromBytes(E){let y=v.fromAffine(p(zt(E,void 0,"point")));return y.assertValidity(),y}static fromHex(E){return v.fromBytes(Q("pointHex",E))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(E=8,y=!0){return F.createCache(this,E),y||this.multiply(ks),this}assertValidity(){V(this)}hasEvenY(){let{y:E}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(E)}equals(E){A(E);let{X:y,Y:b,Z:S}=this,{X:I,Y:O,Z:T}=E,P=n.eql(n.mul(y,T),n.mul(I,S)),B=n.eql(n.mul(b,T),n.mul(O,S));return P&&B}negate(){return new v(this.X,n.neg(this.Y),this.Z)}double(){let{a:E,b:y}=s,b=n.mul(y,ks),{X:S,Y:I,Z:O}=this,T=n.ZERO,P=n.ZERO,B=n.ZERO,q=n.mul(S,S),ot=n.mul(I,I),J=n.mul(O,O),H=n.mul(S,I);return H=n.add(H,H),B=n.mul(S,O),B=n.add(B,B),T=n.mul(E,B),P=n.mul(b,J),P=n.add(T,P),T=n.sub(ot,P),P=n.add(ot,P),P=n.mul(T,P),T=n.mul(H,T),B=n.mul(b,B),J=n.mul(E,J),H=n.sub(q,J),H=n.mul(E,H),H=n.add(H,B),B=n.add(q,q),q=n.add(B,q),q=n.add(q,J),q=n.mul(q,H),P=n.add(P,q),J=n.mul(I,O),J=n.add(J,J),q=n.mul(J,H),T=n.sub(T,q),B=n.mul(J,ot),B=n.add(B,B),B=n.add(B,B),new v(T,P,B)}add(E){A(E);let{X:y,Y:b,Z:S}=this,{X:I,Y:O,Z:T}=E,P=n.ZERO,B=n.ZERO,q=n.ZERO,ot=s.a,J=n.mul(s.b,ks),H=n.mul(y,I),st=n.mul(b,O),ht=n.mul(S,T),Nt=n.add(y,b),it=n.add(I,O);Nt=n.mul(Nt,it),it=n.add(H,st),Nt=n.sub(Nt,it),it=n.add(y,S);let vt=n.add(I,T);return it=n.mul(it,vt),vt=n.add(H,ht),it=n.sub(it,vt),vt=n.add(b,S),P=n.add(O,T),vt=n.mul(vt,P),P=n.add(st,ht),vt=n.sub(vt,P),q=n.mul(ot,it),P=n.mul(J,ht),q=n.add(P,q),P=n.sub(st,q),q=n.add(st,q),B=n.mul(P,q),st=n.add(H,H),st=n.add(st,H),ht=n.mul(ot,ht),it=n.mul(J,it),st=n.add(st,ht),ht=n.sub(H,ht),ht=n.mul(ot,ht),it=n.add(it,ht),H=n.mul(st,it),B=n.add(B,H),H=n.mul(vt,it),P=n.mul(Nt,P),P=n.sub(P,H),H=n.mul(Nt,st),q=n.mul(vt,q),q=n.add(q,H),new v(P,B,q)}subtract(E){return this.add(E.negate())}is0(){return this.equals(v.ZERO)}multiply(E){let{endo:y}=t;if(!o.isValidNot0(E))throw new Error("invalid scalar: out of range");let b,S,I=O=>F.cached(this,O,T=>De(v,T));if(y){let{k1neg:O,k1:T,k2neg:P,k2:B}=R(E),{p:q,f:ot}=I(T),{p:J,f:H}=I(B);S=ot.add(H),b=M(y.beta,q,J,O,P)}else{let{p:O,f:T}=I(E);b=O,S=T}return De(v,[b,S])[0]}multiplyUnsafe(E){let{endo:y}=t,b=this;if(!o.isValid(E))throw new Error("invalid scalar: out of range");if(E===ke||b.is0())return v.ZERO;if(E===hn)return b;if(F.hasCache(this))return this.multiply(E);if(y){let{k1neg:S,k1:I,k2neg:O,k2:T}=R(E),{p1:P,p2:B}=Ad(v,b,I,T);return M(y.beta,P,B,S,O)}else return F.unsafe(b,E)}multiplyAndAddUnsafe(E,y,b){let S=this.multiplyUnsafe(y).add(E.multiplyUnsafe(b));return S.is0()?void 0:S}toAffine(E){return K(this,E)}isTorsionFree(){let{isTorsionFree:E}=t;return i===hn?!0:E?E(v,this):F.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:E}=t;return i===hn?this:E?E(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(E=!0){return Ie(E,"isCompressed"),this.assertValidity(),h(v,this,E)}toHex(E=!0){return Yt(this.toBytes(E))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(E=!0){return this.toBytes(E)}_setWindowSize(E){this.precompute(E)}static normalizeZ(E){return De(v,E)}static msm(E,y){return rn(v,o,E,y)}static fromPrivateKey(E){return v.BASE.multiply(dn(o,E))}}v.BASE=new v(s.Gx,s.Gy,n.ONE),v.ZERO=new v(n.ZERO,n.ONE,n.ZERO),v.Fp=n,v.Fn=o;let D=o.BITS,F=new en(v,t.endo?Math.ceil(D/2):D);return v.BASE.precompute(8),v}function th(r){return Uint8Array.of(r?2:3)}function eh(r,t){return{secretKey:t.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function Gy(r,t={}){let{Fn:e}=r,n=t.randomBytes||He,o=Object.assign(eh(r.Fp,e),{seed:Dc(e.ORDER)});function s(h){try{return!!dn(e,h)}catch{return!1}}function i(h,p){let{publicKey:m,publicKeyUncompressed:x}=o;try{let g=h.length;return p===!0&&g!==m||p===!1&&g!==x?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return Lc(zt(h,o.seed,"seed"),e.ORDER)}function c(h,p=!0){return r.BASE.multiply(dn(e,h)).toBytes(p)}function l(h){let p=a(h);return{secretKey:p,publicKey:c(p)}}function u(h){if(typeof h=="bigint")return!1;if(h instanceof r)return!0;let{secretKey:p,publicKey:m,publicKeyUncompressed:x}=o;if(e.allowedLengths||p===m)return;let g=Q("key",h).length;return g===m||g===x}function f(h,p,m=!0){if(u(h)===!0)throw new Error("first arg must be private key");if(u(p)===!1)throw new Error("second arg must be public key");let x=dn(e,h);return r.fromHex(p).multiply(x).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:f,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>dn(e,h),precompute(h=8,p=r.BASE){return p.precompute(h,!1)}},lengths:o})}function jy(r,t,e={}){ms(t),Ze(e,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let n=e.randomBytes||He,o=e.hmac||((y,...b)=>yl(t,y,Dt(...b))),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h}=Gy(r,e),p={prehash:!1,lowS:typeof e.lowS=="boolean"?e.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function x(y){let b=a>>hn;return y>b}function g(y,b){if(!i.isValidNot0(b))throw new Error(`invalid signature ${y}: out of range 1..Point.Fn.ORDER`);return b}function _(y,b){wl(b);let S=h.signature,I=b==="compact"?S:b==="recovered"?S+1:void 0;return zt(y,I,`${b} signature`)}class w{constructor(b,S,I){this.r=g("r",b),this.s=g("s",S),I!=null&&(this.recovery=I),Object.freeze(this)}static fromBytes(b,S=m){_(b,S);let I;if(S==="der"){let{r:B,s:q}=Oe.toSig(zt(b));return new w(B,q)}S==="recovered"&&(I=b[0],S="compact",b=b.subarray(1));let O=i.BYTES,T=b.subarray(0,O),P=b.subarray(O,O*2);return new w(i.fromBytes(T),i.fromBytes(P),I)}static fromHex(b,S){return this.fromBytes(cr(b),S)}addRecoveryBit(b){return new w(this.r,this.s,b)}recoverPublicKey(b){let S=s.ORDER,{r:I,s:O,recovery:T}=this;if(T==null||![0,1,2,3].includes(T))throw new Error("recovery id invalid");if(a*Jd<S&&T>1)throw new Error("recovery id is ambiguous for h>1 curve");let B=T===2||T===3?I+a:I;if(!s.isValid(B))throw new Error("recovery id 2 or 3 invalid");let q=s.toBytes(B),ot=r.fromBytes(Dt(th((T&1)===0),q)),J=i.inv(B),H=R(Q("msgHash",b)),st=i.create(-H*J),ht=i.create(O*J),Nt=r.BASE.multiplyUnsafe(st).add(ot.multiplyUnsafe(ht));if(Nt.is0())throw new Error("point at infinify");return Nt.assertValidity(),Nt}hasHighS(){return x(this.s)}toBytes(b=m){if(wl(b),b==="der")return cr(Oe.hexFromSig(this));let S=i.toBytes(this.r),I=i.toBytes(this.s);if(b==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return Dt(Uint8Array.of(this.recovery),S,I)}return Dt(S,I)}toHex(b){return Yt(this.toBytes(b))}assertValidity(){}static fromCompact(b){return w.fromBytes(Q("sig",b),"compact")}static fromDER(b){return w.fromBytes(Q("sig",b),"der")}normalizeS(){return this.hasHighS()?new w(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return Yt(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return Yt(this.toBytes("compact"))}}let A=e.bits2int||function(b){if(b.length>8192)throw new Error("input is too large");let S=Qr(b),I=b.length*8-c;return I>0?S>>BigInt(I):S},R=e.bits2int_modN||function(b){return i.create(A(b))},K=Xe(c);function V(y){return to("num < 2^"+c,y,ke,K),i.toBytes(y)}function M(y,b){return zt(y,void 0,"message"),b?zt(t(y),void 0,"prehashed message"):y}function v(y,b,S){if(["recovered","canonical"].some(st=>st in S))throw new Error("sign() legacy options not supported");let{lowS:I,prehash:O,extraEntropy:T}=bl(S,p);y=M(y,O);let P=R(y),B=dn(i,b),q=[V(B),V(P)];if(T!=null&&T!==!1){let st=T===!0?n(h.secretKey):T;q.push(Q("extraEntropy",st))}let ot=Dt(...q),J=P;function H(st){let ht=A(st);if(!i.isValidNot0(ht))return;let Nt=i.inv(ht),it=r.BASE.multiply(ht).toAffine(),vt=i.create(it.x);if(vt===ke)return;let Qo=i.create(Nt*i.create(J+vt*B));if(Qo===ke)return;let sf=(it.x===vt?0:2)|Number(it.y&hn),af=Qo;return I&&x(Qo)&&(af=i.neg(Qo),sf^=1),new w(vt,af,sf)}return{seed:ot,k2sig:H}}function D(y,b,S={}){y=Q("message",y);let{seed:I,k2sig:O}=v(y,b,S);return ld(t.outputLen,i.BYTES,o)(I,O)}function F(y){let b,S=typeof y=="string"||Se(y),I=!S&&y!==null&&typeof y=="object"&&typeof y.r=="bigint"&&typeof y.s=="bigint";if(!S&&!I)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(I)b=new w(y.r,y.s);else if(S){try{b=w.fromBytes(Q("sig",y),"der")}catch(O){if(!(O instanceof Oe.Err))throw O}if(!b)try{b=w.fromBytes(Q("sig",y),"compact")}catch{return!1}}return b||!1}function L(y,b,S,I={}){let{lowS:O,prehash:T,format:P}=bl(I,p);if(S=Q("publicKey",S),b=M(Q("message",b),T),"strict"in I)throw new Error("options.strict was renamed to lowS");let B=P===void 0?F(y):w.fromBytes(Q("sig",y),P);if(B===!1)return!1;try{let q=r.fromBytes(S);if(O&&B.hasHighS())return!1;let{r:ot,s:J}=B,H=R(b),st=i.inv(J),ht=i.create(H*st),Nt=i.create(ot*st),it=r.BASE.multiplyUnsafe(ht).add(q.multiplyUnsafe(Nt));return it.is0()?!1:i.create(it.x)===ot}catch{return!1}}function E(y,b,S={}){let{prehash:I}=bl(S,p);return b=M(b,I),w.fromBytes(y,"recovered").recoverPublicKey(b).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h,Point:r,sign:D,verify:L,recoverPublicKey:E,Signature:w,hash:t})}function Xy(r){let t={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},e=r.Fp,n=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0,o=$t(t.n,{BITS:r.nBitLength,allowedLengths:n,modFromBytes:r.wrapPrivateKey}),s={Fp:e,Fn:o,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:t,curveOpts:s}}function Zy(r){let{CURVE:t,curveOpts:e}=Xy(r),n={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:t,curveOpts:e,hash:r.hash,ecdsaOpts:n}}function Yy(r,t){let e=t.Point;return Object.assign({},t,{ProjectivePoint:e,CURVE:Object.assign({},r,vs(e.Fn.ORDER,e.Fn.BITS))})}function rh(r){let{CURVE:t,curveOpts:e,hash:n,ecdsaOpts:o}=Zy(r),s=Wy(t,e),i=jy(s,n,o);return Yy(r,i)}function nh(r,t){let e=n=>rh({...r,hash:n});return{...e(t),create:e}}var vl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Qy={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var oh=BigInt(2);function Jy(r){let t=vl.p,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%t,u=l*l*r%t,f=et(u,e,t)*u%t,d=et(f,e,t)*u%t,h=et(d,oh,t)*l%t,p=et(h,o,t)*h%t,m=et(p,s,t)*p%t,x=et(m,a,t)*m%t,g=et(x,c,t)*x%t,_=et(g,a,t)*m%t,w=et(_,e,t)*u%t,A=et(w,i,t)*p%t,R=et(A,n,t)*l%t,K=et(R,oh,t);if(!El.eql(El.sqr(K),r))throw new Error("Cannot find square root");return K}var El=$t(vl.p,{sqrt:Jy}),ce=nh({...vl,Fp:El,lowS:!0,endo:Qy},ws);function sh(r,t,e){let n=Xr.digest(t instanceof Uint8Array?t:t.subarray());if(sn(n))return n.then(({digest:o})=>(e?.signal?.throwIfAborted(),ce.sign(o,r).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new oo(String(o))});try{return ce.sign(n.digest,r).toDERRawBytes()}catch(o){throw new oo(String(o))}}function ih(r,t,e,n){let o=Xr.digest(e instanceof Uint8Array?e:e.subarray());if(sn(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),ce.verify(t,s,r))).catch(s=>{throw s.name==="AbortError"?s:new so(String(s))});try{return n?.signal?.throwIfAborted(),ce.verify(t,o.digest,r)}catch(s){throw new so(String(s))}}var po=class{type="secp256k1";raw;_key;constructor(t){this._key=lh(t),this.raw=ah(this._key)}toMultihash(){return ne.digest(Zt(this))}toCID(){return nt.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}verify(t,e,n){return ih(this._key,e,t,n)}},Ms=class{type="secp256k1";raw;publicKey;constructor(t,e){this.raw=ch(t),this.publicKey=new po(e??uh(t))}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:Z(this.raw,t.raw)}sign(t,e){return sh(this.raw,t,e)}};function _l(r){return new po(r)}async function fh(){let r=t0();return new Ms(r)}function ah(r){return ce.ProjectivePoint.fromHex(r).toRawBytes(!0)}function ch(r){try{return ce.getPublicKey(r,!0),r}catch(t){throw new Nn(String(t))}}function lh(r){try{return ce.ProjectivePoint.fromHex(r),r}catch(t){throw new qr(String(t))}}function uh(r){try{return ce.getPublicKey(r,!0)}catch(t){throw new Nn(String(t))}}function t0(){return ce.utils.randomPrivateKey()}async function dh(r,t){if(r==="Ed25519")return Nd();if(r==="secp256k1")return fh();if(r==="RSA")return gl(e0(t));if(r==="ECDSA")return $f(r0(t));throw new Ve}function pn(r,t){let{Type:e,Data:n}=me.decode(r),o=n??new Uint8Array;switch(e){case ft.RSA:return hl(o,t);case ft.Ed25519:return qc(o);case ft.secp256k1:return _l(o);case ft.ECDSA:return gc(o);default:throw new Ve}}function hh(r){let{Type:t,Data:e}=me.decode(r.digest),n=e??new Uint8Array;switch(t){case ft.Ed25519:return qc(n);case ft.secp256k1:return _l(n);case ft.ECDSA:return gc(n);default:throw new Ve}}function Zt(r){return me.encode({Type:ft[r.type],Data:r.raw})}function e0(r){return r==null?2048:parseInt(r,10)}function r0(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new k("Unsupported curve, should be P-256, P-384 or P-521")}var ph=Symbol.for("nodejs.util.inspect.custom"),n0=114,mo=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[es]=!0;toString(){return this.string==null&&(this.string=Y.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return nt.createV1(n0,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return Z(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return Z(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[ph](){return`PeerId(${this.toString()})`}},go=class extends mo{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},yo=class extends mo{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},bo=class extends mo{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},o0=2336,wo=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=ne.digest(C(this.url))}[ph](){return`PeerId(${this.url})`}[es]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return nt.createV1(o0,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=U(t)),t.toString()===this.toString())}};var s0=114,mh=2336;function ge(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=Ee(Y.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return xo(nt.parse(r));if(t==null)throw new k('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=Ee(t.decode(r))}return mn(e)}function Sl(r){if(r.type==="Ed25519")return new yo({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new bo({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new go({multihash:r.toCID().multihash,publicKey:r});throw new Ve}function gh(r){return Sl(r.publicKey)}function mn(r){if(a0(r))return new go({multihash:r});if(i0(r))try{let t=hh(r);if(t.type==="Ed25519")return new yo({multihash:r,publicKey:t});if(t.type==="secp256k1")return new bo({multihash:r,publicKey:t})}catch{let e=U(r.digest);return new wo(new URL(e))}throw new os("Supplied PeerID Multihash is invalid")}function xo(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==s0&&r.code!==mh)throw new ns("Supplied PeerID CID is invalid");if(r.code===mh){let t=U(r.multihash.digest);return new wo(new URL(t))}return mn(r.multihash)}function i0(r){return r.code===ne.code}function a0(r){return r.code===Xr.code}function gn(r){if(typeof r!="object"||r===null)return!1;let t=Object.getPrototypeOf(r);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in r)&&!(Symbol.iterator in r)}var{hasOwnProperty:bh}=Object.prototype,{propertyIsEnumerable:c0}=Object,yn=(r,t,e)=>{Object.defineProperty(r,t,{value:e,writable:!0,enumerable:!0,configurable:!0})},l0=void 0,yh={concatArrays:!1,ignoreUndefined:!1},Ns=r=>{let t=[];for(let e in r)bh.call(r,e)&&t.push(e);if(Object.getOwnPropertySymbols){let e=Object.getOwnPropertySymbols(r);for(let n of e)c0.call(r,n)&&t.push(n)}return t};function bn(r){return Array.isArray(r)?u0(r):gn(r)?f0(r):r}function u0(r){let t=r.slice(0,0);return Ns(r).forEach(e=>{yn(t,e,bn(r[e]))}),t}function f0(r){let t=Object.getPrototypeOf(r)===null?Object.create(null):{};return Ns(r).forEach(e=>{yn(t,e,bn(r[e]))}),t}var wh=(r,t,e,n)=>(e.forEach(o=>{typeof t[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?yn(r,o,Al(r[o],t[o],n)):yn(r,o,bn(t[o])))}),r),d0=(r,t,e)=>{let n=r.slice(0,0),o=0;return[r,t].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)bh.call(s,a)&&(i.push(String(a)),s===r?yn(n,o++,s[a]):yn(n,o++,bn(s[a])));n=wh(n,s,Ns(s).filter(a=>!i.includes(a)),e)}),n};function Al(r,t,e){return e.concatArrays&&Array.isArray(r)&&Array.isArray(t)?d0(r,t,e):!gn(t)||!gn(r)?bn(t):wh(r,t,Ns(t),e)}function Bs(...r){let t=Al(bn(yh),this!==l0&&this||{},yh),e={_:{}};for(let n of r)if(n!==void 0){if(!gn(n))throw new TypeError("`"+n+"` is not an Option Object");e=Al(e,{_:n},t)}return e._}var dt=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Il=ts(Eh(),1);var vo=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},Tl=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},vh=r=>globalThis.DOMException===void 0?new Tl(r):new DOMException(r),_h=r=>{let t=r.reason===void 0?vh("This operation was aborted."):r.reason;return t instanceof Error?t:vh(t)};function Pl(r,t){let{milliseconds:e,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=t,i,a,l=new Promise((u,f)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(t.signal){let{signal:h}=t;h.aborted&&f(_h(h)),a=()=>{f(_h(h))},h.addEventListener("abort",a,{once:!0})}if(e===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new vo;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${e} milliseconds`,f(d))},e),(async()=>{try{u(await r)}catch(h){f(h)}})()}).finally(()=>{l.clear(),a&&t.signal&&t.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}function Dl(r,t,e){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;e(r[i],t)<=0?(n=++i,o-=s+1):o=s}return n}var _o=class{#t=[];enqueue(t,e){e={priority:0,...e};let n={priority:e.priority,id:e.id,run:t};if(this.size===0||this.#t[this.size-1].priority>=e.priority){this.#t.push(n);return}let o=Dl(this.#t,n,(s,i)=>i.priority-s.priority);this.#t.splice(o,0,n)}setPriority(t,e){let n=this.#t.findIndex(s=>s.id===t);if(n===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[o]=this.#t.splice(n,1);this.enqueue(o.run,{priority:e,id:t})}dequeue(){return this.#t.shift()?.run}filter(t){return this.#t.filter(e=>e.priority===t.priority).map(e=>e.run)}get size(){return this.#t.length}};var So=class extends Il.default{#t;#n;#e=0;#h;#a;#p=0;#o;#c;#r;#m;#s=0;#l;#i;#g;#w=1n;timeout;constructor(t){if(super(),t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:_o,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);this.#t=t.carryoverConcurrencyCount,this.#n=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#h=t.intervalCap,this.#a=t.interval,this.#r=new t.queueClass,this.#m=t.queueClass,this.concurrency=t.concurrency,this.timeout=t.timeout,this.#g=t.throwOnTimeout===!0,this.#i=t.autoStart===!1}get#x(){return this.#n||this.#e<this.#h}get#E(){return this.#s<this.#l}#v(){this.#s--,this.#u(),this.emit("next")}#_(){this.#b(),this.#y(),this.#c=void 0}get#S(){let t=Date.now();if(this.#o===void 0){let e=this.#p-t;if(e<0)this.#e=this.#t?this.#s:0;else return this.#c===void 0&&(this.#c=setTimeout(()=>{this.#_()},e)),!0}return!1}#u(){if(this.#r.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let t=!this.#S;if(this.#x&&this.#E){let e=this.#r.dequeue();return e?(this.emit("active"),e(),t&&this.#y(),!0):!1}}return!1}#y(){this.#n||this.#o!==void 0||(this.#o=setInterval(()=>{this.#b()},this.#a),this.#p=Date.now()+this.#a)}#b(){this.#e===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#e=this.#t?this.#s:0,this.#f()}#f(){for(;this.#u(););}get concurrency(){return this.#l}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#l=t,this.#f()}async#A(t){return new Promise((e,n)=>{t.addEventListener("abort",()=>{n(t.reason)},{once:!0})})}setPriority(t,e){this.#r.setPriority(t,e)}async add(t,e={}){return e.id??=(this.#w++).toString(),e={timeout:this.timeout,throwOnTimeout:this.#g,...e},new Promise((n,o)=>{this.#r.enqueue(async()=>{this.#s++,this.#e++;try{e.signal?.throwIfAborted();let s=t({signal:e.signal});e.timeout&&(s=Pl(Promise.resolve(s),{milliseconds:e.timeout})),e.signal&&(s=Promise.race([s,this.#A(e.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof vo&&!e.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#v()}},e),this.emit("add"),this.#u()})}async addAll(t,e){return Promise.all(t.map(async n=>this.add(n,e)))}start(){return this.#i?(this.#i=!1,this.#f(),this):this}pause(){this.#i=!0}clear(){this.#r=new this.#m}async onEmpty(){this.#r.size!==0&&await this.#d("empty")}async onSizeLessThan(t){this.#r.size<t||await this.#d("next",()=>this.#r.size<t)}async onIdle(){this.#s===0&&this.#r.size===0||await this.#d("idle")}async#d(t,e){return new Promise(n=>{let o=()=>{e&&!e()||(this.off(t,o),n())};this.on(t,o)})}get size(){return this.#r.size}sizeBy(t){return this.#r.filter(t).length}get pending(){return this.#s}get isPaused(){return this.#i}};function Fs(r){let t=[Wt.A];return r==null?t:Array.isArray(r)?r.length===0?t:r:[r]}var Ll=60;function Ks(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(t=>({name:t.name,type:Wt[t.type]})),Answer:(r.Answer??r.answers??[]).map(t=>({name:t.name,type:Wt[t.type],TTL:t.TTL??t.ttl??Ll,data:t.data instanceof Uint8Array?U(t.data):t.data}))}}var m0=4;function Rl(r,t={}){let e=new So({concurrency:t.queryConcurrency??m0});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),Fs(o.types).forEach(a=>{s.append("type",Wt[a])}),o.onProgress?.(new dt("dns:query",{detail:n}));let i=await e.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=Ks(await a.json());return o.onProgress?.(new dt("dns:response",{detail:c})),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function Sh(){return[Rl("https://cloudflare-dns.com/dns-query"),Rl("https://dns.google/resolve")]}var Ih=ts(Ch(),1);var Ol=class{lru;constructor(t){this.lru=(0,Ih.default)(t)}get(t,e){let n=!0,o=[];for(let s of e){let i=this.getAnswers(t,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Ks({answers:o})}getAnswers(t,e){let n=`${t.toLowerCase()}-${e}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:Wt[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(t,e){let n=`${t.toLowerCase()}-${e.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(e.TTL??Ll)*1e3,value:e}),this.lru.set(n,o)}remove(t,e){let n=`${t.toLowerCase()}-${e}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Th(r){return new Ol(r)}var g0=1e3,qs=class{resolvers;cache;constructor(t){this.resolvers={},this.cache=Th(t.cacheSize??g0),Object.entries(t.resolvers??{}).forEach(([e,n])=>{Array.isArray(n)||(n=[n]),e.endsWith(".")||(e=`${e}.`),this.resolvers[e]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Sh())}async query(t,e={}){let n=Fs(e.types),o=e.cached!==!1?this.cache.get(t,n):void 0;if(o!=null)return e.onProgress?.(new dt("dns:cache",{detail:o})),o;let s=`${t.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(e.signal?.aborted===!0)break;try{let l=await c(t,{...e,types:n});for(let u of l.Answer)this.cache.add(t,u);return l}catch(l){a.push(l),e.onProgress?.(new dt("dns:error",{detail:l}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${t} ${n} failed`)}};var Wt;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Wt||(Wt={}));function Ph(r={}){return new qs(r)}var wt=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Me=class extends Error{static name="ValidationError";name="ValidationError"},Ao=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},Vs=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};var zs=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,t);if(!Number.isNaN(d))return d});if(u===void 0)break;if(s*=t,s+=u,s>l||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Dh=45,y0=15,wn=new zs;function $s(r){if(!(r.length>y0))return wn.new(r).parseWith(()=>wn.readIPv4Addr())}function Hs(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Dh))return wn.new(r).parseWith(()=>wn.readIPv6Addr())}function xn(r,t=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Dh)return;let e=wn.new(r).parseWith(()=>wn.readIPAddr());if(e)return t&&e.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,e[0],e[1],e[2],e[3]]):e}function le(r){return!!$s(r)}function Ws(r){return!!Hs(r)}function Ml(r){return t=>U(t,r)}function Nl(r){return t=>C(t,r)}function En(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function yr(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(t)}function Lh(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=C(t[0],"base32"),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=yr(n);return oe([e,o],e.length+o.length)}function Rh(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=Xt.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=yr(n);return oe([e,o],e.length+o.length)}function Bl(r){let t=r.subarray(0,r.length-2),e=r.subarray(r.length-2),n=U(t,"base32"),o=En(e);return`${n}:${o}`}var Ul=function(r){r=r.toString().trim();let t=new Uint8Array(4);return r.split(/\./g).forEach((e,n)=>{let o=parseInt(e,10);if(isNaN(o)||o<0||o>255)throw new wt("Invalid byte value in IP address");t[n]=o}),t},Oh=function(r){let t=0;r=r.toString().trim();let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=le(e[n]),i;s&&(i=Ul(e[n]),e[n]=U(i.subarray(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,U(i.subarray(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){e[n]===""&&(e[n]="0");let s=parseInt(e[n],16);if(isNaN(s)||s<0||s>65535)throw new wt("Invalid byte value in IP address");o[t++]=s>>8&255,o[t++]=s&255}return o},kh=function(r){if(r.byteLength!==4)throw new wt("IPv4 address was incorrect length");let t=[];for(let e=0;e<r.byteLength;e++)t.push(r[e]);return t.join(".")},Mh=function(r){if(r.byteLength!==16)throw new wt("IPv6 address was incorrect length");let t=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;t.push(i)}let e=t.join(":");try{let n=new URL(`http://[${e}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${e}"`)}};function Nh(r){try{let t=new URL(`http://[${r}]`);return t.hostname.substring(1,t.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${r}"`)}}var kl=Object.values($n).map(r=>r.decoder),b0=(function(){let r=kl[0].or(kl[1]);return kl.slice(2).forEach(t=>r=r.or(t)),r})();function Bh(r){return b0.decode(r)}function Uh(r){return t=>r.encoder.encode(t)}function w0(r){if(parseInt(r).toString()!==r)throw new Me("Value must be an integer")}function x0(r){if(r<0)throw new Me("Value must be a positive integer, or zero")}function E0(r){return t=>{if(t>r)throw new Me(`Value must be smaller than or equal to ${r}`)}}function v0(...r){return t=>{for(let e of r)e(t)}}var Co=v0(w0,x0,E0(65535));var yt=-1,Fl=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(t){let e;if(typeof t=="string"?e=this.protocolsByName.get(t):e=this.protocolsByCode.get(t),e==null)throw new Vs(`Protocol ${t} was unknown`);return e}addProtocol(t){this.protocolsByCode.set(t.code,t),this.protocolsByName.set(t.name,t),t.aliases?.forEach(e=>{this.protocolsByName.set(e,t)})}removeProtocol(t){let e=this.protocolsByCode.get(t);e!=null&&(this.protocolsByCode.delete(e.code),this.protocolsByName.delete(e.name),e.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},Kt=new Fl,B0=[{code:4,name:"ip4",size:32,valueToBytes:Ul,bytesToValue:kh,validate:r=>{if(!le(r))throw new Me(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:yr,bytesToValue:En,validate:Co},{code:273,name:"udp",size:16,valueToBytes:yr,bytesToValue:En,validate:Co},{code:33,name:"dccp",size:16,valueToBytes:yr,bytesToValue:En,validate:Co},{code:41,name:"ip6",size:128,valueToBytes:Oh,bytesToValue:Mh,stringToValue:Nh,validate:r=>{if(!Ws(r))throw new Me(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:yt},{code:43,name:"ipcidr",size:8,bytesToValue:Ml("base10"),valueToBytes:Nl("base10")},{code:53,name:"dns",size:yt,resolvable:!0},{code:54,name:"dns4",size:yt,resolvable:!0},{code:55,name:"dns6",size:yt,resolvable:!0},{code:56,name:"dnsaddr",size:yt,resolvable:!0},{code:132,name:"sctp",size:16,valueToBytes:yr,bytesToValue:En,validate:Co},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:yt,path:!0,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:yt,bytesToValue:Ml("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Nl("base58btc")(r):nt.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Bl,valueToBytes:Lh},{code:445,name:"onion3",size:296,bytesToValue:Bl,valueToBytes:Rh},{code:446,name:"garlic64",size:yt},{code:447,name:"garlic32",size:yt},{code:448,name:"tls"},{code:449,name:"sni",size:yt},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:yt,bytesToValue:Uh(oc),valueToBytes:Bh},{code:480,name:"http"},{code:481,name:"http-path",size:yt,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:yt}];B0.forEach(r=>{Kt.addProtocol(r)});function Fh(r){let t=[],e=0;for(;e<r.length;){let n=hr(r,e),o=Kt.getProtocol(n),s=gt(n),i=U0(o,r,e+s),a=0;i>0&&o.size===yt&&(a=gt(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(e,e+c)};if(i>0){let u=e+s+a,f=r.subarray(u,u+i);l.value=o.bytesToValue?.(f)??U(f)}t.push(l),e+=c}return t}function Kh(r){let t=0,e=[];for(let n of r){if(n.bytes==null){let o=Kt.getProtocol(n.code),s=gt(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??C(n.value),a=i.byteLength,o.size===yt&&(c=gt(a)));let l=new Uint8Array(s+c+a),u=0;an(n.code,l,u),u+=s,i!=null&&(o.size===yt&&(an(a,l,u),u+=c),l.set(i,u)),n.bytes=l}e.push(n.bytes),t+=n.bytes.byteLength}return oe(e,t)}function qh(r){if(r.charAt(0)!=="/")throw new wt('String multiaddr must start with "/"');let t=[],e="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(e==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=Kt.getProtocol(o);if(e==="protocol"){if(c.size==null||c.size===0){t.push({code:c.code,name:c.name}),n="",o="",e="protocol";continue}else if(a)throw new wt(`Component ${o} was missing value`);e="value"}else if(e==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new wt(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}t.push(l),n="",o="",e="protocol"}}}if(o!==""&&n!=="")throw new wt("Incomplete multiaddr");return t}function Vh(r){return`/${r.flatMap(t=>{if(t.value==null)return t.name;let e=Kt.getProtocol(t.code);if(e==null)throw new wt(`Unknown protocol code ${t.code}`);return[t.name,e.valueToString?.(t.value)??t.value]}).join("/")}`}function U0(r,t,e){return r.size==null||r.size===0?0:r.size>0?r.size/8:hr(t,e)}var F0=Symbol.for("nodejs.util.inspect.custom"),Xl=Symbol.for("@multiformats/multiaddr"),K0=[53,54,55,56],jl=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}};function q0(r){if(r==null&&(r="/"),er(r))return r.getComponents();if(r instanceof Uint8Array)return Fh(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),qh(r);if(Array.isArray(r))return r;throw new wt("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Zs=class r{[Xl]=!0;#t;#n;#e;constructor(t="/",e={}){this.#t=q0(t),e.validate!==!1&&V0(this)}get bytes(){return this.#e==null&&(this.#e=Kh(this.#t)),this.#e}toString(){return this.#n==null&&(this.#n=Vh(this.#t)),this.#n}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="";for(let{code:a,name:c,value:l}of this.#t)a===42&&(s=`%${l??""}`),K0.includes(a)&&(e="tcp",o=443,n=`${l??""}${s}`,t=a===55?6:4),(a===6||a===273)&&(e=c==="tcp"?"tcp":"udp",o=parseInt(l??"")),(a===4||a===41)&&(e="tcp",n=`${l??""}${s}`,t=a===41?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}getComponents(){return[...this.#t]}protos(){return this.#t.map(({code:t,value:e})=>{let n=Kt.getProtocol(t);return{code:t,size:n.size??0,name:n.name,resolvable:!!n.resolvable,path:!!n.path}})}protoCodes(){return this.#t.map(({code:t})=>t)}protoNames(){return this.#t.map(({name:t})=>t)}tuples(){return this.#t.map(({code:t,value:e})=>{if(e==null)return[t];let n=Kt.getProtocol(t),o=[t];return e!=null&&o.push(n.valueToBytes?.(e)??C(e)),o})}stringTuples(){return this.#t.map(({code:t,value:e})=>e==null?[t]:[t,e])}encapsulate(t){let e=new r(t);return new r([...this.#t,...e.getComponents()],{validate:!1})}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Ao(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(t){let e;for(let n=this.#t.length-1;n>-1;n--)if(this.#t[n].code===t){e=n;break}return new r(this.#t.slice(0,e),{validate:!1})}getPeerId(){try{let t=[];this.#t.forEach(({code:n,value:o})=>{n===421&&t.push([n,o]),n===290&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?U(Y.decode(`z${n}`),"base58btc"):U(nt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){for(let t of this.#t)if(Kt.getProtocol(t.code).path)return t.value??null;return null}equals(t){return Z(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=zh.get(e.name);if(n==null)throw new jl(`no available resolver for ${e.name}`);return(await n(this,t)).map(s=>z(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(){return!(this.#t.length!==2||this.#t[0].code!==4&&this.#t[0].code!==41||this.#t[1].code!==6&&this.#t[1].code!==273)}[F0](){return`Multiaddr(${this.toString()})`}};function V0(r){r.getComponents().forEach(t=>{let e=Kt.getProtocol(t.code);t.value!=null&&e.validate?.(t.value)})}function $h(r,t,e){let n=0;for(let o of r)if(!(n<t)){if(n>e)break;if(o!==255)return!1;n++}return!0}function Hh(r,t,e,n){let o=0;for(let s of r)if(!(o<e)){if(o>n)break;if(s!==t[o])return!1;o++}return!0}function Zl(r){switch(r.length){case vr:return r.join(".");case _r:{let t=[];for(let e=0;e<r.length;e++)e%2===0&&t.push(r[e].toString(16).padStart(2,"0")+r[e+1].toString(16).padStart(2,"0"));return t.join(":")}default:throw new Error("Invalid ip length")}}function Wh(r){let t=0;for(let[e,n]of r.entries()){if(n===255){t+=8;continue}for(;(n&128)!=0;)t++,n=n<<1;if((n&128)!=0)return-1;for(let o=e+1;o<r.length;o++)if(r[o]!=0)return-1;break}return t}function Gh(r){let t="0x";for(let e of r)t+=(e>>4).toString(16)+(e&15).toString(16);return t}var vr=4,_r=16,jS=parseInt("0xFFFF",16),z0=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function To(r,t){t.length===_r&&r.length===vr&&$h(t,0,11)&&(t=t.slice(12)),t.length===vr&&r.length===_r&&Hh(r,z0,0,11)&&(r=r.slice(12));let e=r.length;if(e!=t.length)throw new Error("Failed to mask ip");let n=new Uint8Array(e);for(let o=0;o<e;o++)n[o]=r[o]&t[o];return n}function jh(r,t){if(typeof t=="string"&&(t=xn(t)),t==null)throw new Error("Invalid ip");if(t.length!==r.network.length)return!1;for(let e=0;e<t.length;e++)if((r.network[e]&r.mask[e])!==(t[e]&r.mask[e]))return!1;return!0}function Yl(r){let[t,e]=r.split("/");if(!t||!e)throw new Error("Failed to parse given CIDR: "+r);let n=vr,o=$s(t);if(o==null&&(n=_r,o=Hs(t),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(e,10);if(Number.isNaN(s)||String(s).length!==e.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Ql(s,8*n);return{network:To(o,i),mask:i}}function Ql(r,t){if(t!==8*vr&&t!==8*_r)throw new Error("Invalid CIDR mask");if(r<0||r>t)throw new Error("Invalid CIDR mask");let e=t/8,n=new Uint8Array(e);for(let o=0;o<e;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Cn=class{constructor(t,e){if(e==null)({network:this.network,mask:this.mask}=Yl(t));else{let n=xn(t);if(n==null)throw new Error("Failed to parse network");e=String(e);let o=parseInt(e,10);if(Number.isNaN(o)||String(o).length!==e.length||o<0||o>n.length*8){let s=xn(e);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=Ql(o,8*n.length);this.network=To(n,this.mask)}}contains(t){return jh({network:this.network,mask:this.mask},t)}toString(){let t=Wh(this.mask),e=t!==-1?String(t):Gh(this.mask);return Zl(this.network)+"/"+e}};function Jl(r){let t,e;if(r.getComponents().forEach(n=>{(n.name==="ip4"||n.name==="ip6")&&(e=n.value),n.name==="ipcidr"&&(t=n.value)}),t==null||e==null)throw new Error("Invalid multiaddr");return new Cn(e,t)}var zh=new Map;function er(r){return!!r?.[Xl]}function z(r){return new Zs(r)}function Ys(r){let t=Kt.getProtocol(r);return{code:t.code,size:t.size??0,name:t.name,resolvable:!!t.resolvable,path:!!t.path}}var tu=class{dns;canResolve(t){return t.getComponents().some(({name:e})=>e==="dnsaddr")}async resolve(t,e){let n=t.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[t];let s=await this.getDNS(e).query(`_dnsaddr.${n}`,{signal:e?.signal,types:[Wt.TXT]}),i=t.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(z(l)))}return a}getDNS(t){return t.dns!=null?t.dns:(this.dns==null&&(this.dns=Ph()),this.dns)}},Ne=new tu;var $0={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Ne}},transportManager:{faultTolerance:or.FATAL_ALL}};async function Xh(r){let t=Bs($0,r);if(t.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new k("Private network is enforced, but no protector was provided");return t}function H0(r,t){try{if(typeof r=="string"&&r.length>0)return W0(r);if(typeof r=="number"&&isFinite(r))return t?.long?j0(r):G0(r);throw new Error("Value is not a string or number.")}catch(e){let n=X0(e)?`${e.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function W0(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!t)return NaN;let e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*315576e5;case"weeks":case"week":case"w":return e*6048e5;case"days":case"day":case"d":return e*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return e*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return e*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return e*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var Js=H0;function G0(r){let t=Math.abs(r);return t>=864e5?`${Math.round(r/864e5)}d`:t>=36e5?`${Math.round(r/36e5)}h`:t>=6e4?`${Math.round(r/6e4)}m`:t>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function j0(r){let t=Math.abs(r);return t>=864e5?Qs(r,t,864e5,"day"):t>=36e5?Qs(r,t,36e5,"hour"):t>=6e4?Qs(r,t,6e4,"minute"):t>=1e3?Qs(r,t,1e3,"second"):`${r} ms`}function Qs(r,t,e,n){let o=t>=e*1.5;return`${Math.round(r/e)} ${n}${o?"s":""}`}function X0(r){return typeof r=="object"&&r!==null&&"message"in r}function eu(r){e.debug=e,e.default=e,e.coerce=c,e.disable=s,e.enable=o,e.enabled=i,e.humanize=Js,e.destroy=l,Object.keys(r).forEach(u=>{e[u]=r[u]}),e.names=[],e.skips=[],e.formatters={};function t(u){let f=0;for(let d=0;d<u.length;d++)f=(f<<5)-f+u.charCodeAt(d),f|=0;return e.colors[Math.abs(f)%e.colors.length]}e.selectColor=t;function e(u){let f,d=null,h,p;function m(...x){if(!m.enabled)return;let g=m,_=Number(new Date),w=_-(f||_);g.diff=w,g.prev=f,g.curr=_,f=_,x[0]=e.coerce(x[0]),typeof x[0]!="string"&&x.unshift("%O");let A=0;x[0]=x[0].replace(/%([a-zA-Z%])/g,(K,V)=>{if(K==="%%")return"%";A++;let M=e.formatters[V];if(typeof M=="function"){let v=x[A];K=M.call(g,v),x.splice(A,1),A--}return K}),e.formatArgs.call(g,x),(g.log||e.log).apply(g,x)}return m.namespace=u,m.useColors=e.useColors(),m.color=e.selectColor(u),m.extend=n,m.destroy=e.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==e.namespaces&&(h=e.namespaces,p=e.enabled(u)),p),set:x=>{d=x}}),typeof e.init=="function"&&e.init(m),m}function n(u,f){let d=e(this.namespace+(typeof f>"u"?":":f)+u);return d.log=this.log,d}function o(u){e.save(u),e.namespaces=u,e.names=[],e.skips=[];let f,d=(typeof u=="string"?u:"").split(/[\s,]+/),h=d.length;for(f=0;f<h;f++)d[f]&&(u=d[f].replace(/\*/g,".*?"),u[0]==="-"?e.skips.push(new RegExp("^"+u.substr(1)+"$")):e.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...e.names.map(a),...e.skips.map(a).map(f=>"-"+f)].join(",");return e.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let f,d;for(f=0,d=e.skips.length;f<d;f++)if(e.skips[f].test(u))return!1;for(f=0,d=e.names.length;f<d;f++)if(e.names[f].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.setupFormatters(e.formatters),e.enable(e.load()),e}var ti=rb(),Z0=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Y0(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function Q0(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Js(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}var J0=console.debug??console.log??(()=>{});function tb(r){try{r?ti?.setItem("debug",r):ti?.removeItem("debug")}catch{}}function eb(){let r;try{r=ti?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function rb(){try{return localStorage}catch{}}function nb(r){r.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}var Zh=eu({formatArgs:Q0,save:tb,load:eb,useColors:Y0,setupFormatters:nb,colors:Z0,storage:ti,log:J0});var qt=Zh;qt.formatters.b=r=>r==null?"undefined":Y.baseEncode(r);qt.formatters.t=r=>r==null?"undefined":Xt.baseEncode(r);qt.formatters.m=r=>r==null?"undefined":nc.baseEncode(r);qt.formatters.p=r=>r==null?"undefined":r.toString();qt.formatters.c=r=>r==null?"undefined":r.toString();qt.formatters.k=r=>r==null?"undefined":r.toString();qt.formatters.a=r=>r==null?"undefined":r.toString();qt.formatters.e=r=>r==null?"undefined":Yh(r.stack)??Yh(r.message)??r.toString();function ob(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function ei(){return{forComponent(r){return Qh(r)}}}function Qh(r){let t=ob(`${r}:trace`);return qt.enabled(`${r}:trace`)&&qt.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=qt(`${r}:trace`)),Object.assign(qt(r),{error:qt(`${r}:error`),trace:t,newScope:e=>Qh(`${r}:${e}`)})}function Yh(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function Sr(r,t){let e={[Symbol.iterator]:()=>e,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:t(o)}}};return e}function ri(r){let t=Ee(Y.decode(`z${r}`));return mn(t)}var te=class{map;constructor(t){if(this.map=new Map,t!=null)for(let[e,n]of t.entries())this.map.set(e.toString(),{key:e,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(t){return this.map.delete(t.toString())}entries(){return Sr(this.map.entries(),t=>[t[1].key,t[1].value])}forEach(t){this.map.forEach((e,n)=>{t(e.value,e.key,this)})}get(t){return this.map.get(t.toString())?.value}has(t){return this.map.has(t.toString())}set(t,e){this.map.set(t.toString(),{key:t,value:e})}keys(){return Sr(this.map.values(),t=>t.key)}values(){return Sr(this.map.values(),t=>t.value)}get size(){return this.map.size}};var Ar=class r{set;constructor(t){if(this.set=new Set,t!=null)for(let e of t)this.set.add(e.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(t){this.set.add(t.toString())}clear(){this.set.clear()}delete(t){this.set.delete(t.toString())}entries(){return Sr(this.set.entries(),t=>{let e=ri(t[0]);return[e,e]})}forEach(t){this.set.forEach(e=>{let n=ri(e);t(n,n,this)})}has(t){return this.set.has(t.toString())}values(){return Sr(this.set.values(),t=>ri(t))}intersection(t){let e=new r;for(let n of t)this.has(n)&&e.add(n);return e}difference(t){let e=new r;for(let n of this)t.has(n)||e.add(n);return e}union(t){let e=new r;for(let n of t)e.add(n);for(let n of this)e.add(n);return e}};var ru={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Jh={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},tp=new globalThis.TextEncoder;function sb(r,t){let e=ru[t],n=Jh[t];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(t,n*e);return n}function ib(r,t,e){if(e.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=ru[t],o=Jh[t],s=r;for(;s.length>0;){let i=tp.encodeInto(s,e);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(e[a]),o=BigInt.asUintN(t,o*n)}return o}function nu(r,{size:t=32,utf8Buffer:e}={}){if(!ru[t])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(e)return ib(r,t,e);r=tp.encode(r)}return sb(r,t)}var Po={hash:r=>Number(nu(r,{size:32})),hashV:(r,t)=>ab(Po.hash(r,t))};function ab(r){let t=r.toString(16);return t.length%2===1&&(t=`0${t}`),C(t,"base16")}var ou=64,fe=class{fp;h;seed;constructor(t,e,n,o=2){if(o>ou)throw new TypeError("Invalid Fingerprint Size");let s=e.hashV(t,n),i=ct(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=e,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(t){return t?.fp instanceof Uint8Array?Z(this.fp,t.fp):!1}};function Cr(r,t){return Math.floor(Math.random()*(t-r))+r}var Ir=class{contents;constructor(t){this.contents=new Array(t).fill(null)}has(t){if(!(t instanceof fe))throw new TypeError("Invalid Fingerprint");return this.contents.some(e=>t.equals(e))}add(t){if(!(t instanceof fe))throw new TypeError("Invalid Fingerprint");for(let e=0;e<this.contents.length;e++)if(this.contents[e]==null)return this.contents[e]=t,!0;return!0}swap(t){if(!(t instanceof fe))throw new TypeError("Invalid Fingerprint");let e=Cr(0,this.contents.length-1),n=this.contents[e];return this.contents[e]=t,n}remove(t){if(!(t instanceof fe))throw new TypeError("Invalid Fingerprint");let e=this.contents.findIndex(n=>t.equals(n));return e>-1?(this.contents[e]=null,!0):!1}};var cb=500,Do=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(t){this.filterSize=t.filterSize,this.bucketSize=t.bucketSize??4,this.fingerprintSize=t.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=t.hash??Po,this.seed=t.seed??Cr(0,Math.pow(2,10))}add(t){typeof t=="string"&&(t=C(t));let e=new fe(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=(n^e.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Ir(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new Ir(this.bucketSize)),this.buckets[n].add(e)||this.buckets[o].add(e))return this.count++,!0;let s=[n,o],i=s[Cr(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Ir(this.bucketSize));for(let a=0;a<cb;a++){let c=this.buckets[i].swap(e);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Ir(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(t){typeof t=="string"&&(t=C(t));let e=new fe(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.has(e)??!1;if(o)return o;let s=(n^e.hash())%this.filterSize;return this.buckets[s]?.has(e)??!1}remove(t){typeof t=="string"&&(t=C(t));let e=new fe(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.remove(e)??!1;if(o)return this.count--,o;let s=(n^e.hash())%this.filterSize,i=this.buckets[s]?.remove(e)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},lb={1:.5,2:.84,4:.95,8:.98};function ub(r=.001){return r>.002?2:r>1e-5?4:8}function ep(r,t=.001){let e=ub(t),n=lb[e],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/t)+Math.log2(2*e)),ou);return{filterSize:o,bucketSize:e,fingerprintSize:s}}var ni=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(t){this.bucketSize=t.bucketSize??4,this.filterSize=t.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=t.fingerprintSize??2,this.scale=t.scale??2,this.hash=t.hash??Po,this.seed=t.seed??Cr(0,Math.pow(2,10)),this.filterSeries=[new Do({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(t){if(typeof t=="string"&&(t=C(t)),this.has(t))return!0;let e=this.filterSeries.find(n=>n.reliable);if(e==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);e=new Do({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(e)}return e.add(t)}has(t){typeof t=="string"&&(t=C(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].has(t))return!0;return!1}remove(t){typeof t=="string"&&(t=C(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].remove(t))return!0;return!1}get count(){return this.filterSeries.reduce((t,e)=>t+e.count,0)}};function Lo(r,t=.001,e){return new ni({...ep(r,t),...e??{}})}var su=class extends te{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function iu(r){let{name:t,metrics:e}=r,n;return e!=null?n=new su({name:t,metrics:e}):n=new te,n}var Ro;(function(r){let t;r.codec=()=>(t==null&&(t=kt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.publicKey!=null&&e.publicKey.byteLength>0&&(n.uint32(10),n.bytes(e.publicKey)),e.payloadType!=null&&e.payloadType.byteLength>0&&(n.uint32(18),n.bytes(e.payloadType)),e.payload!=null&&e.payload.byteLength>0&&(n.uint32(26),n.bytes(e.payload)),e.signature!=null&&e.signature.byteLength>0&&(n.uint32(42),n.bytes(e.signature)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={publicKey:ct(0),payloadType:ct(0),payload:ct(0),signature:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.publicKey=e.bytes();break}case 2:{s.payloadType=e.bytes();break}case 3:{s.payload=e.bytes();break}case 5:{s.signature=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Ot(e,r.codec()),r.decode=(e,n)=>Rt(e,r.codec(),n)})(Ro||(Ro={}));var oi=class extends Error{constructor(t="Invalid signature"){super(t),this.name="InvalidSignatureError"}};var In=class r{static createFromProtobuf=t=>{let e=Ro.decode(t),n=pn(e.publicKey);return new r({publicKey:n,payloadType:e.payloadType,payload:e.payload,signature:e.signature})};static seal=async(t,e,n)=>{if(e==null)throw new Error("Missing private key");let o=t.domain,s=t.codec,i=t.marshal(),a=rp(o,s,i),c=await e.sign(a.subarray(),n);return new r({publicKey:e.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(t,e,n)=>{let o=r.createFromProtobuf(t);if(!await o.validate(e,n))throw new oi("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(t){let{publicKey:e,payloadType:n,payload:o,signature:s}=t;this.publicKey=e,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Ro.encode({publicKey:Zt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(t){return t==null?!1:Z(this.marshal(),t.marshal())}async validate(t,e){let n=rp(t,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,e)}},rp=(r,t,e)=>{let n=C(r),o=pe(n.byteLength),s=pe(t.length),i=pe(e.length);return new W(o,n,s,t,i,e)};function np(r,t){let e=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==t.length?!1:(t.sort(e),r.sort(e).every((n,o)=>t[o].equals(n)))}var op="libp2p-peer-record",sp=Uint8Array.from([3,1]);var Oo;(function(r){let t;(function(n){let o;n.codec=()=>(o==null&&(o=kt((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ct(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(u&7);break}}}return c})),o),n.encode=s=>Ot(s,n.codec()),n.decode=(s,i)=>Rt(s,n.codec(),i)})(t=r.AddressInfo||(r.AddressInfo={}));let e;r.codec=()=>(e==null&&(e=kt((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ct(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new gr('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),e),r.encode=n=>Ot(n,r.codec()),r.decode=(n,o)=>Rt(n,r.codec(),o)})(Oo||(Oo={}));var Tr=class r{static createFromProtobuf=t=>{let e=Oo.decode(t),n=mn(Ee(e.peerId)),o=(e.addresses??[]).map(i=>z(i.multiaddr)),s=e.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=op;static CODEC=sp;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(t){let{peerId:e,multiaddrs:n,seqNumber:o}=t;this.peerId=e,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Oo.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(t=>({multiaddr:t.bytes}))})),this.marshaled}equals(t){return!(!(t instanceof r)||!this.peerId.equals(t.peerId)||this.seqNumber!==t.seqNumber||!np(this.multiaddrs,t.multiaddrs))}};function fb(r){return r[Symbol.asyncIterator]!=null}function db(r){if(fb(r))return(async()=>{let e=[];for await(let n of r)e.push(n);return e})();let t=[];for(let e of r)t.push(e);return t}var ko=db;var jt=class extends Error{static name="AbortError";name="AbortError";constructor(t="The operation was aborted",...e){super(t,...e)}};function ut(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var si=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||(t-1&t)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},Tn=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new si(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new si(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var au=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function ii(r={}){return hb(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function hb(r,t){t=t??{};let e=t.onEnd,n=new Tn,o,s,i,a=ut(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((x,g)=>{s=_=>{s=null,n.push(_);try{x(r(n))}catch(w){g(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ut()})}},l=x=>s!=null?s(x):(n.push(x),o),u=x=>(n=new Tn,s!=null?s({error:x}):(n.push({error:x}),o)),f=x=>{if(i)return o;if(t?.objectMode!==!0&&x?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:x})},d=x=>i?o:(i=!0,x!=null?u(x):l({done:!0})),h=()=>(n=new Tn,d(),{done:!0}),p=x=>(d(x),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:f,end:d,get readableLength(){return n.size},onEmpty:async x=>{let g=x?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let _,w;g!=null&&(_=new Promise((A,R)=>{w=()=>{R(new au)},g.addEventListener("abort",w)}));try{await Promise.race([a.promise,_])}finally{w!=null&&g!=null&&g?.removeEventListener("abort",w)}}},e==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(x){return m.throw(x),e!=null&&(e(x),e=void 0),{done:!0}},return(){return m.return(),e!=null&&(e(),e=void 0),{done:!0}},push:f,end(x){return m.end(x),e!=null&&(e(x),e=void 0),o},get readableLength(){return m.readableLength},onEmpty:x=>m.onEmpty(x)},o}async function be(r,t,e,n){let o=new jt(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return e?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){lu(e,"abort",f),lu(r,t,l),lu(r,s,u)}let l=d=>{try{if(n?.filter?.(d)===!1)return}catch(h){c(),a(h);return}c(),i(d)},u=d=>{if(c(),d instanceof Error){a(d);return}a(d.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},f=()=>{c(),a(o)};cu(e,"abort",f),cu(r,t,l),cu(r,s,u)})}function cu(r,t,e){r!=null&&(ip(r)?r.addEventListener(t,e):r.addListener(t,e))}function lu(r,t,e){r!=null&&(ip(r)?r.removeEventListener(t,e):r.removeListener(t,e))}function ip(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var ai=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var ci=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function xt(r,t,e){if(t==null)return r;if(t.aborted)return r.catch(()=>{}),Promise.reject(new ci(e?.errorMessage,e?.errorCode,e?.errorName));let n,o=new ci(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var li=class{deferred;signal;constructor(t){this.signal=t,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new jt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function pb(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ui=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=pb(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new jt),this.cleanup())}async join(t={}){let e=new li(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await xt(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};function uu(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var Mo=class extends Vt{concurrency;maxSize;queue;pending;sort;autoStart;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=t.autoStart??!0,this.sort=t.sort,this.queue=[],this.emitEmpty=uu(this.emitEmpty.bind(this),1),this.emitIdle=uu(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new ai;let n=new ui(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(e).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(t=>{t.abort(new jt)}),this.clear()}async onEmpty(t){this.size!==0&&await be(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await be(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await be(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=ii({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new jt("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var fi="lock:worker:request-read",di="lock:worker:abort-read-request",hi="lock:worker:release-read",pi="lock:master:grant-read",mi="lock:master:error-read",gi="lock:worker:request-write",yi="lock:worker:abort-write-request",bi="lock:worker:release-write",wi="lock:master:grant-write",xi="lock:master:error-write",Ei="lock:worker:finalize",vi="mortice",ap={singleProcess:!1};var fu=(r,t,e,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let u={type:l.data.type,name:l.data.name,identifier:l.data.identifier};u.type===o&&r.safeDispatchEvent(e,{detail:{name:u.name,identifier:u.identifier,handler:async()=>{t.postMessage({type:c,name:u.name,identifier:u.identifier}),await new Promise(f=>{let d=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===u.identifier&&(t.removeEventListener("message",d),f())};t.addEventListener("message",d)})},onError:f=>{t.postMessage({type:i,name:u.name,identifier:u.identifier,error:{message:f.message,name:f.name,stack:f.stack}})}}}),u.type===s&&r.safeDispatchEvent(n,{detail:{name:u.name,identifier:u.identifier}}),u.type===Ei&&r.safeDispatchEvent("finalizeRequest",{detail:{name:u.name}})};var cp=(r=10)=>Math.random().toString().substring(2,r+2);var _i=class{name;channel;constructor(t){this.name=t,this.channel=new BroadcastChannel(vi)}readLock(t){return this.sendRequest(fi,di,pi,mi,hi,t)}writeLock(t){return this.sendRequest(gi,yi,wi,xi,bi,t)}finalize(){this.channel.postMessage({type:Ei,name:this.name}),this.channel.close()}async sendRequest(t,e,n,o,s,i){i?.signal?.throwIfAborted();let a=cp();return this.channel.postMessage({type:t,identifier:a,name:this.name}),new Promise((c,l)=>{let u=()=>{this.channel.postMessage({type:e,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",u,{once:!0});let f=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u);let h=new Error;d.data.error!=null&&(h.message=d.data.error.message,h.name=d.data.error.name,h.stack=d.data.error.stack),l(h)}};this.channel.addEventListener("message",f)})}};var lp=r=>{if(r=Object.assign({},ap,r),!!globalThis.document||r.singleProcess){let e=new BroadcastChannel(vi),n=new Vt;return e.addEventListener("message",fu(n,e,"requestReadLock","abortReadLockRequest",fi,di,mi,hi,pi)),e.addEventListener("message",fu(n,e,"requestWriteLock","abortWriteLockRequest",gi,yi,xi,bi,wi)),n}return new _i(r.name)};var Pr=new Map,No;function up(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function mb(r){if(No==null&&(No=lp(r),!up(No))){let t=No;t.addEventListener("requestReadLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=Pr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortReadLockRequest",a)})}),t.addEventListener("requestWriteLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=Pr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortWriteLockRequest",a)})}),t.addEventListener("finalizeRequest",e=>{let n=e.detail.name,o=Pr.get(n);o?.finalize()})}return No}async function du(r,t){let e,n,o=new Promise((i,a)=>{e=i,n=a}),s=()=>{n(new jt)};return t?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{e(()=>{t?.signal?.removeEventListener("abort",s),i()})})},{signal:t?.signal}).catch(i=>{n(i)}),o}var fp=(r,t)=>{let e=Pr.get(r);if(e!=null)return e;let n=mb(t);if(up(n))return e=n,Pr.set(r,e),e;let o=new Mo({concurrency:1}),s;return e={async readLock(i){if(s!=null)return du(s,i);s=new Mo({concurrency:t.concurrency,autoStart:!1});let a=s,c=du(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,du(o,i)},finalize:()=>{Pr.delete(r)},queue:o},Pr.set(r,e),t.autoFinalize===!0&&o.addEventListener("idle",()=>{e.finalize()},{once:!0}),e};var gb={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function hu(r){let t=Object.assign({},gb,r);return fp(t.name,t)}var Be;(function(r){let t;(function(o){let s;o.codec=()=>(s==null&&(s=kt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ct(0)},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ot(i,o.codec()),o.decode=(i,a)=>Rt(i,o.codec(),a)})(t=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let e;(function(o){let s;o.codec=()=>(s==null&&(s=kt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),Ai.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=Ai.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ot(i,o.codec()),o.decode=(i,a)=>Rt(i,o.codec(),a)})(e=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=kt((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Si.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new gr('Decode error - map field "addresses" had too many elements');a.addresses.push(Si.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new gr('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new uo('Decode error - map field "metadata" had too many elements');let u=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(u.key,u.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new uo('Decode error - map field "tags" had too many elements');let u=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(u.key,u.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Ot(o,r.codec()),r.decode=(o,s)=>Rt(o,r.codec(),s)})(Be||(Be={}));var Si;(function(r){let t;r.codec=()=>(t==null&&(t=kt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.multiaddr!=null&&e.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(e.multiaddr)),e.isCertified!=null&&(n.uint32(16),n.bool(e.isCertified)),e.observed!=null&&(n.uint32(24),n.uint64Number(e.observed)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={multiaddr:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.multiaddr=e.bytes();break}case 2:{s.isCertified=e.bool();break}case 3:{s.observed=e.uint64Number();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Ot(e,r.codec()),r.decode=(e,n)=>Rt(e,r.codec(),n)})(Si||(Si={}));var Ai;(function(r){let t;r.codec=()=>(t==null&&(t=kt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.value!=null&&e.value!==0&&(n.uint32(8),n.uint32(e.value)),e.expiry!=null&&(n.uint32(16),n.uint64(e.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={value:0},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.value=e.uint32();break}case 2:{s.expiry=e.uint64();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Ot(e,r.codec()),r.decode=(e,n)=>Rt(e,r.codec(),n)})(Ai||(Ai={}));function yb(r,t){if(r.publicKey!=null||t.publicKey==null)return r;let e;r.type==="RSA"&&(e=r.toMultihash());let n=pn(t.publicKey,e);return Sl(n)}function dp(r,t,e){let n=Be.decode(t);return Pn(r,n,e)}function Pn(r,t,e){let n=new Map,o=BigInt(Date.now());for(let[s,i]of t.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...t,id:yb(r,t),addresses:t.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-e).map(({multiaddr:s,isCertified:i})=>({multiaddr:z(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}function hp(r,t){return bb(r.addresses,t.addresses)&&wb(r.protocols,t.protocols)&&xb(r.publicKey,t.publicKey)&&Eb(r.peerRecordEnvelope,t.peerRecordEnvelope)&&vb(r.metadata,t.metadata)&&_b(r.tags,t.tags)}function bb(r,t){return mp(r,t,(e,n)=>!(e.isCertified!==n.isCertified||!Z(e.multiaddr,n.multiaddr)))}function wb(r,t){return mp(r,t,(e,n)=>e===n)}function xb(r,t){return pp(r,t)}function Eb(r,t){return pp(r,t)}function vb(r,t){return gp(r,t,(e,n)=>Z(e,n))}function _b(r,t){return gp(r,t,(e,n)=>e.value===n.value&&e.expiry===n.expiry)}function pp(r,t){return r==null&&t==null?!0:r!=null&&t!=null?Z(r,t):!1}function mp(r,t,e){if(r.length!==t.length)return!1;for(let n=0;n<r.length;n++)if(!e(r[n],t[n]))return!1;return!0}function gp(r,t,e){if(r.size!==t.size)return!1;for(let[n,o]of r.entries()){let s=t.get(n);if(s==null||!e(o,s))return!1}return!0}var Ue="/",yp=new TextEncoder().encode(Ue),Ci=yp[0],Dr=class r{_buf;constructor(t,e){if(typeof t=="string")this._buf=C(t);else if(t instanceof Uint8Array)this._buf=t;else throw new Error("Invalid key, should be String of Uint8Array");if(e==null&&(e=!0),e&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Ci)throw new Error("Invalid key")}toString(t="utf8"){return U(this._buf,t)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(t){return new r(t.join(Ue))}static random(){return new r(Math.random().toString().substring(2))}static asKey(t){return t instanceof Uint8Array||typeof t=="string"?new r(t):typeof t.uint8Array=="function"?new r(t.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=yp),this._buf[0]!==Ci){let t=new Uint8Array(this._buf.byteLength+1);t.fill(Ci,0,1),t.set(this._buf,1),this._buf=t}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Ci;)this._buf=this._buf.subarray(0,-1)}less(t){let e=this.list(),n=t.list();for(let o=0;o<e.length;o++){if(n.length<o+1)return!1;let s=e[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return e.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let t=this.namespaces();return t[t.length-1]}list(){return this.toString().split(Ue).slice(1)}type(){return Sb(this.baseNamespace())}name(){return Ab(this.baseNamespace())}instance(t){return new r(this.toString()+":"+t)}path(){let t=this.parent().toString();return t.endsWith(Ue)||(t+=Ue),t+=this.type(),new r(t)}parent(){let t=this.list();return t.length===1?new r(Ue):new r(t.slice(0,-1).join(Ue))}child(t){return this.toString()===Ue?t:t.toString()===Ue?this:new r(this.toString()+t.toString(),!1)}isAncestorOf(t){return t.toString()===this.toString()?!1:t.toString().startsWith(this.toString())}isDecendantOf(t){return t.toString()===this.toString()?!1:this.toString().startsWith(t.toString())}isTopLevel(){return this.list().length===1}concat(...t){return r.withNamespaces([...this.namespaces(),...Cb(t.map(e=>e.namespaces()))])}};function Sb(r){let t=r.split(":");return t.length<2?"":t.slice(0,-1).join(":")}function Ab(r){let t=r.split(":");return t[t.length-1]}function Cb(r){return[].concat(...r)}var pu="/peers/";function Bo(r){if(!Ke(r)||r.type==null)throw new k("Invalid PeerId");let t=r.toCID().toString();return new Dr(`${pu}${t}`)}async function bp(r,t,e,n,o){let s=new Map;for(let i of e){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=z(i.multiaddr)),!er(i.multiaddr))throw new k("Multiaddr was invalid");if(!await t(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getPeerId();return r.equals(c)&&(a=a.decapsulate(z(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function Ti(r,t,e,n){if(t==null)throw new k("Invalid PeerData");if(t.publicKey!=null&&r.publicKey!=null&&!t.publicKey.equals(r.publicKey))throw new k("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new k("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(e==="patch"){if((t.multiaddrs!=null||t.addresses!=null)&&(s=[],t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses)),t.protocols!=null&&(i=new Set(t.protocols)),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);a=Ii(d,{validate:wp})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags);c=Ii(d,{validate:xp,map:Ep})}t.peerRecordEnvelope!=null&&(l=t.peerRecordEnvelope)}if(e==="merge"){if(t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses),t.protocols!=null&&(i=new Set([...i,...t.protocols])),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=Ii([...a.entries()],{validate:wp})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags),h=new Map(c);for(let[p,m]of d)m==null?h.delete(p):h.set(p,m);c=Ii([...h.entries()],{validate:xp,map:Ep})}t.peerRecordEnvelope!=null&&(l=t.peerRecordEnvelope)}let u;o?.id.publicKey!=null?u=Zt(o.id.publicKey):t.publicKey!=null?u=Zt(t.publicKey):r.publicKey!=null&&(u=Zt(r.publicKey));let f={addresses:await bp(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:u,peerRecordEnvelope:l};return f.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(h=>Z(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete f.publicKey,f}function Ii(r,t){let e=new Map;for(let[n,o]of r)o!=null&&t.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&e.set(n,t.map?.(n,o)??o);return e}function wp(r,t){if(typeof r!="string")throw new k("Metadata key must be a string");if(!(t instanceof Uint8Array))throw new k("Metadata value must be a Uint8Array")}function xp(r,t){if(typeof r!="string")throw new k("Tag name must be a string");if(t.value!=null){if(parseInt(`${t.value}`,10)!==t.value)throw new k("Tag value must be an integer");if(t.value<0||t.value>100)throw new k("Tag value must be between 0-100")}if(t.ttl!=null){if(parseInt(`${t.ttl}`,10)!==t.ttl)throw new k("Tag ttl must be an integer");if(t.ttl<0)throw new k("Tag ttl must be between greater than 0")}}function Ep(r,t){let e;t.expiry!=null&&(e=t.expiry),t.ttl!=null&&(e=BigInt(Date.now()+Number(t.ttl)));let n={value:t.value??0};return e!=null&&(n.expiry=e),n}function vp(r){let t=r.toString().split("/")[2],e=nt.parse(t,Xt);return xo(e)}function mu(r,t,e){let n=vp(r);return dp(n,t,e)}function Ib(r,t){return{prefix:pu,filters:(r.filters??[]).map(e=>({key:n,value:o})=>e(mu(n,o,t))),orders:(r.orders??[]).map(e=>(n,o)=>e(mu(n.key,n.value,t),mu(o.key,o.value,t)))}}var Pi=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.peerId=t.peerId,this.datastore=t.datastore,this.addressFilter=e.addressFilter,this.locks=iu({name:"libp2p_peer_store_locks",metrics:t.metrics}),this.maxAddressAge=e.maxAddressAge??36e5,this.maxPeerAge=e.maxPeerAge??216e5}getLock(t){let e=this.locks.get(t);return e==null&&(e={refs:0,lock:hu({name:t.toString(),singleProcess:!0})},this.locks.set(t,e)),e.refs++,e}maybeRemoveLock(t,e){e.refs--,e.refs===0&&(e.lock.finalize(),this.locks.delete(t))}async getReadLock(t,e){let n=this.getLock(t);try{let o=await n.lock.readLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async getWriteLock(t,e){let n=this.getLock(t);try{let o=await n.lock.writeLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async has(t,e){try{return await this.load(t,e),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(t,e){this.peerId.equals(t)||await this.datastore.delete(Bo(t),e)}async load(t,e){let n=Bo(t),o=await this.datastore.get(n,e),s=Be.decode(o);if(this.#e(t,s))throw await this.datastore.delete(n,e),new sr;return Pn(t,s,this.peerId.equals(t)?1/0:this.maxAddressAge)}async save(t,e,n){let o=await this.#t(t,n),s=await Ti(t,e,"patch",{...n,addressFilter:this.addressFilter});return this.#n(t,s,o)}async patch(t,e,n){let o=await this.#t(t,n),s=await Ti(t,e,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#n(t,s,o)}async merge(t,e,n){let o=await this.#t(t,n),s=await Ti(t,e,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#n(t,s,o)}async*all(t){for await(let{key:e,value:n}of this.datastore.query(Ib(t??{},this.maxAddressAge),t)){let o=vp(e);if(o.equals(this.peerId))continue;let s=Be.decode(n);if(this.#e(o,s)){await this.datastore.delete(e,t);continue}yield Pn(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#t(t,e){try{let n=Bo(t),o=await this.datastore.get(n,e),s=Be.decode(o);if(this.#e(t,s))throw await this.datastore.delete(n,e),new sr;return{peerPB:s,peer:Pn(t,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#n(t,e,n,o){e.updated=Date.now();let s=Be.encode(e);return await this.datastore.put(Bo(t),s,o),{peer:Pn(t,e,this.maxAddressAge),previous:n?.peer,updated:n==null||!hp(e,n.peerPB)}}#e(t,e){if(e.updated==null)return!0;if(this.peerId.equals(t))return!1;let n=e.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=e.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var gu=class{store;events;peerId;log;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.events=t.events,this.peerId=t.peerId,this.store=new Pi(t,e)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(t,e){for await(let n of this.store.all(e))t(n)}async all(t){return ko(this.store.all(t))}async delete(t,e){let n=await this.store.getReadLock(t,e);try{await this.store.delete(t,e)}finally{n()}}async has(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.has(t,e)}finally{this.log.trace("has release read lock"),n?.()}}async get(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.load(t,e)}finally{n?.()}}async getInfo(t,e){let n=await this.get(t,e);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.save(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async patch(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.patch(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async merge(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.merge(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async consumePeerRecord(t,e,n){let o=Ke(e)?e:Ke(e?.expectedPeer)?e.expectedPeer:void 0,s=Ke(e)||e===void 0?n:e,i=await In.openAndCertify(t,Tr.DOMAIN,s),a=xo(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Tr.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(u){if(u.name!=="NotFoundError")throw u}if(l?.peerRecordEnvelope!=null){let u=In.createFromProtobuf(l.peerRecordEnvelope),f=Tr.createFromProtobuf(u.payload);if(f.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",f.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:t,addresses:c.multiaddrs.map(u=>({isCertified:!0,multiaddr:u}))},s),!0}#t(t,e){e.updated&&(this.peerId.equals(t)?this.events.safeDispatchEvent("self:peer:update",{detail:e}):this.events.safeDispatchEvent("peer:update",{detail:e}))}};function _p(r,t={}){return new gu(r,t)}var Di=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(t="Not Found"){super(t)}};function Tb(r){return r[Symbol.asyncIterator]!=null}function Pb(r){if(Tb(r))return(async()=>{for await(let t of r);})();for(let t of r);}var yu=Pb;function Db(r){let[t,e]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>t.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:t.next(),[e](){return this}}}var Sp=Db;function Lb(r){return r[Symbol.asyncIterator]!=null}function Rb(r,t){let e=0;if(Lb(r))return(async function*(){for await(let c of r)await t(c,e++)&&(yield c)})();let n=Sp(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=t(o,e++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await t(c,e++)&&(yield c)})();let a=t;return(function*(){i===!0&&(yield o);for(let c of n)a(c,e++)&&(yield c)})()}var Lr=Rb;function Ob(r){return r[Symbol.asyncIterator]!=null}function kb(r,t){return Ob(r)?(async function*(){yield*(await ko(r)).sort(t)})():(function*(){yield*ko(r).sort(t)})()}var bu=kb;function Mb(r){return r[Symbol.asyncIterator]!=null}function Nb(r,t){return Mb(r)?(async function*(){let e=0;if(!(t<1)){for await(let n of r)if(yield n,e++,e===t)return}})():(function*(){let e=0;if(!(t<1)){for(let n of r)if(yield n,e++,e===t)return}})()}var wu=Nb;var Li=class{put(t,e,n){return Promise.reject(new Error(".put is not implemented"))}get(t,e){return Promise.reject(new Error(".get is not implemented"))}has(t,e){return Promise.reject(new Error(".has is not implemented"))}delete(t,e){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(t,e={}){for await(let{key:n,value:o}of t)await this.put(n,o,e),yield n}async*getMany(t,e={}){for await(let n of t)yield{key:n,value:await this.get(n,e)}}async*deleteMany(t,e={}){for await(let n of t)await this.delete(n,e),yield n}batch(){let t=[],e=[];return{put(n,o){t.push({key:n,value:o})},delete(n){e.push(n)},commit:async n=>{await yu(this.putMany(t,n)),t=[],await yu(this.deleteMany(e,n)),e=[]}}}async*_all(t,e){throw new Error("._all is not implemented")}async*_allKeys(t,e){throw new Error("._allKeys is not implemented")}query(t,e){let n=this._all(t,e);if(t.prefix!=null){let o=t.prefix;n=Lr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>Lr(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>bu(o,s),n)),t.offset!=null){let o=0,s=t.offset;n=Lr(n,()=>o++>=s)}return t.limit!=null&&(n=wu(n,t.limit)),n}queryKeys(t,e){let n=this._allKeys(t,e);if(t.prefix!=null){let o=t.prefix;n=Lr(n,s=>s.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>Lr(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>bu(o,s),n)),t.offset!=null){let o=t.offset,s=0;n=Lr(n,()=>s++>=o)}return t.limit!=null&&(n=wu(n,t.limit)),n}};var Ri=class extends Li{data;constructor(){super(),this.data=new Map}put(t,e,n){return n?.signal?.throwIfAborted(),this.data.set(t.toString(),e),t}get(t,e){e?.signal?.throwIfAborted();let n=this.data.get(t.toString());if(n==null)throw new Di;return n}has(t,e){return e?.signal?.throwIfAborted(),this.data.has(t.toString())}delete(t,e){e?.signal?.throwIfAborted(),this.data.delete(t.toString())}*_all(t,e){e?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Dr(n),value:o},e?.signal?.throwIfAborted()}*_allKeys(t,e){e?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Dr(n),e?.signal?.throwIfAborted()}};function Uo(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var Cp=ts(Ap(),1),Bb=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],Ub=Bb.map(r=>new Cp.Netmask(r));function xu(r){for(let t of Ub)if(t.contains(r))return!0;return!1}function Fb(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Kb(r){let t=r.split(":");if(t.length<2)return!1;let e=t[t.length-1].padStart(4,"0"),n=t[t.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(e.substring(0,2),16)}.${parseInt(e.substring(2),16)}`;return xu(o)}function qb(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Vb(r){let t=r.split(":"),e=t[t.length-1];return xu(e)}function zb(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function rr(r){if(le(r))return xu(r);if(Fb(r))return Kb(r);if(qb(r))return Vb(r);if(Ws(r))return zb(r)}var rt=r=>({match:t=>{let e=t[0];return e==null||e.code!==r||e.value!=null?!1:t.slice(1)}}),N=(r,t)=>({match:e=>{let n=e[0];return n?.code!==r||n.value==null||t!=null&&n.value!==t?!1:e.slice(1)}}),$=r=>({match:t=>{let e=r.match(t);return e===!1?t:e}}),It=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1}}),X=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t}});function tt(...r){function t(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matchers:r,matches:e,exactMatch:n}}var $b=N(421),Ip=tt($b),ki=N(54),Mi=N(55),Ni=N(56),vu=N(53),mT=tt(ki,$(N(421))),gT=tt(Mi,$(N(421))),yT=tt(Ni,$(N(421))),bT=tt(It(vu,Ni,ki,Mi),$(N(421))),Tp=X(N(4),$(N(43))),Pp=X($(N(42)),N(41),$(N(43))),_u=It(Tp,Pp),Rr=It(_u,vu,ki,Mi,Ni),wT=tt(It(_u,X(It(vu,Ni,ki,Mi),$(N(421))))),Su=tt(Tp),Au=tt(Pp),xT=tt(_u),Cu=X(Rr,N(6)),Ko=X(Rr,N(273)),qo=tt(X(Cu,$(N(421)))),ET=tt(Ko),Iu=X(Ko,rt(460),$(N(421))),Bi=X(Ko,rt(461),$(N(421))),Hb=It(Iu,Bi),vT=tt(Iu),Dp=tt(Bi),Eu=It(Rr,Cu,Ko,Iu,Bi),Lp=It(X(Eu,rt(477),$(N(421)))),Or=tt(Lp),Rp=It(X(Eu,rt(478),$(N(421))),X(Eu,rt(448),$(N(449)),rt(477),$(N(421)))),Vo=tt(Rp),Op=X(Ko,rt(280),$(N(466)),$(N(466)),$(N(421))),Tu=tt(Op),kp=X(Bi,rt(465),$(N(466)),$(N(466)),$(N(421))),Pu=tt(kp),Oi=It(Lp,Rp,X(Cu,$(N(421))),X(Hb,$(N(421))),X(Rr,$(N(421))),Op,kp,N(421)),_T=tt(Oi),Wb=X(Oi,rt(290),N(421)),zo=tt(Wb),Gb=It(X(Oi,rt(290),rt(281),$(N(421))),X(Oi,rt(281),$(N(421))),X(rt(281),$(N(421)))),Du=tt(Gb),jb=It(X(Rr,N(6),rt(480),$(N(421))),X(Rr,rt(480),$(N(421)))),ST=tt(jb),Xb=X(Rr,It(X(N(6,"443"),rt(480)),X(N(6),rt(443)),X(N(6),rt(448),rt(480)),X(rt(448),rt(480)),rt(448),rt(443)),$(N(421))),AT=tt(Xb),Zb=It(X(N(777),$(N(421)))),CT=tt(Zb),Yb=It(X(N(400),$(N(421)))),IT=tt(Yb);var Lu=class extends Map{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Tt(r){let{name:t,metrics:e}=r,n;return e!=null?n=new Lu({name:t,metrics:e}):n=new Map,n}var Mp=864e13;var Qb=448,Ru=449,Jb=53,tw=54,ew=55,rw=56,Ui=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Tt({name:"libp2p_address_manager_dns_mappings",metrics:t.metrics})}has(t){let e=this.findHost(t);for(let n of this.mappings.values())if(n.domain===e)return!0;return!1}add(t,e){e.forEach(n=>{this.log("add DNS mapping %s to %s",n,t);let o=rr(n)===!0;this.mappings.set(n,{domain:t,verified:o,expires:o?Mp-Date.now():0,lastVerified:o?Mp-Date.now():void 0})})}remove(t){let e=this.findHost(t),n=!1;for(let[o,s]of this.mappings.entries())s.domain===e&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(t){let e=[];for(let n=0;n<t.length;n++){let s=t[n].multiaddr.stringTuples(),i=s[0][1];if(i!=null)for(let[a,c]of this.mappings.entries()){if(i!==a)continue;this.maybeAddSNITuple(s,c.domain)&&(t.splice(n,1),n--,e.push({multiaddr:z(`/${s.map(u=>[Ys(u[0]).name,u[1]].join("/")).join("/")}`),verified:c.verified,type:"dns-mapping",expires:c.expires,lastVerified:c.lastVerified}))}}return e}maybeAddSNITuple(t,e){for(let n=0;n<t.length;n++)if(t[n][0]===Qb&&t[n+1]?.[0]!==Ru)return t.splice(n+1,0,[Ru,e]),!0;return!1}confirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("marking %s to %s DNS mapping as verified",s,i.domain),o=i.verified,i.verified=!0,i.expires=Date.now()+e,i.lastVerified=Date.now());return o}unconfirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("removing verification of %s to %s DNS mapping",s,i.domain),o=o||i.verified,i.verified=!1,i.expires=Date.now()+e);return o}findHost(t){for(let e of t.stringTuples())if(e[0]===Ru||e[0]===Jb||e[0]===tw||e[0]===ew||e[0]===rw)return e[1]}};var Ou=4,ku=41,Mu=6,nw=273,Fi=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Tt({name:"libp2p_address_manager_ip_mappings",metrics:t.metrics})}has(t){let e=t.stringTuples();for(let n of this.mappings.values())for(let o of n)if(o.externalIp===e[0][1])return!0;return!1}add(t,e,n,o=e,s="tcp"){let i=`${t}-${e}-${s}`,a=this.mappings.get(i)??[],c={internalIp:t,internalPort:e,externalIp:n,externalPort:o,externalFamily:le(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(t){let e=t.stringTuples(),n=e[0][1]??"",o=e[1][0]===Mu?"tcp":"udp",s=parseInt(e[1][1]??"0"),i=!1;for(let[a,c]of this.mappings.entries()){for(let l=0;l<c.length;l++){let u=c[l];u.externalIp===n&&u.externalPort===s&&u.protocol===o&&(this.log("removing %s:%s to %s:%s %s IP mapping",u.externalIp,u.externalPort,n,s,o),i=i||u.verified,c.splice(l,1),l--)}c.length===0&&this.mappings.delete(a)}return i}getAll(t){let e=[];for(let{multiaddr:n}of t){let o=n.stringTuples(),s;if((o[0][0]===Ou||o[0][0]===ku)&&o[1][0]===Mu?s=`${o[0][1]}-${o[1][1]}-tcp`:(o[0][0]===Ou||o[0][0]===ku)&&o[1][0]===nw&&(s=`${o[0][1]}-${o[1][1]}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)o[0][0]=a.externalFamily===4?Ou:ku,o[0][1]=a.externalIp,o[1][1]=`${a.externalPort}`,e.push({multiaddr:z(`/${o.map(c=>[Ys(c[0]).name,c[1]].join("/")).join("/")}`),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return e}confirm(t,e){let o=t.stringTuples()[0][1],s=!1;for(let i of this.mappings.values())for(let a of i)a.externalIp===o&&(this.log("marking %s to %s IP mapping as verified",a.internalIp,a.externalIp),s=a.verified,a.verified=!0,a.expires=Date.now()+e,a.lastVerified=Date.now());return s}unconfirm(t,e){let n=t.stringTuples(),o=n[0][1]??"",s=n[1][0]===Mu?"tcp":"udp",i=parseInt(n[1][1]??"0"),a=!1;for(let c of this.mappings.values())for(let l=0;l<c.length;l++){let u=c[l];u.externalIp===o&&u.externalPort===i&&u.protocol===s&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",u.externalIp,u.externalPort,o,i,s),a=a||u.verified,u.verified=!1,u.expires=Date.now()+e)}return a}};function Np(r){try{for(let{code:t,value:e}of r.getComponents())if(t!==42&&e!=null){if(t===4)return e.startsWith("169.254.");if(t===41)return e.toLowerCase().startsWith("fe80")}}catch{}return!1}function Ki(r){try{for(let{code:t}of r.getComponents())if(t!==42)return t===4||t===41}catch{}return!1}function kr(r){try{if(!Ki(r))return!1;let[[,t]]=r.stringTuples();return t==null?!1:rr(t)??!1}catch{}return!0}var ow={maxObservedAddresses:10},qi=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Tt({name:"libp2p_address_manager_observed_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??ow.maxObservedAddresses}has(t){return this.addresses.has(t.toString())}removePrefixed(t){for(let e of this.addresses.keys())e.toString().startsWith(t)&&this.addresses.delete(e)}add(t){this.addresses.size!==this.maxObservedAddresses&&(kr(t)||Np(t)||(this.log("adding observed address %a",t),this.addresses.set(t.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([t,e])=>({multiaddr:z(t),verified:e.verified,type:"observed",expires:e.expires,lastVerified:e.lastVerified}))}remove(t){let e=this.addresses.get(t.toString())?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(t.toString()),e}confirm(t,e){let n=t.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+e,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var sw=[4,41,53,54,55,56];function Nu(r){try{for(let{code:t}of r.getComponents())if(t!==42)return sw.includes(t)}catch{}return!1}var iw={maxObservedAddresses:10},Vi=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Tt({name:"libp2p_address_manager_transport_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??iw.maxObservedAddresses}get(t,e){if(kr(t))return{multiaddr:t,verified:!0,type:"transport",expires:Date.now()+e,lastVerified:Date.now()};let n=this.toKey(t),o=this.addresses.get(n);return o==null&&(o={verified:!Nu(t),expires:0},this.addresses.set(n,o)),{multiaddr:t,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(t){let e=this.toKey(t);return this.addresses.has(e)}remove(t){let e=this.toKey(t),n=this.addresses.get(e)?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(e),n}confirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+e,this.addresses.set(n,o),s}toKey(t){if(Nu(t)){let e=t.toOptions();return`${e.host}-${e.port}-${e.transport}`}return t.toString()}};var Bp=6e4,Up={maxObservedAddresses:10,addressVerificationTTL:Bp*10,addressVerificationRetry:Bp*5},aw=r=>r;function Bu(r,t){let e=r.getPeerId();return e!=null&&ge(e).equals(t)&&(r=r.decapsulate(z(`/p2p/${t.toString()}`))),r}var zi=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(t,e={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=e;this.components=t,this.log=t.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new qi(t,e),this.dnsMappings=new Ui(t,e),this.ipMappings=new Fi(t,e),this.transportAddresses=new Vi(t,e),this.announceFilter=e.announceFilter??aw,this.observedAddressFilter=Lo(1024),this.addressVerificationTTL=e.addressVerificationTTL??Up.addressVerificationTTL,this.addressVerificationRetry=e.addressVerificationRetry??Up.addressVerificationRetry,this._updatePeerStoreAddresses=Uo(this._updatePeerStoreAddresses.bind(this),1e3),t.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),t.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let t=this.getAddresses().map(e=>e.getPeerId()===this.components.peerId.toString()?e.decapsulate(`/p2p/${this.components.peerId.toString()}`):e);this.components.peerStore.patch(this.components.peerId,{multiaddrs:t}).catch(e=>{this.log.error("error updating addresses",e)})}getListenAddrs(){return Array.from(this.listen).map(t=>z(t))}getAnnounceAddrs(){return Array.from(this.announce).map(t=>z(t))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(t=>z(t))}getObservedAddrs(){return this.observed.getAll().map(t=>t.multiaddr)}addObservedAddr(t){let e=t.stringTuples(),n=`${e[0][1]}:${e[1][1]}`;this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),t=Bu(t,this.components.peerId),!this.ipMappings.has(t)&&(this.dnsMappings.has(t)||this.observed.add(t)))}confirmObservedAddr(t,e){t=Bu(t,this.components.peerId);let n=!0;(e?.type==="transport"||this.transportAddresses.has(t))&&!this.transportAddresses.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="dns-mapping"||this.dnsMappings.has(t))&&!this.dnsMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="ip-mapping"||this.ipMappings.has(t))&&!this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="observed"||this.observed.has(t))&&(this.maybeUpgradeToIPMapping(t)?(this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(t,e){t=Bu(t,this.components.peerId);let n=!1;this.observed.has(t)&&!this.observed.remove(t)&&n&&(n=!1),this.transportAddresses.has(t)&&!this.transportAddresses.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(t)&&!this.dnsMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(t)&&!this.ipMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let t=new Set,e=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return t.has(o)?!1:(t.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(e.map(n=>{let o=z(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let t=this.getAnnounceAddrs();if(t.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(t)}),t.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let e=[];e=e.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),e=e.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),e=e.concat(this.observed.getAll()),e=e.concat(this.ipMappings.getAll(e)),e=e.concat(this.dnsMappings.getAll(e)),e}addDNSMapping(t,e){this.dnsMappings.add(t,e)}removeDNSMapping(t){this.dnsMappings.remove(z(`/dns/${t}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.add(t,e,n,o,s),this.observed.removePrefixed(`/ip${le(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.remove(z(`/ip${le(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(t){if(this.ipMappings.has(t))return!1;let e=t.toOptions();if(e.family===6||e.host==="127.0.0.1"||rr(e.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>Or.exactMatch(s)||Vo.exactMatch(s),s=>qo.exactMatch(s),s=>Dp.exactMatch(s)];for(let s of o){if(!s(t))continue;let i=n.filter(l=>l.getAddrs().filter(u=>u.toOptions().family===4&&s(u)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>l.toOptions().host!=="127.0.0.1").pop();if(a==null)continue;let c=a.toOptions();return this.observed.remove(t),this.ipMappings.add(c.host,c.port,e.host,e.port,e.transport),!0}return!1}};var Fp;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(Fp||(Fp={}));var $i=class extends Error{constructor(t="Missing service"){super(t),this.name="MissingServiceError"}},Hi=class extends Error{constructor(t="Unmet service dependencies"){super(t),this.name="UnmetServiceDependenciesError"}},Dn=class extends Error{constructor(t="No content routers available"){super(t),this.name="NoContentRoutersError"}},$o=class extends Error{constructor(t="No peer routers available"){super(t),this.name="NoPeerRoutersError"}},Wi=class extends Error{constructor(t="Should not try to find self"){super(t),this.name="QueriedForSelfError"}},Gi=class extends Error{constructor(t="Unhandled protocol error"){super(t),this.name="UnhandledProtocolError"}},ji=class extends Error{constructor(t="Duplicate protocol handler error"){super(t),this.name="DuplicateProtocolHandlerError"}},Ho=class extends Error{constructor(t="Dial denied error"){super(t),this.name="DialDeniedError"}},Xi=class extends Error{constructor(t="No transport was configured to listen on this address"){super(t),this.name="UnsupportedListenAddressError"}},Zi=class extends Error{constructor(t="Configured listen addresses could not be listened on"){super(t),this.name="UnsupportedListenAddressesError"}},Yi=class extends Error{constructor(t="No valid addresses"){super(t),this.name="NoValidAddressesError"}},Qi=class extends Error{constructor(t="Connection intercepted"){super(t),this.name="ConnectionInterceptedError"}},Ji=class extends Error{constructor(t="Connection denied"){super(t),this.name="ConnectionDeniedError"}},Mr=class extends Error{constructor(t="Stream is not multiplexed"){super(t),this.name="MuxerUnavailableError"}},Nr=class extends Error{constructor(t="Encryption failed"){super(t),this.name="EncryptionFailedError"}},ta=class extends Error{constructor(t="Transport unavailable"){super(t),this.name="TransportUnavailableError"}},ea=class extends Error{constructor(t="Max recursive depth reached"){super(t),this.name="RecursionLimitError"}};var Uu=class{components={};_started=!1;constructor(t={}){this.components={};for(let[e,n]of Object.entries(t))this.components[e]=n;this.components.logger==null&&(this.components.logger=ei())}isStarted(){return this._started}async _invokeStartableMethod(t){await Promise.all(Object.values(this.components).filter(e=>ls(e)).map(async e=>{await e[t]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},lw=["metrics","connectionProtector","dns"],uw=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function Kp(r={}){let t=new Uu(r);return new Proxy(t,{get(n,o,s){if(typeof o=="string"&&!uw.includes(o)){let i=t.components[o];if(i==null&&!lw.includes(o))throw new $i(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?t.components[o]=s:Reflect.set(n,o,s),!0}})}function qp(r){let t={};for(let e of Object.values(r.components))for(let n of fw(e))t[n]=!0;for(let e of Object.values(r.components))for(let n of dw(e))if(t[n]!==!0)throw new Hi(`Service "${hw(e)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function fw(r){return Array.isArray(r?.[Fn])?r[Fn]:[]}function dw(r){return Array.isArray(r?.[Va])?r[Va]:[]}function hw(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}var pw=4,mw=41;function Vp(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async t=>{if(Or.matches(t))return!1;let e=t.stringTuples();return e[0][0]===pw||e[0][0]===mw?!!rr(`${e[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}var zp=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},gw=new WeakMap;function yw({clearTimeout:r,setTimeout:t}={}){return(e,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(zp());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(zp())},u=()=>{o&&o.removeEventListener("abort",l)},f=new Promise((d,h)=>{i=()=>{u(),d(n)},a=h,s=(t??setTimeout)(i,e)});return o&&o.addEventListener("abort",l,{once:!0}),gw.set(f,()=>{c(s),s=null,i()}),f}}var bw=yw(),$p=bw;var ra=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(t="Rate limit exceeded",e){super(t),this.name="RateLimitError",this.remainingPoints=e.remainingPoints,this.msBeforeNext=e.msBeforeNext,this.consumedPoints=e.consumedPoints,this.isFirstInDuration=e.isFirstInDuration}},na=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var oa=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(t={}){this.points=t.points??4,this.duration=t.duration??1,this.blockDuration=t.blockDuration??0,this.execEvenly=t.execEvenly??!1,this.execEvenlyMinDelayMs=t.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=t.keyPrefix??"rlflx",this.memoryStorage=new Fu}async consume(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+e&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new ra("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await $p(a)}return i}penalty(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(t,e){let n=e*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(t),o,e),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(t,e,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(t),e,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:e,isFirstInDuration:!1}}get(t){let e=this.memoryStorage.get(this.getKey(t));return e!=null&&(e.remainingPoints=Math.max(this.points-e.consumedPoints,0)),e}delete(t){this.memoryStorage.delete(this.getKey(t))}_getKeySecDuration(t){return t?.customDuration!=null&&t.customDuration>=0?t.customDuration:this.duration}getKey(t){return this.keyPrefix.length>0?`${this.keyPrefix}:${t}`:t}parseKey(t){return t.substring(this.keyPrefix.length)}},Fu=class{storage;constructor(){this.storage=new Map}incrby(t,e,n){let o=this.storage.get(t);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=e,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(t,e,n)}return this.set(t,e,n)}set(t,e,n){let o=n*1e3,s=this.storage.get(t);s!=null&&clearTimeout(s.timeoutId);let i={value:e,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(t,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(t)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(t){let e=this.storage.get(t);if(e!=null)return{remainingPoints:0,msBeforeNext:e.expiresAt!=null?e.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:e.value,isFirstInDuration:!1}}delete(t){let e=this.storage.get(t);return e!=null?(e.timeoutId!=null&&clearTimeout(e.timeoutId),this.storage.delete(t),!0):!1}};function sa(r){if(Ke(r))return{peerId:r,multiaddrs:[]};let t=Array.isArray(r)?r:[r],e;if(t.length>0){let n=t[0].getPeerId();e=n==null?void 0:ge(n),t.forEach(o=>{if(!er(o))throw new qe("Invalid multiaddr");let s=o.getPeerId();if(s==null){if(e!=null)throw new k("Multiaddrs must all have the same peer id or have no peer id")}else{let i=ge(s);if(e?.equals(i)!==!0)throw new k("Multiaddrs must all have the same peer id or have no peer id")}})}return t=t.filter(n=>!Ip.exactMatch(n)),{peerId:e,multiaddrs:t}}var ww=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Hp(r,t){let e=r?.streams?.map(o=>o.protocol)??[],n=t?.closableProtocols??ww;if(!(e.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(t)}catch(o){r?.abort(o)}}function Wo(r){try{let t;typeof r=="string"?t=z(r):t=r;let e=new Set([...t.getComponents().map(n=>n.name)]);if(!e.has("ipcidr")){let o=e.has("ip6")?"/ipcidr/128":"/ipcidr/32";t=t.encapsulate(o)}return Jl(t)}catch{throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${r}`)}}var ia=class{connectionManager;peerStore;allow;events;log;constructor(t,e={}){this.allow=(e.allow??[]).map(n=>Wo(n)),this.connectionManager=t.connectionManager,this.peerStore=t.peerStore,this.events=t.events,this.log=t.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(t=>{this.log.error("error while pruning connections %e",t)})}async _maybePruneConnections(){let t=this.connectionManager.getConnections(),e=t.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",e,n),e<=n)return;let o=new te;for(let c of t){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let u=await this.peerStore.get(l);o.set(l,[...u.tags.values()].reduce((f,d)=>f+d.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags",u)}}}let s=this.sortConnections(t,o),i=Math.max(e-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(u=>u.contains(c.remoteAddr.nodeAddress().address))||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await Hp(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(t,e){return t.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=e.get(n.remotePeer)??0,i=e.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Wp="last-dial-failure",Gp="last-dial-success";var jp=100,aa=50;var ca=class{deferred;signal;constructor(t){this.signal=t,this.deferred=ut(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new re)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function xw(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var la=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=xw(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new re),this.cleanup())}async join(t={}){let e=new ca(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await xt(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};var Ln=class extends Vt{concurrency;maxSize;queue;pending;sort;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,t.metricName!=null&&t.metrics?.registerMetricGroup(t.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=t.sort,this.queue=[],this.emitEmpty=Uo(this.emitEmpty.bind(this),1),this.emitIdle=Uo(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new na;let n=new la(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(e).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(t=>{t.abort(new re)}),this.clear()}async onEmpty(t){this.size!==0&&await be(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await be(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await be(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=ii({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new re("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var ua=class extends Ln{constructor(t={}){super({...t,sort:(e,n)=>e.options.priority>n.options.priority?-1:e.options.priority<n.options.priority?1:0})}};function Fe(r){let t=new globalThis.AbortController;function e(){t.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}for(let s of r){if(s?.aborted===!0){e();break}s?.addEventListener!=null&&s.addEventListener("abort",e)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}let o=t.signal;return o.clear=n,o}function Xp(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function Ku(r){if(!Ki(r))return!1;let{address:t}=r.nodeAddress();return Xp(t)}function Ew(r,t){let e=qo.exactMatch(r.multiaddr),n=qo.exactMatch(t.multiaddr);if(e&&!n)return-1;if(!e&&n)return 1;let o=Vo.exactMatch(r.multiaddr),s=Vo.exactMatch(t.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=Or.exactMatch(r.multiaddr),a=Or.exactMatch(t.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=Du.exactMatch(r.multiaddr),l=Du.exactMatch(t.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let u=Tu.exactMatch(r.multiaddr),f=Tu.exactMatch(t.multiaddr);if(u&&!f)return-1;if(!u&&f)return 1;let d=Pu.exactMatch(r.multiaddr),h=Pu.exactMatch(t.multiaddr);return d&&!h?-1:!d&&h?1:0}function vw(r,t){let e=Ku(r.multiaddr),n=Ku(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function _w(r,t){let e=kr(r.multiaddr),n=kr(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function Sw(r,t){return r.isCertified&&!t.isCertified?-1:!r.isCertified&&t.isCertified?1:0}function Aw(r,t){let e=zo.exactMatch(r.multiaddr),n=zo.exactMatch(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function Zp(r){return r.sort(Ew).sort(Sw).sort(Aw).sort(_w).sort(vw)}async function qu(r,t,e){let n=e.depth??0;if(n>(e.maxRecursiveDepth??32))throw new ea("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(t))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,e);for(let c of a)s.push(...await qu(c,t,{...e,depth:n+1}))}return o===!1&&s.push(r),s}var Go={maxParallelDials:aa,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:Ne}},fa=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(t,e={}){this.addressSorter=e.addressSorter,this.maxPeerAddrsToDial=e.maxPeerAddrsToDial??Go.maxPeerAddrsToDial,this.maxDialQueueLength=e.maxDialQueueLength??Go.maxDialQueueLength,this.dialTimeout=e.dialTimeout??Go.dialTimeout,this.connections=e.connections??new te,this.log=t.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=t,this.resolvers=e.resolvers??Go.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new ua({concurrency:e.maxParallelDials??Go.maxParallelDials,metricName:"libp2p_dial_queue",metrics:t.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==re.name&&this.log.error("error in dial queue - %e",n.detail)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(t,e={}){let{peerId:n,multiaddrs:o}=sa(t),s=Array.from(this.connections.values()).flat().find(a=>e.force===!0||a.limits!=null?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s?.status==="open")return this.log("already connected to %a",s.remoteAddr),e.onProgress?.(new dt("dial-queue:already-connected")),s;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let l of o)if(c.has(l.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of o)i.options.multiaddrs.add(a.toString());return e.onProgress?.(new dt("dial-queue:already-in-dial-queue")),i.join(e)}if(this.queue.size>=this.maxDialQueueLength)throw new $r("Dial queue is full");return this.log("creating dial target for %p",n,o.map(a=>a.toString())),e.onProgress?.(new dt("dial-queue:add-to-dial-queue")),this.queue.add(async a=>{a.onProgress?.(new dt("dial-queue:start-dial"));let c=Fe([this.shutDownController.signal,a.signal]);try{return await this.dialPeer(a,c)}finally{c.clear()}},{peerId:n,priority:e.priority??Hu,multiaddrs:new Set(o.map(a=>a.toString())),signal:e.signal??AbortSignal.timeout(this.dialTimeout),onProgress:e.onProgress})}async dialPeer(t,e){let n=t.peerId,o=t.multiaddrs,s=new Set,i=t.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let u=[],f=new Set(t.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...f]);let d=await this.calculateMultiaddrs(n,f,{...t,signal:e});for(let h of d){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}u.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,u.map(h=>h.multiaddr.toString())),t?.onProgress?.(new dt("dial-queue:calculated-addresses",u));for(let h of u){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,t.peerId),new $r("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...t,signal:e});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[Gp]:C(Date.now().toString())}})}catch(m){this.log.error("could not update last dial failure key for %p",n,m)}return p}catch(p){if(this.log.error("dial failed to %a",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[Wp]:C(Date.now().toString())}})}catch(m){this.log.error("could not update last dial failure key for %p",n,m)}if(e.aborted)throw new is(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(t,e=new Set,n={}){let o=[...e].map(f=>({multiaddr:z(f),isCertified:!1}));if(t!=null){if(this.components.peerId.equals(t))throw new $r("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(t)===!0)throw new Ho("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",t);try{let f=await this.components.peerStore.get(t);o.push(...f.addresses),this.log("loaded multiaddrs for %p",t,o.map(({multiaddr:d})=>d.toString()))}catch(f){if(f.name!=="NotFoundError")throw f}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",t);try{let f=await this.components.peerRouting.findPeer(t,n);this.log("found multiaddrs for %p in the peer routing",t,o.map(({multiaddr:d})=>d.toString())),o.push(...f.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(f){f.name==="NoPeerRoutersError"?this.log("no peer routers configured",t):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",t,f)}}}let s=(await Promise.all(o.map(async f=>{let d=await qu(f.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return d.length===1&&d[0].equals(f.multiaddr)?f:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(t!=null){let f=`/p2p/${t.toString()}`;s=s.map(d=>d.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:d.multiaddr.encapsulate(f),isCertified:d.isCertified}:d)}let i=s.filter(f=>{if(this.components.transportManager.dialTransportForMultiaddr(f.multiaddr)==null)return!1;let d=f.multiaddr.getPeerId();return t!=null&&d!=null?t.equals(d):!0}),a=new Map;for(let f of i){let d=f.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||f.isCertified||!1;continue}a.set(d,f)}let c=[...a.values()];if(c.length===0)throw new Yi("The dial request has no valid addresses");let l=[];for(let f of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(f.multiaddr)||l.push(f);let u=this.addressSorter==null?Zp(l):l.sort(this.addressSorter);if(u.length===0)throw new Ho("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",t??"unknown peer",s.map(({multiaddr:f})=>f.toString())),this.log.trace("addresses for %p after filtering",t??"unknown peer",u.map(({multiaddr:f})=>f.toString())),u}async isDialable(t,e={}){Array.isArray(t)||(t=[t]);try{let n=await this.calculateMultiaddrs(void 0,new Set(t.map(o=>o.toString())),e);return e.runOnLimitedConnection===!1?n.find(o=>!zo.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var da=class extends Ln{has(t){return this.find(t)!=null}find(t){return this.queue.find(e=>t.equals(e.options.peerId))}};var nm=ts(em(),1);var Iw=Object.prototype.toString,Tw=r=>Iw.call(r)==="[object Error]",Pw=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function Wu(r){return r&&Tw(r)&&r.name==="TypeError"&&typeof r.message=="string"?r.message==="Load failed"?r.stack===void 0:Pw.has(r.message):!1}var Gu=class extends Error{constructor(t){super(),t instanceof Error?(this.originalError=t,{message:t}=t):(this.originalError=new Error(t),this.originalError.stack=this.stack),this.name="AbortError",this.message=t}},rm=(r,t,e)=>{let n=e.retries-(t-1);return r.attemptNumber=t,r.retriesLeft=n,r};async function ju(r,t){return new Promise((e,n)=>{t={...t},t.onFailedAttempt??=()=>{},t.shouldRetry??=()=>!0,t.retries??=10;let o=nm.default.operation(t),s=()=>{o.stop(),n(t.signal?.reason)};t.signal&&!t.signal.aborted&&t.signal.addEventListener("abort",s,{once:!0});let i=()=>{t.signal?.removeEventListener("abort",s),o.stop()};o.attempt(async a=>{try{let c=await r(a);i(),e(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof Gu)throw c.originalError;if(c instanceof TypeError&&!Wu(c))throw c;if(rm(c,a,t),await t.shouldRetry(c)||(o.stop(),n(c)),await t.onFailedAttempt(c),!o.retry(c))throw o.mainError()}catch(l){rm(l,a,t),i(),n(l)}}})})}var ha=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=t.peerStore,this.connectionManager=t.connectionManager,this.queue=new da({concurrency:e.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:t.metrics}),this.started=!1,this.retries=e.retries??5,this.backoffFactor=e.backoffFactor,this.retryInterval=e.retryInterval,this.events=t.events,t.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(t){if(!this.started)return;let e=await this.peerStore.get(t);om(e)&&(this.queue.has(t)||this.queue.add(async n=>{await ju(async o=>{if(this.started)try{await this.connectionManager.openConnection(t,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",t,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:t}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",t,n);let o={};[...e.tags.keys()].forEach(s=>{s.startsWith(qa)&&(o[s]=void 0)}),await this.peerStore.merge(t,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:t})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",t,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let t=await this.peerStore.all({filters:[e=>om(e)]});await Promise.all(t.map(async e=>{await this.connectionManager.openConnection(e.id).catch(n=>{this.log.error(n)})}))}).catch(t=>{this.log.error(t)})}stop(){this.started=!1,this.queue.abort()}};function om(r){for(let t of r.tags.keys())if(t.startsWith(qa))return!0;return!1}var Hu=50,Xu={maxConnections:jp,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},pa=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(t,e={}){if(this.maxConnections=e.maxConnections??Xu.maxConnections,this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");this.connections=new te,this.started=!1,this.peerId=t.peerId,this.peerStore=t.peerStore,this.metrics=t.metrics,this.events=t.events,this.log=t.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(e.allow??[]).map(n=>Wo(n)),this.deny=(e.deny??[]).map(n=>Wo(n)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=e.maxIncomingPendingConnections??Xu.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new oa({points:e.inboundConnectionThreshold??Xu.inboundConnectionThreshold,duration:1}),this.connectionPruner=new ia({connectionManager:this,peerStore:t.peerStore,events:t.events,logger:t.logger},{allow:e.allow?.map(n=>z(n))}),this.dialQueue=new fa(t,{addressSorter:e.addressSorter,maxParallelDials:e.maxParallelDials??aa,maxDialQueueLength:e.maxDialQueueLength??500,maxPeerAddrsToDial:e.maxPeerAddrsToDial??25,dialTimeout:e.dialTimeout??1e4,resolvers:e.resolvers??{dnsaddr:Ne},connections:this.connections}),this.reconnectQueue=new ha({events:t.events,peerStore:t.peerStore,logger:t.logger,connectionManager:this},{retries:e.reconnectRetries,retryInterval:e.reconnectRetryInterval,backoffFactor:e.reconnectBackoffFactor,maxParallelReconnects:e.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let t={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let e of this.connections.values())for(let n of e)t[n.direction]++;return t}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let t={};for(let e of this.connections.values())for(let n of e)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;t[s]=(t[s]??0)+1}return t}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let t={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))t[i]=t[i]??[],t[i].push(a)}let e={};for(let[n,o]of Object.entries(t)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);e[n]=o[s]}return e}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await uf(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await ff(this.reconnectQueue,this.dialQueue,this.connectionPruner);let t=[];for(let e of this.connections.values())for(let n of e)t.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",t.length),await Promise.all(t),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(t){if(this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");let e=!1;t<this.maxConnections&&(e=!0),this.maxConnections=t,e&&this.connectionPruner.maybePruneConnections()}onConnect(t){this._onConnect(t).catch(e=>{this.log.error(e)})}async _onConnect(t){let{detail:e}=t;if(!this.started){await e.close();return}if(e.status!=="open")return;let n=e.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(e),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:e.remotePeer})}onDisconnect(t){let{detail:e}=t,n=e.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==e.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:e.remotePeer}))}getConnections(t){if(t!=null)return this.connections.get(t)??[];let e=[];for(let n of this.connections.values())e=e.concat(n);return e}getConnectionsMap(){return this.connections}async openConnection(t,e={}){if(!this.started)throw new we("Not started");this.outboundPendingConnections++;try{e.signal?.throwIfAborted();let{peerId:n}=sa(t);if(this.peerId.equals(n))throw new zr("Can not dial self");if(n!=null&&e.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>c.limits==null);if(a!=null)return this.log("had an existing non-limited connection to %p as %a",n,a.remoteAddr),e.onProgress?.(new dt("dial-queue:already-connected")),a}let o=await this.dialQueue.dial(t,{...e,priority:e.priority??Hu});if(o.status!=="open")throw new Vr("Remote closed connection during opening");let s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)if(a.id===o.id&&(i=!0),e.force!==!0&&a.id!==o.id&&a.remoteAddr.equals(o.remoteAddr))return o.abort(new qe("Duplicate multiaddr connection")),a;return i||s.push(o),o}finally{this.outboundPendingConnections--}}async closeConnections(t,e={}){let n=this.connections.get(t)??[];await Promise.all(n.map(async o=>{try{await o.close(e)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(t){if(this.deny.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.log("connection from %a refused - connection remote address was in deny list",t.remoteAddr),!1;if(this.allow.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",t.remoteAddr),!1;if(t.remoteAddr.isThinWaistAddress()){let o=t.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",t.remoteAddr,o),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",t.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let t={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(e=>({id:e.id,status:t[e.status],peerId:e.options.peerId,multiaddrs:[...e.options.multiaddrs].map(n=>z(n))}))}async isDialable(t,e={}){return this.dialQueue.isDialable(t,e)}};var Rn=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(t){this.timeSpan=t,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(t,e){return 1-Math.exp(-(t-e)/this.timeSpan)}push(t,e=Date.now()){if(this.previousTime!=null){let n=this.alpha(e,this.previousTime),o=t-this.movingAverage,s=n*o;this.movingAverage=n*t+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=t;this.previousTime=e}};var Rw=1.2,Ow=2,kw=5e3,Mw=6e4,Nw=5e3,ma=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(t={}){let e=t.interval??Nw;this.success=new Rn(e),this.failure=new Rn(e),this.next=new Rn(e),this.failureMultiplier=t.failureMultiplier??Ow,this.timeoutMultiplier=t.timeoutMultiplier??Rw,this.minTimeout=t.minTimeout??kw,this.maxTimeout=t.maxTimeout??Mw,t.metricName!=null&&(this.metric=t.metrics?.registerMetricGroup(t.metricName))}getTimeoutSignal(t={}){let e=Math.round(this.next.movingAverage*(t.timeoutFactor??this.timeoutMultiplier));e<this.minTimeout&&(e=this.minTimeout),e>this.maxTimeout&&(e=this.maxTimeout);let n=AbortSignal.timeout(e),o=Fe([t.signal,n]);return o.start=Date.now(),o.timeout=e,o}cleanUp(t){let e=Date.now()-t.start;t.aborted?(this.failure.push(e),this.next.push(e*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:e})):(this.success.push(e),this.next.push(e),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:e}))}};var Zu=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ut(),this.haveNext=ut()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ut(),t}async throw(t){return this.ended=!0,this.error=t,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return this.ended=!0,this.nextResult=t,this.haveNext.resolve(),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ut(),await xt(this.readNext.promise,e?.signal,e)}};function ga(){return new Zu}var ya=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ba(r,t){let e=ga();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new W;return{read:async i=>{if(i?.signal?.throwIfAborted(),i?.bytes==null){let{done:c,value:l}=await xt(n.next(),i?.signal);return c===!0?null:l}for(;o.byteLength<i.bytes;){let{value:c,done:l}=await xt(n.next(),i?.signal);if(l===!0)throw new ya("unexpected end of input");o.append(c)}let a=o.sublist(0,i.bytes);return o.consume(i.bytes),a},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=(async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*i})()}return r}}}var Bw=1e4,Uw="1.0.0",Fw="ping",Kw="ipfs",sm=32,qw=!0,wa=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(t,e={}){this.components=t,this.protocol=`/${e.protocolPrefix??Kw}/${Fw}/${Uw}`,this.log=t.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=e.pingInterval??Bw,this.abortConnectionOnPingFailure=e.abortConnectionOnPingFailure??qw,this.timeout=new ma({...e.pingTimeout??{},metrics:t.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[Fn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(t=>{Promise.resolve().then(async()=>{let e=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await t.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=ba(o);e=Date.now(),await Promise.all([s.write(un(sm),{signal:n}),s.read({bytes:sm,signal:n})]),t.rtt=Date.now()-e,await s.unwrap().close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;t.rtt=(Date.now()-e)/2}}).catch(e=>{this.log.error("error during heartbeat",e),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),t.abort(e)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};function Vw(r){return r[Symbol.asyncIterator]!=null}async function zw(r,t,e){try{await Promise.all(r.map(async n=>{for await(let o of n)await t.push(o,{signal:e}),e.throwIfAborted()})),await t.end(void 0,{signal:e})}catch(n){await t.end(n,{signal:e}).catch(()=>{})}}async function*$w(r){let t=new AbortController,e=ga();zw(r,e,t.signal).catch(()=>{});try{yield*e}finally{t.abort()}}function*Hw(r){for(let t of r)yield*t}function Ww(...r){let t=[];for(let e of r)Vw(e)||t.push(e);return t.length===r.length?Hw(t):$w(r)}var jo=Ww;var xa=class{routers;started;components;constructor(t,e){this.routers=e.routers??[],this.started=!1,this.components=t,this.findProviders=t.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=t.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=t.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=t.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:U(n,"base36")})})??this.put,this.get=t.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:U(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(t,e={}){if(this.routers.length===0)throw new Dn("No content routers available");let n=this,o=new Ar;for await(let s of jo(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(t,e))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(t,e={}){if(this.routers.length===0)throw new Dn("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(t,e)}))}async cancelReprovide(t,e={}){if(this.routers.length===0)throw new Dn("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(t,e)}))}async put(t,e,n){if(!this.isStarted())throw new we;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(t,e,n)}))}async get(t,e){if(!this.isStarted())throw new we;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(t,e)))}};var Ea=globalThis.CustomEvent??Event;async function*Yu(r,t={}){let e=t.concurrency??1/0;e<1&&(e=1/0);let n=t.ordered??!1,o=new EventTarget,s=[],i=ut(),a=ut(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===e&&(i=ut(),await i.promise),u)break;let m={done:!1};s.push(m),p().then(x=>{m.done=!0,m.ok=!0,m.value=x,o.dispatchEvent(new Ea("task-complete"))},x=>{m.done=!0,m.err=x,o.dispatchEvent(new Ea("task-complete"))})}c=!0,o.dispatchEvent(new Ea("task-complete"))}catch(p){l=p,o.dispatchEvent(new Ea("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(p=>p.done)}function*d(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw u=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;f();)for(let p=0;p<s.length;p++)if(s[p].done){let m=s[p];if(s.splice(p,1),p--,m.ok)yield m.value;else throw u=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(f()||(a=ut(),await a.promise),l!=null||(n?yield*d():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var va=class{log;peerId;peerStore;routers;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-routing"),this.peerId=t.peerId,this.peerStore=t.peerStore,this.routers=e.routers??[],this.findPeer=t.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=t.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:U(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(t,e){if(this.routers.length===0)throw new $o("No peer routers available");if(t.toString()===this.peerId.toString())throw new Wi("Should not try to find self");let n=this,o=jo(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(t,e)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),s;throw new sr}async*getClosestPeers(t,e={}){if(this.routers.length===0)throw new $o("No peer routers available");let n=this,o=Lo(1024);for await(let s of Yu((async function*(){let i=jo(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(t,e)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...e,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var _a=class extends Vt{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(t){super(),this.log=t.logger.forComponent("libp2p:random-walk"),this.peerRouting=t.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(t){this.walking||this.startWalk(),this.walkers++;let e=Fe([this.shutdownController.signal,t?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=ut(),yield(await be(this,"walk:peer",e,{errorEvent:"walk:error"})).detail}finally{e.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let t=Fe([this.walkController.signal,this.shutdownController.signal]);let e=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=un(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:t}))t.aborted&&this.log("aborting walk"),t.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await xt(this.needNext.promise,t)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-e),this.walking=!1})}};var Qu=32,Ju=64,Sa=class{log;topologies;handlers;components;constructor(t){this.components=t,this.log=t.logger.forComponent("libp2p:registrar"),this.topologies=new Map,t.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let e={};for(let[n,o]of this.topologies)e[n]=o.size;return e}}),this.handlers=Tt({name:"libp2p_registrar_protocol_handlers",metrics:t.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(t){let e=this.handlers.get(t);if(e==null)throw new Gi(`No handler registered for protocol ${t}`);return e}getTopologies(t){let e=this.topologies.get(t);return e==null?[]:[...e.values()]}async handle(t,e,n){if(this.handlers.has(t)&&n?.force!==!0)throw new ji(`Handler already registered for protocol ${t}`);let o=Bs.bind({ignoreUndefined:!0})({maxInboundStreams:Qu,maxOutboundStreams:Ju},n);this.handlers.set(t,{handler:e,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[t]},n)}async unhandle(t,e){(Array.isArray(t)?t:[t]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},e)}async register(t,e){if(e==null)throw new k("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(t);return o==null&&(o=new Map,this.topologies.set(t,o)),o.set(n,e),n}unregister(t){for(let[e,n]of this.topologies.entries())n.has(t)&&(n.delete(t),n.size===0&&this.topologies.delete(e))}_onDisconnect(t){let e=t.detail,n={signal:AbortSignal.timeout(5e3)};this.components.peerStore.get(e,n).then(o=>{for(let s of o.protocols){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e)!==!1&&(a.filter?.remove(e),a.onDisconnect?.(e))}}).catch(o=>{o.name!=="NotFoundError"&&this.log.error("could not inform topologies of disconnecting peer %p",e,o)})}_onPeerUpdate(t){let{peer:e,previous:n}=t.detail,o=(n?.protocols??[]).filter(s=>!e.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e.id)!==!1&&(a.filter?.remove(e.id),a.onDisconnect?.(e.id))}}_onPeerIdentify(t){let e=t.detail.protocols,n=t.detail.connection,o=t.detail.peerId;for(let s of e){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),a.onConnect?.(o,n))}}};var Aa=class{log;components;transports;listeners;faultTolerance;started;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:transports"),this.components=t,this.started=!1,this.transports=Tt({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Tt({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=e.faultTolerance??or.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(t){let e=t[Symbol.toStringTag];if(e==null)throw new k("Transport must have a valid tag");if(this.transports.has(e))throw new k(`There is already a transport with the tag ${e}`);this.log("adding transport %s",e),this.transports.set(e,t),this.listeners.has(e)||this.listeners.set(e,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let t=this.components.addressManager.getListenAddrs();await this.listen(t)}async stop(){let t=[];for(let[e,n]of this.listeners)for(this.log("closing listeners for %s",e);n.length>0;){let o=n.pop();o!=null&&t.push(o.close())}await Promise.all(t),this.log("all listeners closed");for(let e of this.listeners.keys())this.listeners.set(e,[]);this.started=!1}async dial(t,e){let n=this.dialTransportForMultiaddr(t);if(n==null)throw new ta(`No transport available for address ${String(t)}`);return e?.onProgress?.(new dt("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(t,{...e,upgrader:this.components.upgrader})}getAddrs(){let t=[];for(let e of this.listeners.values())for(let n of e)t=[...t,...n.getAddrs()];return t}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(t){for(let e of this.transports.values())if(e.dialFilter([t]).length>0)return e}listenTransportForMultiaddr(t){for(let e of this.transports.values())if(e.listenFilter([t]).length>0)return e}async listen(t){if(!this.isStarted())throw new we("Not started");if(t==null||t.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let e={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};t.forEach(s=>{e.errors.set(s.toString(),new Xi)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(t);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(s)??[];u==null&&(u=[],this.listeners.set(s,u)),u.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let f=u.findIndex(d=>d===l);u.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),Su.matches(c)?e.ipv4.attempts++:Au.matches(c)&&e.ipv6.attempts++,n.push(l.listen(c).then(()=>{e.errors.delete(c.toString()),Su.matches(c)&&e.ipv4.success++,Au.matches(c)&&e.ipv6.success++},f=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,f),e.errors.set(c.toString(),f),f}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(e)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===or.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Zi(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
3
|
-
${[...e.errors.entries()].map(([s,i])=>`
|
|
4
|
-
|
|
2
|
+
"use strict";var Libp2P=(()=>{var jp=Object.create;var zo=Object.defineProperty;var Xp=Object.getOwnPropertyDescriptor;var Yp=Object.getOwnPropertyNames;var Zp=Object.getPrototypeOf,Qp=Object.prototype.hasOwnProperty;var Aa=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Fe=(r,e)=>{for(var t in e)zo(r,t,{get:e[t],enumerable:!0})},Yu=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Yp(e))!Qp.call(r,o)&&o!==t&&zo(r,o,{get:()=>e[o],enumerable:!(n=Xp(e,o))||n.enumerable});return r};var Ca=(r,e,t)=>(t=r!=null?jp(Zp(r)):{},Yu(e||!r||!r.__esModule?zo(t,"default",{value:r,enumerable:!0}):t,r)),Jp=r=>Yu(zo({},"__esModule",{value:!0}),r);var Eh=Aa(wo=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,f,u,d;return l=(c&255<<24)>>>24,f=(c&255<<16)>>>16,u=(c&65280)>>>8,d=c&255,[l,f,u,d].join(".")},i=function(c){var l,f,u,d,h,p;for(l=[],u=d=0;d<=3&&c.length!==0;u=++d){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],f=p[1],c=c.substring(f),l.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,f,u,d,h;for(d=0,l=10,f="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,f="7")),h=u;u<c.length;){if("0"<=c[u]&&c[u]<=f)d=d*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")d=d*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")d=d*l+(10+t(c[u])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");u++}if(u===h)throw new Error("empty octet");return[d,u]},r=(function(){function c(l,f){var u,d,h,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(f||(p=l.split("/",2),l=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=i(f)}catch(m){throw u=m,new Error("Invalid mask: "+f)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(m){throw u=m,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var f,u,d;for(d=i(this.first),u=i(this.last),f=0;d<=u;)l(a(d),d,f),f++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c})(),wo.ip2long=i,wo.long2ip=a,wo.Netmask=r}).call(wo)});var Rp=Aa((v4,Iu)=>{"use strict";var ew=Object.prototype.hasOwnProperty,Me="~";function Bo(){}Object.create&&(Bo.prototype=Object.create(null),new Bo().__proto__||(Me=!1));function tw(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Dp(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new tw(t,n||r,o),i=Me?Me+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function aa(r,e){--r._eventsCount===0?r._events=new Bo:delete r._events[e]}function Te(){this._events=new Bo,this._eventsCount=0}Te.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)ew.call(t,n)&&e.push(Me?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Te.prototype.listeners=function(e){var t=Me?Me+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Te.prototype.listenerCount=function(e){var t=Me?Me+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Te.prototype.emit=function(e,t,n,o,s,i){var a=Me?Me+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,f,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];c.fn.apply(c.context,f)}else{var d=c.length,h;for(u=0;u<d;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!f)for(h=1,f=new Array(l-1);h<l;h++)f[h-1]=arguments[h];c[u].fn.apply(c[u].context,f)}}return!0};Te.prototype.on=function(e,t,n){return Dp(this,e,t,n,!1)};Te.prototype.once=function(e,t,n){return Dp(this,e,t,n,!0)};Te.prototype.removeListener=function(e,t,n,o){var s=Me?Me+e:e;if(!this._events[s])return this;if(!t)return aa(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&aa(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:aa(this,s)}return this};Te.prototype.removeAllListeners=function(e){var t;return e?(t=Me?Me+e:e,this._events[t]&&aa(this,t)):(this._events=new Bo,this._eventsCount=0),this};Te.prototype.off=Te.prototype.removeListener;Te.prototype.addListener=Te.prototype.on;Te.prefixed=Me;Te.EventEmitter=Te;typeof Iu<"u"&&(Iu.exports=Te)});var Np=Aa((z4,Op)=>{Op.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var Iw={};Fe(Iw,{createLibp2p:()=>_w,dnsaddrResolver:()=>kr,isLibp2p:()=>Cw});var Zu=Symbol.for("@libp2p/connection");var Ia=Symbol.for("@libp2p/content-routing");var Qe=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var I=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},Or=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},Tn=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var er=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}};var tr=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},Nr=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},Mt=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Ho=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},Go=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},Wo=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},jo=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Xo=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},ht=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var Mr=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}};var Pn=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Yo=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},Zo=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Bt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Qo=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}};var Ta=Symbol.for("@libp2p/peer-discovery");var Jo=Symbol.for("@libp2p/peer-id");function Ft(r){return!!r?.[Jo]}var Pa=Symbol.for("@libp2p/peer-routing");var La="keep-alive";function es(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Qu(...r){let e=[];for(let t of r)es(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Ju(...r){let e=[];for(let t of r)es(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var Fw=Symbol.for("@libp2p/transport");var Ln;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Ln||(Ln={}));var Pe=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var Dn=Symbol.for("@libp2p/service-capabilities"),Da=Symbol.for("@libp2p/service-dependencies");var Ma={};Fe(Ma,{base58btc:()=>ee,base58flickr:()=>im});var dx=new Uint8Array(0);function ef(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function pt(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function tf(r){return new TextEncoder().encode(r)}function rf(r){return new TextDecoder().decode(r)}function em(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,w=0,g=0,_=p.length;g!==_&&p[g]===0;)g++,m++;for(var E=(_-g)*f+1>>>0,C=new Uint8Array(E);g!==_;){for(var O=p[g],V=0,$=E-1;(O!==0||V<w)&&$!==-1;$--,V++)O+=256*C[$]>>>0,C[$]=O%a>>>0,O=O/a>>>0;if(O!==0)throw new Error("Non-zero carry");w=V,g++}for(var N=E-w;N!==E&&C[N]===0;)N++;for(var v=c.repeat(m);N<E;++N)v+=r.charAt(C[N]);return v}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var w=0,g=0;p[m]===c;)w++,m++;for(var _=(p.length-m)*l+1>>>0,E=new Uint8Array(_);p[m];){var C=t[p.charCodeAt(m)];if(C===255)return;for(var O=0,V=_-1;(C!==0||O<g)&&V!==-1;V--,O++)C+=a*E[V]>>>0,E[V]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");g=O,m++}if(p[m]!==" "){for(var $=_-g;$!==_&&E[$]===0;)$++;for(var N=new Uint8Array(w+(_-$)),v=w;$!==_;)N[v++]=E[$++];return N}}}function h(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:d,decode:h}}var tm=em,rm=tm,of=rm;var Ra=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},ka=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return sf(this,e)}},Oa=class{decoders;constructor(e){this.decoders=e}or(e){return sf(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function sf(r,e){return new Oa({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Na=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Ra(e,t,n),this.decoder=new ka(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Br({name:r,prefix:e,encode:t,decode:n}){return new Na(r,e,t,n)}function Ut({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=of(t,r);return Br({prefix:e,name:r,encode:n,decode:s=>pt(o(s))})}function nm(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let f=e[r[l]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|f,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function om(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function sm(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function ae({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=sm(n);return Br({prefix:e,name:r,encode(s){return om(s,n,t)},decode(s){return nm(s,o,t,r)}})}var ee=Ut({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),im=Ut({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ba={};Fe(Ba,{base32:()=>We,base32hex:()=>um,base32hexpad:()=>dm,base32hexpadupper:()=>hm,base32hexupper:()=>fm,base32pad:()=>cm,base32padupper:()=>lm,base32upper:()=>am,base32z:()=>pm});var We=ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),am=ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),cm=ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),lm=ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),um=ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fm=ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),dm=ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),hm=ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),pm=ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Fa={};Fe(Fa,{base36:()=>Rn,base36upper:()=>mm});var Rn=Ut({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),mm=Ut({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gm=lf,af=128,ym=127,bm=~ym,wm=Math.pow(2,31);function lf(r,e,t){e=e||[],t=t||0;for(var n=t;r>=wm;)e[t++]=r&255|af,r/=128;for(;r&bm;)e[t++]=r&255|af,r>>>=7;return e[t]=r|0,lf.bytes=t-n+1,e}var xm=Ua,Em=128,cf=127;function Ua(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Ua.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&cf)<<o:(i&cf)*Math.pow(2,o),o+=7}while(i>=Em);return Ua.bytes=s-n,t}var vm=Math.pow(2,7),Sm=Math.pow(2,14),_m=Math.pow(2,21),Am=Math.pow(2,28),Cm=Math.pow(2,35),Im=Math.pow(2,42),Tm=Math.pow(2,49),Pm=Math.pow(2,56),Lm=Math.pow(2,63),Dm=function(r){return r<vm?1:r<Sm?2:r<_m?3:r<Am?4:r<Cm?5:r<Im?6:r<Tm?7:r<Pm?8:r<Lm?9:10},Rm={encode:gm,decode:xm,encodingLength:Dm},km=Rm,kn=km;function On(r,e=0){return[kn.decode(r,e),kn.decode.bytes]}function Fr(r,e,t=0){return kn.encode(r,e,t),e}function Ur(r){return kn.encodingLength(r)}function ct(r,e){let t=e.byteLength,n=Ur(r),o=n+Ur(t),s=new Uint8Array(o+t);return Fr(r,s,0),Fr(t,s,n),s.set(e,o),new Kr(r,t,e,s)}function mt(r){let e=pt(r),[t,n]=On(e),[o,s]=On(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Kr(t,o,i,e)}function uf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&ef(r.bytes,t.bytes)}}var Kr=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function ff(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Nm(t,Ka(r),e??ee.encoder);default:return Mm(t,Ka(r),e??We.encoder)}}var df=new WeakMap;function Ka(r){let e=df.get(r);if(e==null){let t=new Map;return df.set(r,t),t}return e}var ue=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Nn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Bm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=ct(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&uf(e.multihash,n.multihash)}toString(e){return ff(this,e)}toJSON(){return{"/":ff(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??hf(n,o,s.bytes))}else if(t[Fm]===!0){let{version:n,multihash:o,code:s}=t,i=mt(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Nn)throw new Error(`Version 0 CID must use dag-pb (code: ${Nn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=hf(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Nn,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=pt(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Kr(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,d]=On(e.subarray(t));return t+=d,u},o=n(),s=Nn;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,f=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,o]=Om(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ka(s).set(n,e),s}};function Om(r,e){switch(r[0]){case"Q":{let t=e??ee;return[ee.prefix,t.decode(`${ee.prefix}${r}`)]}case ee.prefix:{let t=e??ee;return[ee.prefix,t.decode(r)]}case We.prefix:{let t=e??We;return[We.prefix,t.decode(r)]}case Rn.prefix:{let t=e??Rn;return[Rn.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Nm(r,e,t){let{prefix:n}=t;if(n!==ee.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function Mm(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Nn=112,Bm=18;function hf(r,e,t){let n=Ur(r),o=n+Ur(e),s=new Uint8Array(o+t.byteLength);return Fr(r,s,0),Fr(e,s,n),s.set(t,o),s}var Fm=Symbol.for("@ipld/js-cid/CID");var qa={};Fe(qa,{identity:()=>Je});var pf=0,Um="identity",mf=pt;function Km(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return ct(pf,mf(r))}var Je={code:pf,name:Um,encode:mf,digest:Km};function Y(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function ce(r=0){return new Uint8Array(r)}function Se(r=0){return new Uint8Array(r)}function et(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Se(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var yf=Symbol.for("@achingbrain/uint8arraylist");function gf(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function rs(r){return!!r?.[yf]}var Z=class r{bufs;length;[yf]=!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(rs(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(rs(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=gf(this.bufs,e);return t.buf[t.index]}set(e,t){let n=gf(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(rs(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return et(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:et(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,f=t>a&&t<=c;if(l&&f){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(f){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!rs(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let d=l;d>=0;d--){let h=this.get(u+d);if(n[d]!==h){f=Math.max(1,d-a[h]);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=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ce(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ce(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ce(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ce(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ce(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ce(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ce(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ce(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Y(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var Va={};Fe(Va,{base10:()=>qm});var qm=Ut({prefix:"9",name:"base10",alphabet:"0123456789"});var $a={};Fe($a,{base16:()=>Vm,base16upper:()=>$m});var Vm=ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),$m=ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var za={};Fe(za,{base2:()=>zm});var zm=ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ha={};Fe(Ha,{base256emoji:()=>Xm});var bf=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Hm=bf.reduce((r,e,t)=>(r[t]=e,r),[]),Gm=bf.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function Wm(r){return r.reduce((e,t)=>(e+=Hm[t],e),"")}function jm(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=Gm[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Xm=Br({prefix:"\u{1F680}",name:"base256emoji",encode:Wm,decode:jm});var ja={};Fe(ja,{base64:()=>Ga,base64pad:()=>Ym,base64url:()=>Wa,base64urlpad:()=>Zm});var Ga=ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ym=ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Wa=ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Zm=ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Xa={};Fe(Xa,{base8:()=>Qm});var Qm=ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Ya={};Fe(Ya,{identity:()=>Jm});var Jm=Br({prefix:"\0",name:"identity",encode:r=>rf(r),decode:r=>tf(r)});var Xx=new TextEncoder,Yx=new TextDecoder;var Ja={};Fe(Ja,{sha256:()=>qr,sha512:()=>ng});var rg=20;function Qa({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new Za(r,e,t,n,o)}var Za=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??rg,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?wf(n,this.code,t?.truncate):n.then(o=>wf(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function wf(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return ct(e,r)}function Ef(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var qr=Qa({name:"sha2-256",code:18,encode:Ef("SHA-256")}),ng=Qa({name:"sha2-512",code:19,encode:Ef("SHA-512")});var Mn={...Ya,...za,...Xa,...Va,...$a,...Ba,...Fa,...Ma,...ja,...Ha},cE={...Ja,...qa};function Sf(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var vf=Sf("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ec=Sf("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Se(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),og={utf8:vf,"utf-8":vf,hex:Mn.base16,latin1:ec,ascii:ec,binary:ec,...Mn},ns=og;function T(r,e="utf8"){let t=ns[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function K(r,e="utf8"){let t=ns[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var sg=parseInt("11111",2),tc=parseInt("10000000",2),ig=parseInt("01111111",2),_f={0:Bn,1:Bn,2:ag,3:ug,4:fg,5:lg,6:cg,16:Bn,22:Bn,48:Bn};function gt(r,e={offset:0}){let t=r[e.offset]&sg;if(e.offset++,_f[t]!=null)return _f[t](r,e);throw new Error("No decoder for tag "+t)}function Fn(r,e){let t=0;if((r[e.offset]&tc)===tc){let n=r[e.offset]&ig,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Bn(r,e){Fn(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=gt(r,e);if(n===null)break;t.push(n)}return t}function ag(r,e){let t=Fn(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function cg(r,e){let t=Fn(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let f=0;for(let u=0;u<c.length;u++)f+=c[u]<<u*7;a+=`.${f}`,c=[]}}return a}function lg(r,e){return e.offset++,null}function ug(r,e){let t=Fn(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function fg(r,e){let t=Fn(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function dg(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new Z;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function os(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=dg(r.byteLength);return new Z(Uint8Array.from([e.byteLength|tc]),e)}function Le(r){let e=new Z,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new Z(Uint8Array.from([2]),os(e),e)}function Un(r){let e=Uint8Array.from([0]),t=new Z(e,r);return new Z(Uint8Array.from([3]),os(t),t)}function Af(r){return new Z(Uint8Array.from([4]),os(r),r)}function tt(r,e=48){let t=new Z;for(let n of r)t.append(n);return new Z(Uint8Array.from([e]),os(t),t)}async function Cf(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function If(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Tf(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var hg=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),pg=Uint8Array.from([6,5,43,129,4,0,34]),mg=Uint8Array.from([6,5,43,129,4,0,35]),gg={ext:!0,kty:"EC",crv:"P-256"},yg={ext:!0,kty:"EC",crv:"P-384"},bg={ext:!0,kty:"EC",crv:"P-521"},rc=32,nc=48,oc=66;function sc(r){let e=gt(r);return Pf(e)}function Pf(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===rc*2+1)return n=K(e.subarray(t,t+rc),"base64url"),o=K(e.subarray(t+rc),"base64url"),new rr({...gg,key_ops:["verify"],x:n,y:o});if(e.byteLength===nc*2+1)return n=K(e.subarray(t,t+nc),"base64url"),o=K(e.subarray(t+nc),"base64url"),new rr({...yg,key_ops:["verify"],x:n,y:o});if(e.byteLength===oc*2+1)return n=K(e.subarray(t,t+oc),"base64url"),o=K(e.subarray(t+oc),"base64url"),new rr({...bg,key_ops:["verify"],x:n,y:o});throw new I(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Lf(r){return tt([Le(Uint8Array.from([1])),Af(T(r.d??"","base64url")),tt([Rf(r.crv)],160),tt([Un(new Z(Uint8Array.from([4]),T(r.x??"","base64url"),T(r.y??"","base64url")))],161)]).subarray()}function Df(r){return tt([Le(Uint8Array.from([1])),tt([Rf(r.crv)],160),tt([Un(new Z(Uint8Array.from([4]),T(r.x??"","base64url"),T(r.y??"","base64url")))],161)]).subarray()}function Rf(r){if(r==="P-256")return hg;if(r==="P-384")return pg;if(r==="P-521")return mg;throw new I(`Invalid curve ${r}`)}async function kf(r="P-256"){let e=await Cf(r);return new ss(e.privateKey)}var rr=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Df(this.jwk)),this._raw}toMultihash(){return Je.digest(je(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}async verify(e,t,n){return Tf(this.jwk,t,e,n)}},ss=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new rr({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Lf(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}async sign(e,t){return If(this.jwk,e,t)}};var nr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function bt(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Kn(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Ue(r,...e){if(!bt(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function is(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Kn(r.outputLen),Kn(r.blockLen)}function $r(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Nf(r,e){Ue(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function wt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function as(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function rt(r,e){return r<<32-e|r>>>e}var Mf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",wg=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Xe(r){if(Ue(r),Mf)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=wg[r[t]];return e}var yt={_0:48,_9:57,A:65,F:70,a:97,f:102};function Of(r){if(r>=yt._0&&r<=yt._9)return r-yt._0;if(r>=yt.A&&r<=yt.F)return r-(yt.A-10);if(r>=yt.a&&r<=yt.f)return r-(yt.a-10)}function or(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(Mf)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=Of(r.charCodeAt(s)),a=Of(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function ic(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function qn(r){return typeof r=="string"&&(r=ic(r)),Ue(r),r}function De(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];Ue(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}var Vr=class{};function ac(r){let e=n=>r().update(qn(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function qt(r=32){if(nr&&typeof nr.getRandomValues=="function")return nr.getRandomValues(new Uint8Array(r));if(nr&&typeof nr.randomBytes=="function")return Uint8Array.from(nr.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function xg(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}function Bf(r,e,t){return r&e^~r&t}function Ff(r,e,t){return r&e^r&t^e&t}var Vn=class extends Vr{constructor(e,t,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=as(this.buffer)}update(e){$r(this),e=qn(e),Ue(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=as(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){$r(this),Nf(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,wt(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;xg(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=as(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,f=this.get();if(l>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,f[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},xt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var we=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var cs=BigInt(4294967295),Uf=BigInt(32);function Eg(r,e=!1){return e?{h:Number(r&cs),l:Number(r>>Uf&cs)}:{h:Number(r>>Uf&cs)|0,l:Number(r&cs)|0}}function Kf(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=Eg(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var cc=(r,e,t)=>r>>>t,lc=(r,e,t)=>r<<32-t|e>>>t,sr=(r,e,t)=>r>>>t|e<<32-t,ir=(r,e,t)=>r<<32-t|e>>>t,$n=(r,e,t)=>r<<64-t|e>>>t-32,zn=(r,e,t)=>r>>>t-32|e<<64-t;function lt(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var qf=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),Vf=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,$f=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),zf=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,Hf=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),Gf=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var Sg=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Vt=new Uint32Array(64),ls=class extends Vn{constructor(e=32){super(64,e,8,!1),this.A=xt[0]|0,this.B=xt[1]|0,this.C=xt[2]|0,this.D=xt[3]|0,this.E=xt[4]|0,this.F=xt[5]|0,this.G=xt[6]|0,this.H=xt[7]|0}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)Vt[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let d=Vt[u-15],h=Vt[u-2],p=rt(d,7)^rt(d,18)^d>>>3,m=rt(h,17)^rt(h,19)^h>>>10;Vt[u]=m+Vt[u-7]+p+Vt[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:f}=this;for(let u=0;u<64;u++){let d=rt(a,6)^rt(a,11)^rt(a,25),h=f+d+Bf(a,c,l)+Sg[u]+Vt[u]|0,m=(rt(n,2)^rt(n,13)^rt(n,22))+Ff(n,o,s)|0;f=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,f=f+this.H|0,this.set(n,o,s,i,a,c,l,f)}roundClean(){wt(Vt)}destroy(){this.set(0,0,0,0,0,0,0,0),wt(this.buffer)}};var Wf=Kf(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),_g=Wf[0],Ag=Wf[1],$t=new Uint32Array(80),zt=new Uint32Array(80),uc=class extends Vn{constructor(e=64){super(128,e,16,!1),this.Ah=we[0]|0,this.Al=we[1]|0,this.Bh=we[2]|0,this.Bl=we[3]|0,this.Ch=we[4]|0,this.Cl=we[5]|0,this.Dh=we[6]|0,this.Dl=we[7]|0,this.Eh=we[8]|0,this.El=we[9]|0,this.Fh=we[10]|0,this.Fl=we[11]|0,this.Gh=we[12]|0,this.Gl=we[13]|0,this.Hh=we[14]|0,this.Hl=we[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:d,Gh:h,Gl:p,Hh:m,Hl:w}=this;return[e,t,n,o,s,i,a,c,l,f,u,d,h,p,m,w]}set(e,t,n,o,s,i,a,c,l,f,u,d,h,p,m,w){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=f|0,this.Fh=u|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=m|0,this.Hl=w|0}process(e,t){for(let E=0;E<16;E++,t+=4)$t[E]=e.getUint32(t),zt[E]=e.getUint32(t+=4);for(let E=16;E<80;E++){let C=$t[E-15]|0,O=zt[E-15]|0,V=sr(C,O,1)^sr(C,O,8)^cc(C,O,7),$=ir(C,O,1)^ir(C,O,8)^lc(C,O,7),N=$t[E-2]|0,v=zt[E-2]|0,D=sr(N,v,19)^$n(N,v,61)^cc(N,v,6),F=ir(N,v,19)^zn(N,v,61)^lc(N,v,6),R=$f($,F,zt[E-7],zt[E-16]),x=zf(R,V,D,$t[E-7],$t[E-16]);$t[E]=x|0,zt[E]=R|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:d,Fh:h,Fl:p,Gh:m,Gl:w,Hh:g,Hl:_}=this;for(let E=0;E<80;E++){let C=sr(u,d,14)^sr(u,d,18)^$n(u,d,41),O=ir(u,d,14)^ir(u,d,18)^zn(u,d,41),V=u&h^~u&m,$=d&p^~d&w,N=Hf(_,O,$,Ag[E],zt[E]),v=Gf(N,g,C,V,_g[E],$t[E]),D=N|0,F=sr(n,o,28)^$n(n,o,34)^$n(n,o,39),R=ir(n,o,28)^zn(n,o,34)^zn(n,o,39),x=n&s^n&a^s&a,y=o&i^o&c^i&c;g=m|0,_=w|0,m=h|0,w=p|0,h=u|0,p=d|0,{h:u,l:d}=lt(l|0,f|0,v|0,D|0),l=a|0,f=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let b=qf(D,R,y);n=Vf(b,v,F,x),o=b|0}({h:n,l:o}=lt(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=lt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=lt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=lt(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:d}=lt(this.Eh|0,this.El|0,u|0,d|0),{h,l:p}=lt(this.Fh|0,this.Fl|0,h|0,p|0),{h:m,l:w}=lt(this.Gh|0,this.Gl|0,m|0,w|0),{h:g,l:_}=lt(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,o,s,i,a,c,l,f,u,d,h,p,m,w,g,_)}roundClean(){wt($t,zt)}destroy(){wt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var us=ac(()=>new ls);var jf=ac(()=>new uc);var hc=BigInt(0),dc=BigInt(1);function Et(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}"`;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Ve(r,e,t=""){let n=bt(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Hn(r){let e=r.toString(16);return e.length&1?"0"+e:e}function Xf(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?hc:BigInt("0x"+r)}function zr(r){return Xf(Xe(r))}function vt(r){return Ue(r),Xf(Xe(Uint8Array.from(r).reverse()))}function fs(r,e){return or(r.toString(16).padStart(e*2,"0"))}function pc(r,e){return fs(r,e).reverse()}function Q(r,e,t){let n;if(typeof e=="string")try{n=or(e)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(bt(e))n=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof t=="number"&&o!==t)throw new Error(r+" of length "+t+" expected, got "+o);return n}function Yf(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function mc(r){return Uint8Array.from(r)}var fc=r=>typeof r=="bigint"&&hc<=r;function Zf(r,e,t){return fc(r)&&fc(e)&&fc(t)&&e<=r&&r<t}function Gn(r,e,t,n){if(!Zf(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function ds(r){let e;for(e=0;r>hc;r>>=dc,e+=1);return e}var Ht=r=>(dc<<BigInt(r))-dc;function Qf(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h),s=n(r),i=n(r),a=0,c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>t(i,s,...h),f=(h=n(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0,p=[];for(;h<e;){s=l();let m=s.slice();p.push(m),h+=s.length}return De(...p)};return(h,p)=>{c(),f(h);let m;for(;!(m=p(u()));)f();return c(),m}}function Gt(r,e,t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(o,s,i){let a=r[o];if(i&&a===void 0)return;let c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>n(o,s,!1)),Object.entries(t).forEach(([o,s])=>n(o,s,!0))}var gc=()=>{throw new Error("not implemented")};function Hr(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var Re=BigInt(0),pe=BigInt(1),ar=BigInt(2),td=BigInt(3),rd=BigInt(4),nd=BigInt(5),Cg=BigInt(7),od=BigInt(8),Ig=BigInt(9),sd=BigInt(16);function le(r,e){let t=r%e;return t>=Re?t:e+t}function ne(r,e,t){let n=r;for(;e-- >Re;)n*=n,n%=t;return n}function Jf(r,e){if(r===Re)throw new Error("invert: expected non-zero number");if(e<=Re)throw new Error("invert: expected positive modulus, got "+e);let t=le(r,e),n=e,o=Re,s=pe,i=pe,a=Re;for(;t!==Re;){let l=n/t,f=n%t,u=o-i*l,d=s-a*l;n=t,t=f,o=i,s=a,i=u,a=d}if(n!==pe)throw new Error("invert: does not exist");return le(o,e)}function yc(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function id(r,e){let t=(r.ORDER+pe)/rd,n=r.pow(e,t);return yc(r,n,e),n}function Tg(r,e){let t=(r.ORDER-nd)/od,n=r.mul(e,ar),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,ar),o),a=r.mul(s,r.sub(i,r.ONE));return yc(r,a,e),a}function Pg(r){let e=$e(r),t=ad(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+Cg)/sd;return(a,c)=>{let l=a.pow(c,i),f=a.mul(l,n),u=a.mul(l,o),d=a.mul(l,s),h=a.eql(a.sqr(f),c),p=a.eql(a.sqr(u),c);l=a.cmov(l,f,h),f=a.cmov(d,u,p);let m=a.eql(a.sqr(f),c),w=a.cmov(l,f,m);return yc(a,w,c),w}}function ad(r){if(r<td)throw new Error("sqrt is not defined for small field");let e=r-pe,t=0;for(;e%ar===Re;)e/=ar,t++;let n=ar,o=$e(r);for(;ed(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return id;let s=o.pow(n,e),i=(e+pe)/ar;return function(c,l){if(c.is0(l))return l;if(ed(c,l)!==1)throw new Error("Cannot find square root");let f=t,u=c.mul(c.ONE,s),d=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let p=1,m=c.sqr(d);for(;!c.eql(m,c.ONE);)if(p++,m=c.sqr(m),p===f)throw new Error("Cannot find square root");let w=pe<<BigInt(f-p-1),g=c.pow(u,w);f=p,u=c.sqr(g),d=c.mul(d,u),h=c.mul(h,g)}return h}}function Lg(r){return r%rd===td?id:r%od===nd?Tg:r%sd===Ig?Pg(r):ad(r)}var St=(r,e)=>(le(r,e)&pe)===pe,Dg=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function bc(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},t=Dg.reduce((n,o)=>(n[o]="function",n),e);return Gt(r,t),r}function Rg(r,e,t){if(t<Re)throw new Error("invalid exponent, negatives unsupported");if(t===Re)return r.ONE;if(t===pe)return e;let n=r.ONE,o=e;for(;t>Re;)t&pe&&(n=r.mul(n,o)),o=r.sqr(o),t>>=pe;return n}function Wn(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function ed(r,e){let t=(r.ORDER-pe)/ar,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function hs(r,e){e!==void 0&&Kn(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function $e(r,e,t=!1,n={}){if(r<=Re)throw new Error("invalid field: expected ORDER > 0, got "+r);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(n.sqrt||t)throw new Error("cannot specify opts in two arguments");let d=e;d.BITS&&(o=d.BITS),d.sqrt&&(s=d.sqrt),typeof d.isLE=="boolean"&&(t=d.isLE),typeof d.modFromBytes=="boolean"&&(i=d.modFromBytes),a=d.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(s=n.sqrt);let{nBitLength:c,nByteLength:l}=hs(r,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let f,u=Object.freeze({ORDER:r,isLE:t,BITS:c,BYTES:l,MASK:Ht(c),ZERO:Re,ONE:pe,allowedLengths:a,create:d=>le(d,r),isValid:d=>{if(typeof d!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof d);return Re<=d&&d<r},is0:d=>d===Re,isValidNot0:d=>!u.is0(d)&&u.isValid(d),isOdd:d=>(d&pe)===pe,neg:d=>le(-d,r),eql:(d,h)=>d===h,sqr:d=>le(d*d,r),add:(d,h)=>le(d+h,r),sub:(d,h)=>le(d-h,r),mul:(d,h)=>le(d*h,r),pow:(d,h)=>Rg(u,d,h),div:(d,h)=>le(d*Jf(h,r),r),sqrN:d=>d*d,addN:(d,h)=>d+h,subN:(d,h)=>d-h,mulN:(d,h)=>d*h,inv:d=>Jf(d,r),sqrt:s||(d=>(f||(f=Lg(r)),f(u,d))),toBytes:d=>t?pc(d,l):fs(d,l),fromBytes:(d,h=!0)=>{if(a){if(!a.includes(d.length)||d.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+d.length);let m=new Uint8Array(l);m.set(d,t?0:m.length-d.length),d=m}if(d.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+d.length);let p=t?vt(d):zr(d);if(i&&(p=le(p,r)),!h&&!u.isValid(p))throw new Error("invalid field element: outside of range 0..ORDER");return p},invertBatch:d=>Wn(u,d),cmov:(d,h,p)=>p?h:d});return Object.freeze(u)}function cd(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function wc(r){let e=cd(r);return e+Math.ceil(e/2)}function xc(r,e,t=!1){let n=r.length,o=cd(e),s=wc(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?vt(r):zr(r),a=le(i,e-pe)+pe;return t?pc(a,o):fs(a,o)}var Gr=BigInt(0),cr=BigInt(1);function jn(r,e){let t=e.negate();return r?t:e}function _t(r,e){let t=Wn(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function dd(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Ec(r,e){dd(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=Ht(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function ld(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=cr);let l=e*n,f=l+Math.abs(a)-1,u=a===0,d=a<0,h=e%2!==0;return{nextN:c,offset:f,isZero:u,isNeg:d,isNegF:h,offsetF:l}}function kg(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,n)=>{if(!(t instanceof e))throw new Error("invalid point at index "+n)})}function Og(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,n)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+n)})}var vc=new WeakMap,hd=new WeakMap;function Sc(r){return hd.get(r)||1}function ud(r){if(r!==Gr)throw new Error("invalid wNAF")}var Wr=class{constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>Gr;)t&cr&&(n=n.add(o)),o=o.double(),t>>=cr;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=Ec(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=Ec(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:f,isNeg:u,isNegF:d,offsetF:h}=ld(n,a,i);n=c,f?s=s.add(jn(d,t[h])):o=o.add(jn(u,t[l]))}return ud(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=Ec(e,this.bits);for(let i=0;i<s.windows&&n!==Gr;i++){let{nextN:a,offset:c,isZero:l,isNeg:f}=ld(n,i,s);if(n=a,!l){let u=t[c];o=o.add(f?u.negate():u)}}return ud(n),o}getPrecomputes(e,t,n){let o=vc.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),vc.set(t,o))),o}cached(e,t,n){let o=Sc(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Sc(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){dd(t,this.bits),hd.set(e,t),vc.delete(e)}hasCache(e){return Sc(e)!==1}};function pd(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>Gr||n>Gr;)t&cr&&(s=s.add(o)),n&cr&&(i=i.add(o)),o=o.double(),t>>=cr,n>>=cr;return{p1:s,p2:i}}function jr(r,e,t,n){kg(t,r),Og(n,e);let o=t.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,a=ds(BigInt(o)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let l=Ht(c),f=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c,d=i;for(let h=u;h>=0;h-=c){f.fill(i);for(let m=0;m<s;m++){let w=n[m],g=Number(w>>BigInt(h)&l);f[g]=f[g].add(t[m])}let p=i;for(let m=f.length-1,w=i;m>0;m--)w=w.add(f[m]),p=p.add(w);if(d=d.add(p),h!==0)for(let m=0;m<c;m++)d=d.double()}return d}function fd(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return bc(e),e}else return $e(r,{isLE:t})}function ps(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Gr))throw new Error(`CURVE.${c} must be positive bigint`)}let o=fd(e.p,t.Fp,n),s=fd(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}var Wt=BigInt(0),me=BigInt(1),_c=BigInt(2),Ng=BigInt(8);function Mg(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function Bg(r,e={}){let t=ps("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i}=s;Gt(e,{},{uvRatio:"function"});let a=_c<<BigInt(o.BYTES*8)-me,c=w=>n.create(w),l=e.uvRatio||((w,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(w,g))}}catch{return{isValid:!1,value:Wt}}});if(!Mg(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function f(w,g,_=!1){let E=_?me:Wt;return Gn("coordinate "+w,g,E,a),g}function u(w){if(!(w instanceof p))throw new Error("ExtendedPoint expected")}let d=Hr((w,g)=>{let{X:_,Y:E,Z:C}=w,O=w.is0();g==null&&(g=O?Ng:n.inv(C));let V=c(_*g),$=c(E*g),N=n.mul(C,g);if(O)return{x:Wt,y:me};if(N!==me)throw new Error("invZ was invalid");return{x:V,y:$}}),h=Hr(w=>{let{a:g,d:_}=s;if(w.is0())throw new Error("bad point: ZERO");let{X:E,Y:C,Z:O,T:V}=w,$=c(E*E),N=c(C*C),v=c(O*O),D=c(v*v),F=c($*g),R=c(v*c(F+N)),x=c(D+c(_*c($*N)));if(R!==x)throw new Error("bad point: equation left != right (1)");let y=c(E*C),b=c(O*V);if(y!==b)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(g,_,E,C){this.X=f("x",g),this.Y=f("y",_),this.Z=f("z",E,!0),this.T=f("t",C),Object.freeze(this)}static CURVE(){return s}static fromAffine(g){if(g instanceof p)throw new Error("extended point not allowed");let{x:_,y:E}=g||{};return f("x",_),f("y",E),new p(_,E,me,c(_*E))}static fromBytes(g,_=!1){let E=n.BYTES,{a:C,d:O}=s;g=mc(Ve(g,E,"point")),Et(_,"zip215");let V=mc(g),$=g[E-1];V[E-1]=$&-129;let N=vt(V),v=_?a:n.ORDER;Gn("point.y",N,Wt,v);let D=c(N*N),F=c(D-me),R=c(O*D-C),{isValid:x,value:y}=l(F,R);if(!x)throw new Error("bad point: invalid y coordinate");let b=(y&me)===me,S=($&128)!==0;if(!_&&y===Wt&&S)throw new Error("bad point: x=0 and x_0=1");return S!==b&&(y=c(-y)),p.fromAffine({x:y,y:N})}static fromHex(g,_=!1){return p.fromBytes(Q("point",g),_)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,_=!0){return m.createCache(this,g),_||this.multiply(_c),this}assertValidity(){h(this)}equals(g){u(g);let{X:_,Y:E,Z:C}=this,{X:O,Y:V,Z:$}=g,N=c(_*$),v=c(O*C),D=c(E*$),F=c(V*C);return N===v&&D===F}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:g}=s,{X:_,Y:E,Z:C}=this,O=c(_*_),V=c(E*E),$=c(_c*c(C*C)),N=c(g*O),v=_+E,D=c(c(v*v)-O-V),F=N+V,R=F-$,x=N-V,y=c(D*R),b=c(F*x),S=c(D*x),A=c(R*F);return new p(y,b,A,S)}add(g){u(g);let{a:_,d:E}=s,{X:C,Y:O,Z:V,T:$}=this,{X:N,Y:v,Z:D,T:F}=g,R=c(C*N),x=c(O*v),y=c($*E*F),b=c(V*D),S=c((C+O)*(N+v)-R-x),A=b-y,k=b+y,P=c(x-_*R),L=c(S*A),B=c(k*P),q=c(S*P),oe=c(A*k);return new p(L,B,oe,q)}subtract(g){return this.add(g.negate())}multiply(g){if(!o.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:_,f:E}=m.cached(this,g,C=>_t(p,C));return _t(p,[_,E])[0]}multiplyUnsafe(g,_=p.ZERO){if(!o.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===Wt?p.ZERO:this.is0()||g===me?this:m.unsafe(this,g,E=>_t(p,E),_)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(g){return d(this,g)}clearCofactor(){return i===me?this:this.multiplyUnsafe(i)}toBytes(){let{x:g,y:_}=this.toAffine(),E=n.toBytes(_);return E[E.length-1]|=g&me?128:0,E}toHex(){return Xe(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(g){return _t(p,g)}static msm(g,_){return jr(p,o,g,_)}_setWindowSize(g){this.precompute(g)}toRawBytes(){return this.toBytes()}}p.BASE=new p(s.Gx,s.Gy,me,c(s.Gx*s.Gy)),p.ZERO=new p(Wt,me,me,Wt),p.Fp=n,p.Fn=o;let m=new Wr(p,o.BITS);return p.BASE.precompute(8),p}var ms=class{constructor(e){this.ep=e}static fromBytes(e){gc()}static fromHex(e){gc()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Xe(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.init(this.ep.precompute(e,t))}toRawBytes(){return this.toBytes()}};function Fg(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Gt(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:s,Fn:i}=r,a=t.randomBytes||qt,c=t.adjustScalarBytes||(v=>v),l=t.domain||((v,D,F)=>{if(Et(F,"phflag"),D.length||F)throw new Error("Contexts/pre-hash are not supported");return v});function f(v){return i.create(vt(v))}function u(v){let D=E.secretKey;v=Q("private key",v,D);let F=Q("hashed private key",e(v),2*D),R=c(F.slice(0,D)),x=F.slice(D,2*D),y=f(R);return{head:R,prefix:x,scalar:y}}function d(v){let{head:D,prefix:F,scalar:R}=u(v),x=o.multiply(R),y=x.toBytes();return{head:D,prefix:F,scalar:R,point:x,pointBytes:y}}function h(v){return d(v).pointBytes}function p(v=Uint8Array.of(),...D){let F=De(...D);return f(e(l(F,Q("context",v),!!n)))}function m(v,D,F={}){v=Q("message",v),n&&(v=n(v));let{prefix:R,scalar:x,pointBytes:y}=d(D),b=p(F.context,R,v),S=o.multiply(b).toBytes(),A=p(F.context,S,y,v),k=i.create(b+A*x);if(!i.isValid(k))throw new Error("sign failed: invalid s");let P=De(S,i.toBytes(k));return Ve(P,E.signature,"result")}let w={zip215:!0};function g(v,D,F,R=w){let{context:x,zip215:y}=R,b=E.signature;v=Q("signature",v,b),D=Q("message",D),F=Q("publicKey",F,E.publicKey),y!==void 0&&Et(y,"zip215"),n&&(D=n(D));let S=b/2,A=v.subarray(0,S),k=vt(v.subarray(S,b)),P,L,B;try{P=r.fromBytes(F,y),L=r.fromBytes(A,y),B=o.multiplyUnsafe(k)}catch{return!1}if(!y&&P.isSmallOrder())return!1;let q=p(x,L.toBytes(),P.toBytes(),D);return L.add(P.multiplyUnsafe(q)).subtract(B).clearCofactor().is0()}let _=s.BYTES,E={secretKey:_,publicKey:_,signature:2*_,seed:_};function C(v=a(E.seed)){return Ve(v,E.seed,"seed")}function O(v){let D=N.randomSecretKey(v);return{secretKey:D,publicKey:h(D)}}function V(v){return bt(v)&&v.length===i.BYTES}function $(v,D){try{return!!r.fromBytes(v,D)}catch{return!1}}let N={getExtendedPublicKey:d,randomSecretKey:C,isValidSecretKey:V,isValidPublicKey:$,toMontgomery(v){let{y:D}=r.fromBytes(v),F=E.publicKey,R=F===32;if(!R&&F!==57)throw new Error("only defined for 25519 and 448");let x=R?s.div(me+D,me-D):s.div(D-me,D+me);return s.toBytes(x)},toMontgomerySecret(v){let D=E.secretKey;Ve(v,D);let F=e(v.subarray(0,D));return c(F).subarray(0,D)},randomPrivateKey:C,precompute(v=8,D=r.BASE){return D.precompute(v,!1)}};return Object.freeze({keygen:O,getPublicKey:h,sign:m,verify:g,utils:N,Point:r,lengths:E})}function Ug(r){let e={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,n=$e(e.n,r.nBitLength,!0),o={Fp:t,Fn:n,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:e,curveOpts:o,hash:r.hash,eddsaOpts:s}}function Kg(r,e){let t=e.Point;return Object.assign({},e,{ExtendedPoint:t,CURVE:r,nBitLength:t.Fn.BITS,nByteLength:t.Fn.BYTES})}function md(r){let{CURVE:e,curveOpts:t,hash:n,eddsaOpts:o}=Ug(r),s=Bg(e,t),i=Fg(s,n,o);return Kg(r,i)}var qg=BigInt(0),At=BigInt(1),gd=BigInt(2),hv=BigInt(3),Vg=BigInt(5),$g=BigInt(8),Xr=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Xn={p:Xr,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:$g,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function zg(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Xr,a=r*r%s*r%s,c=ne(a,gd,s)*a%s,l=ne(c,At,s)*r%s,f=ne(l,Vg,s)*l%s,u=ne(f,e,s)*f%s,d=ne(u,t,s)*u%s,h=ne(d,n,s)*d%s,p=ne(h,o,s)*h%s,m=ne(p,o,s)*h%s,w=ne(m,e,s)*f%s;return{pow_p_5_8:ne(w,gd,s)*r%s,b2:a}}function Hg(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Ac=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Tc(r,e){let t=Xr,n=le(e*e*e,t),o=le(n*n*e,t),s=zg(r*o).pow_p_5_8,i=le(r*n*s,t),a=le(e*i*i,t),c=i,l=le(i*Ac,t),f=a===r,u=a===le(-r,t),d=a===le(-r*Ac,t);return f&&(i=c),(u||d)&&(i=l),St(i,t)&&(i=le(-i,t)),{isValid:f||u,value:i}}var jt=$e(Xn.p,{isLE:!0}),Gg=$e(Xn.n,{isLE:!0}),Wg={...Xn,Fp:jt,hash:jf,adjustScalarBytes:Hg,uvRatio:Tc},Ye=md(Wg);var Cc=Ac,jg=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Xg=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Yg=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),Zg=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),yd=r=>Tc(At,r),Qg=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ic=r=>Ye.Point.Fp.create(vt(r)&Qg);function bd(r){let{d:e}=Xn,t=Xr,n=g=>jt.create(g),o=n(Cc*r*r),s=n((o+At)*Yg),i=BigInt(-1),a=n((i-e*o)*n(o+e)),{isValid:c,value:l}=Tc(s,a),f=n(l*r);St(f,t)||(f=n(-f)),c||(l=f),c||(i=o);let u=n(i*(o-At)*Zg-a),d=l*l,h=n((l+l)*a),p=n(u*jg),m=n(At-d),w=n(At+d);return new Ye.Point(n(h*w),n(m*p),n(p*w),n(h*m))}function Jg(r){Ue(r,64);let e=Ic(r.subarray(0,32)),t=bd(e),n=Ic(r.subarray(32,64)),o=bd(n);return new Ct(t.add(o))}var Ct=class r extends ms{constructor(e){super(e)}static fromAffine(e){return new r(Ye.Point.fromAffine(e))}assertSame(e){if(!(e instanceof r))throw new Error("RistrettoPoint expected")}init(e){return new r(e)}static hashToCurve(e){return Jg(Q("ristrettoHash",e,64))}static fromBytes(e){Ue(e,32);let{a:t,d:n}=Xn,o=Xr,s=C=>jt.create(C),i=Ic(e);if(!Yf(jt.toBytes(i),e)||St(i,o))throw new Error("invalid ristretto255 encoding 1");let a=s(i*i),c=s(At+t*a),l=s(At-t*a),f=s(c*c),u=s(l*l),d=s(t*n*f-u),{isValid:h,value:p}=yd(s(d*u)),m=s(p*l),w=s(p*m*d),g=s((i+i)*m);St(g,o)&&(g=s(-g));let _=s(c*w),E=s(g*_);if(!h||St(E,o)||_===qg)throw new Error("invalid ristretto255 encoding 2");return new r(new Ye.Point(g,_,At,E))}static fromHex(e){return r.fromBytes(Q("ristrettoHex",e,32))}static msm(e,t){return jr(r,Ye.Point.Fn,e,t)}toBytes(){let{X:e,Y:t,Z:n,T:o}=this.ep,s=Xr,i=w=>jt.create(w),a=i(i(n+t)*i(n-t)),c=i(e*t),l=i(c*c),{value:f}=yd(i(a*l)),u=i(f*a),d=i(f*c),h=i(u*d*o),p;if(St(o*h,s)){let w=i(t*Cc),g=i(e*Cc);e=w,t=g,p=i(u*Xg)}else p=d;St(e*h,s)&&(t=i(-t));let m=i((n-t)*p);return St(m,s)&&(m=i(-m)),jt.toBytes(m)}equals(e){this.assertSame(e);let{X:t,Y:n}=this.ep,{X:o,Y:s}=e.ep,i=l=>jt.create(l),a=i(t*s)===i(n*o),c=i(n*s)===i(t*o);return a||c}is0(){return this.equals(r.ZERO)}};Ct.BASE=new Ct(Ye.Point.BASE);Ct.ZERO=new Ct(Ye.Point.ZERO);Ct.Fp=jt;Ct.Fn=Gg;var Yn=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Zn=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},gs=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var wd={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new gs("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 Ke=wd;var ys=32,Qn=64,Pc=32;var Yr,xd=(async()=>{try{return await Ke.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Ed(){let r=Ye.utils.randomPrivateKey(),e=Ye.getPublicKey(r);return{privateKey:oy(r,e),publicKey:e}}async function ey(r,e){let t;r.length===Qn?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:K(r.subarray(32),"base64url"),d:K(t,"base64url"),ext:!0,key_ops:["sign"]},o=await Ke.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Ke.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function ty(r,e){let t=r.subarray(0,Pc);return Ye.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function vd(r,e){return Yr==null&&(Yr=await xd),Yr?ey(r,e):ty(r,e)}async function ry(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Ke.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Ke.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function ny(r,e,t){return Ye.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function Sd(r,e,t){return Yr==null&&(Yr=await xd),Yr?ry(r,e,t):ny(r,e,t)}function oy(r,e){let t=new Uint8Array(Qn);for(let n=0;n<Pc;n++)t[n]=r[n],t[Pc+n]=e[n];return t}function Zr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Jn=class{type="Ed25519";raw;constructor(e){this.raw=ws(e,ys)}toMultihash(){return Je.digest(je(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=Sd(this.raw,t,e);return Zr(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},bs=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=ws(e,Qn),this.publicKey=new Jn(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=vd(this.raw,e);return Zr(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function Lc(r){return r=ws(r,ys),new Jn(r)}async function Ad(){let{privateKey:r,publicKey:e}=Ed();return new bs(r,e)}function ws(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new I(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var sy=Math.pow(2,7),iy=Math.pow(2,14),ay=Math.pow(2,21),Dc=Math.pow(2,28),Rc=Math.pow(2,35),kc=Math.pow(2,42),Oc=Math.pow(2,49),W=128,_e=127;function ge(r){if(r<sy)return 1;if(r<iy)return 2;if(r<ay)return 3;if(r<Dc)return 4;if(r<Rc)return 5;if(r<kc)return 6;if(r<Oc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Qr(r,e,t=0){switch(ge(r)){case 8:e[t++]=r&255|W,r/=128;case 7:e[t++]=r&255|W,r/=128;case 6:e[t++]=r&255|W,r/=128;case 5:e[t++]=r&255|W,r/=128;case 4:e[t++]=r&255|W,r>>>=7;case 3:e[t++]=r&255|W,r>>>=7;case 2:e[t++]=r&255|W,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function cy(r,e,t=0){switch(ge(r)){case 8:e.set(t++,r&255|W),r/=128;case 7:e.set(t++,r&255|W),r/=128;case 6:e.set(t++,r&255|W),r/=128;case 5:e.set(t++,r&255|W),r/=128;case 4:e.set(t++,r&255|W),r>>>=7;case 3:e.set(t++,r&255|W),r>>>=7;case 2:e.set(t++,r&255|W),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Nc(r,e){let t=r[e],n=0;if(n+=t&_e,t<W||(t=r[e+1],n+=(t&_e)<<7,t<W)||(t=r[e+2],n+=(t&_e)<<14,t<W)||(t=r[e+3],n+=(t&_e)<<21,t<W)||(t=r[e+4],n+=(t&_e)*Dc,t<W)||(t=r[e+5],n+=(t&_e)*Rc,t<W)||(t=r[e+6],n+=(t&_e)*kc,t<W)||(t=r[e+7],n+=(t&_e)*Oc,t<W))return n;throw new RangeError("Could not decode varint")}function ly(r,e){let t=r.get(e),n=0;if(n+=t&_e,t<W||(t=r.get(e+1),n+=(t&_e)<<7,t<W)||(t=r.get(e+2),n+=(t&_e)<<14,t<W)||(t=r.get(e+3),n+=(t&_e)<<21,t<W)||(t=r.get(e+4),n+=(t&_e)*Dc,t<W)||(t=r.get(e+5),n+=(t&_e)*Rc,t<W)||(t=r.get(e+6),n+=(t&_e)*kc,t<W)||(t=r.get(e+7),n+=(t&_e)*Oc,t<W))return n;throw new RangeError("Could not decode varint")}function Xt(r,e,t=0){return e==null&&(e=Se(ge(r))),e instanceof Uint8Array?Qr(r,e,t):cy(r,e,t)}function lr(r,e=0){return r instanceof Uint8Array?Nc(r,e):ly(r,e)}var Mc=new Float32Array([-0]),Yt=new Uint8Array(Mc.buffer);function Cd(r,e,t){Mc[0]=r,e[t]=Yt[0],e[t+1]=Yt[1],e[t+2]=Yt[2],e[t+3]=Yt[3]}function Id(r,e){return Yt[0]=r[e],Yt[1]=r[e+1],Yt[2]=r[e+2],Yt[3]=r[e+3],Mc[0]}var Bc=new Float64Array([-0]),Ae=new Uint8Array(Bc.buffer);function Td(r,e,t){Bc[0]=r,e[t]=Ae[0],e[t+1]=Ae[1],e[t+2]=Ae[2],e[t+3]=Ae[3],e[t+4]=Ae[4],e[t+5]=Ae[5],e[t+6]=Ae[6],e[t+7]=Ae[7]}function Pd(r,e){return Ae[0]=r[e],Ae[1]=r[e+1],Ae[2]=r[e+2],Ae[3]=r[e+3],Ae[4]=r[e+4],Ae[5]=r[e+5],Ae[6]=r[e+6],Ae[7]=r[e+7],Bc[0]}var uy=BigInt(Number.MAX_SAFE_INTEGER),fy=BigInt(Number.MIN_SAFE_INTEGER),ze=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ur;if(e<uy&&e>fy)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>Ld&&(o=0n,++n>Ld&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return ur;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ur}},ur=new ze(0,0);ur.toBigInt=function(){return 0n};ur.zzEncode=ur.zzDecode=function(){return this};ur.length=function(){return 1};var Ld=4294967296n;function Dd(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Rd(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Fc(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function nt(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function xs(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Uc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,nt(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw nt(this,4);return xs(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw nt(this,4);return xs(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw nt(this,4);let e=Id(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw nt(this,4);let e=Pd(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw nt(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Rd(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw nt(this,e);this.pos+=e}else do if(this.pos>=this.len)throw nt(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ze(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw nt(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw nt(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw nt(this,8);let e=xs(this.buf,this.pos+=4),t=xs(this.buf,this.pos+=4);return new ze(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Nc(this.buf,this.pos);return this.pos+=ge(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Kc(r){return new Uc(r instanceof Uint8Array?r:r.subarray())}function ke(r,e,t){let n=Kc(r);return e.decode(n,void 0,t)}function qc(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Se(i);o+i>e&&(n=Se(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var fr=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Vc(){}var zc=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},dy=qc();function hy(r){return globalThis.Buffer!=null?Se(r):dy(r)}var ro=class{len;head;tail;states;constructor(){this.len=0,this.head=new fr(Vc,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new fr(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Hc((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Es,10,ze.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ze.fromBigInt(e);return this._push(Es,t.length(),t)}uint64Number(e){return this._push(Qr,ge(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ze.fromBigInt(e).zzEncode();return this._push(Es,t.length(),t)}sint64Number(e){let t=ze.fromNumber(e).zzEncode();return this._push(Es,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push($c,1,e?1:0)}fixed32(e){return this._push(to,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ze.fromBigInt(e);return this._push(to,4,t.lo)._push(to,4,t.hi)}fixed64Number(e){let t=ze.fromNumber(e);return this._push(to,4,t.lo)._push(to,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(Cd,4,e)}double(e){return this._push(Td,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push($c,1,0):this.uint32(t)._push(my,t,e)}string(e){let t=Dd(e);return t!==0?this.uint32(t)._push(Fc,t,e):this._push($c,1,0)}fork(){return this.states=new zc(this),this.head=this.tail=new fr(Vc,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new fr(Vc,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=hy(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function $c(r,e,t){e[t]=r&255}function py(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Hc=class extends fr{next;constructor(e,t){super(py,e,t),this.next=void 0}};function Es(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function to(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function my(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ro.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(gy,e,r),this},ro.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(yy,e,r),this});function gy(r,e,t){e.set(r,t)}function yy(r,e,t){r.length<40?Fc(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(T(r),t)}function Gc(){return new ro}function Oe(r,e){let t=Gc();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Jr;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(Jr||(Jr={}));function vs(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Wc(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return vs("enum",Jr.VARINT,t,n)}function Ne(r,e){return vs("message",Jr.LENGTH_DELIMITED,r,e)}var dr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},no=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var fe;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(fe||(fe={}));var jc;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(jc||(jc={}));(function(r){r.codec=()=>Wc(jc)})(fe||(fe={}));var ut;(function(r){let e;r.codec=()=>(e==null&&(e=Ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),fe.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>ke(t,r.codec(),n)})(ut||(ut={}));var Xc;(function(r){let e;r.codec=()=>(e==null&&(e=Ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),fe.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>ke(t,r.codec(),n)})(Xc||(Xc={}));function en(r){if(isNaN(r)||r<=0)throw new I("random bytes length must be a Number bigger than 0");return qt(r)}var so={};Fe(so,{MAX_RSA_KEY_SIZE:()=>Yc,generateRSAKeyPair:()=>sl,jwkToJWKKeyPair:()=>Fd,jwkToPkcs1:()=>Ey,jwkToPkix:()=>el,jwkToRSAPrivateKey:()=>ol,pkcs1MessageToJwk:()=>Qc,pkcs1MessageToRSAPrivateKey:()=>tl,pkcs1ToJwk:()=>xy,pkcs1ToRSAPrivateKey:()=>Bd,pkixMessageToJwk:()=>Jc,pkixMessageToRSAPublicKey:()=>nl,pkixToJwk:()=>vy,pkixToRSAPublicKey:()=>rl});var Ss=us;var tn=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=so.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ue.createV1(114,this._multihash)}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}verify(e,t,n){return Md(this.jwk,t,e,n)}},oo=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=so.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}sign(e,t){return Nd(this.jwk,e,t)}};var Yc=8192,Zc=18,by=1062,wy=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function xy(r){let e=gt(r);return Qc(e)}function Qc(r){return{n:K(r[1],"base64url"),e:K(r[2],"base64url"),d:K(r[3],"base64url"),p:K(r[4],"base64url"),q:K(r[5],"base64url"),dp:K(r[6],"base64url"),dq:K(r[7],"base64url"),qi:K(r[8],"base64url"),kty:"RSA"}}function Ey(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 I("JWK was missing components");return tt([Le(Uint8Array.from([0])),Le(T(r.n,"base64url")),Le(T(r.e,"base64url")),Le(T(r.d,"base64url")),Le(T(r.p,"base64url")),Le(T(r.q,"base64url")),Le(T(r.dp,"base64url")),Le(T(r.dq,"base64url")),Le(T(r.qi,"base64url"))]).subarray()}function vy(r){let e=gt(r,{offset:0});return Jc(e)}function Jc(r){let e=gt(r[1],{offset:0});return{kty:"RSA",n:K(e[0],"base64url"),e:K(e[1],"base64url")}}function el(r){if(r.n==null||r.e==null)throw new I("JWK was missing components");return tt([wy,Un(tt([Le(T(r.n,"base64url")),Le(T(r.e,"base64url"))]))]).subarray()}function Bd(r){let e=gt(r);return tl(e)}function tl(r){let e=Qc(r);return ol(e)}function rl(r,e){if(r.byteLength>=by)throw new Or("Key size is too large");let t=gt(r,{offset:0});return nl(t,r,e)}function nl(r,e,t){let n=Jc(r);if(t==null){let o=Ss(ut.encode({Type:fe.RSA,Data:e}));t=ct(Zc,o)}return new tn(n,t)}function ol(r){if(Kd(r)>Yc)throw new I("Key size is too large");let e=Fd(r),t=Ss(ut.encode({Type:fe.RSA,Data:el(e.publicKey)})),n=ct(Zc,t);return new oo(e.privateKey,new tn(e.publicKey,n))}async function sl(r){if(r>Yc)throw new I("Key size is too large");let e=await Ud(r),t=Ss(ut.encode({Type:fe.RSA,Data:el(e.publicKey)})),n=ct(Zc,t);return new oo(e.privateKey,new tn(e.publicKey,n))}function Fd(r){if(r==null)throw new I("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function Ud(r,e){let t=await Ke.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await Sy(t,e);return{privateKey:n[0],publicKey:n[1]}}async function Nd(r,e,t){let n=await Ke.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Ke.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Md(r,e,t,n){let o=await Ke.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Ke.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),s}async function Sy(r,e){if(r.privateKey==null||r.publicKey==null)throw new I("Private and public key are required");let t=await Promise.all([Ke.get().subtle.exportKey("jwk",r.privateKey),Ke.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function Kd(r){if(r.kty!=="RSA")throw new I("invalid key type");if(r.n==null)throw new I("invalid key modulus");return T(r.n,"base64url").length*8}var _s=class extends Vr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,is(e);let n=qn(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 o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),wt(s)}update(e){return $r(this),this.iHash.update(e),this}digestInto(e){$r(this),Ue(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:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},il=(r,e,t)=>new _s(r,e).update(t).digest();il.create=(r,e)=>new _s(r,e);var qd=(r,e)=>(r+(r>=0?e:-e)/Vd)/e;function _y(r,e,t){let[[n,o],[s,i]]=e,a=qd(i*r,t),c=qd(-o*r,t),l=r-a*n-c*s,f=-a*o-c*i,u=l<Tt,d=f<Tt;u&&(l=-l),d&&(f=-f);let h=Ht(Math.ceil(ds(t)/2))+nn;if(l<Tt||l>=h||f<Tt||f>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:d,k2:f}}function cl(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function al(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Et(t.lowS,"lowS"),Et(t.prehash,"prehash"),t.format!==void 0&&cl(t.format),t}var ll=class extends Error{constructor(e=""){super(e)}},It={Err:ll,_tlv:{encode:(r,e)=>{let{Err:t}=It;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Hn(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Hn(o.length/2|128):"";return Hn(r)+s+o+e},decode(r,e){let{Err:t}=It,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let f of l)i=i<<8|f;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=It;if(r<Tt)throw new e("integer: negative integers are not allowed");let t=Hn(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=It;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 zr(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=It,o=Q("signature",r),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l: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(l)}},hexFromSig(r){let{_tlv:e,_int:t}=It,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},Tt=BigInt(0),nn=BigInt(1),Vd=BigInt(2),As=BigInt(3),Ay=BigInt(4);function rn(r,e){let{BYTES:t}=r,n;if(typeof e=="bigint")n=e;else{let o=Q("private key",e);try{n=r.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${t}, got ${typeof e}`)}}if(!r.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Cy(r,e={}){let t=ps("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;Gt(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=zd(n,o);function f(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(R,x,y){let{x:b,y:S}=x.toAffine(),A=n.toBytes(b);if(Et(y,"isCompressed"),y){f();let k=!n.isOdd(S);return De($d(k),A)}else return De(Uint8Array.of(4),A,n.toBytes(S))}function d(R){Ve(R,void 0,"Point");let{publicKey:x,publicKeyUncompressed:y}=l,b=R.length,S=R[0],A=R.subarray(1);if(b===x&&(S===2||S===3)){let k=n.fromBytes(A);if(!n.isValid(k))throw new Error("bad point: is not on curve, wrong x");let P=m(k),L;try{L=n.sqrt(P)}catch(oe){let J=oe instanceof Error?": "+oe.message:"";throw new Error("bad point: is not on curve, sqrt error"+J)}f();let B=n.isOdd(L);return(S&1)===1!==B&&(L=n.neg(L)),{x:k,y:L}}else if(b===y&&S===4){let k=n.BYTES,P=n.fromBytes(A.subarray(0,k)),L=n.fromBytes(A.subarray(k,k*2));if(!w(P,L))throw new Error("bad point: is not on curve");return{x:P,y:L}}else throw new Error(`bad point: got length ${b}, expected compressed=${x} or uncompressed=${y}`)}let h=e.toBytes||u,p=e.fromBytes||d;function m(R){let x=n.sqr(R),y=n.mul(x,R);return n.add(n.add(y,n.mul(R,s.a)),s.b)}function w(R,x){let y=n.sqr(x),b=m(R);return n.eql(y,b)}if(!w(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let g=n.mul(n.pow(s.a,As),Ay),_=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(g,_)))throw new Error("bad curve params: a or b");function E(R,x,y=!1){if(!n.isValid(x)||y&&n.is0(x))throw new Error(`bad point coordinate ${R}`);return x}function C(R){if(!(R instanceof v))throw new Error("ProjectivePoint expected")}function O(R){if(!c||!c.basises)throw new Error("no endo");return _y(R,c.basises,o.ORDER)}let V=Hr((R,x)=>{let{X:y,Y:b,Z:S}=R;if(n.eql(S,n.ONE))return{x:y,y:b};let A=R.is0();x==null&&(x=A?n.ONE:n.inv(S));let k=n.mul(y,x),P=n.mul(b,x),L=n.mul(S,x);if(A)return{x:n.ZERO,y:n.ZERO};if(!n.eql(L,n.ONE))throw new Error("invZ was invalid");return{x:k,y:P}}),$=Hr(R=>{if(R.is0()){if(e.allowInfinityPoint&&!n.is0(R.Y))return;throw new Error("bad point: ZERO")}let{x,y}=R.toAffine();if(!n.isValid(x)||!n.isValid(y))throw new Error("bad point: x or y not field elements");if(!w(x,y))throw new Error("bad point: equation left != right");if(!R.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function N(R,x,y,b,S){return y=new v(n.mul(y.X,R),y.Y,y.Z),x=jn(b,x),y=jn(S,y),x.add(y)}class v{constructor(x,y,b){this.X=E("x",x),this.Y=E("y",y,!0),this.Z=E("z",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(x){let{x:y,y:b}=x||{};if(!x||!n.isValid(y)||!n.isValid(b))throw new Error("invalid affine point");if(x instanceof v)throw new Error("projective point not allowed");return n.is0(y)&&n.is0(b)?v.ZERO:new v(y,b,n.ONE)}static fromBytes(x){let y=v.fromAffine(p(Ve(x,void 0,"point")));return y.assertValidity(),y}static fromHex(x){return v.fromBytes(Q("pointHex",x))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(x=8,y=!0){return F.createCache(this,x),y||this.multiply(As),this}assertValidity(){$(this)}hasEvenY(){let{y:x}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(x)}equals(x){C(x);let{X:y,Y:b,Z:S}=this,{X:A,Y:k,Z:P}=x,L=n.eql(n.mul(y,P),n.mul(A,S)),B=n.eql(n.mul(b,P),n.mul(k,S));return L&&B}negate(){return new v(this.X,n.neg(this.Y),this.Z)}double(){let{a:x,b:y}=s,b=n.mul(y,As),{X:S,Y:A,Z:k}=this,P=n.ZERO,L=n.ZERO,B=n.ZERO,q=n.mul(S,S),oe=n.mul(A,A),J=n.mul(k,k),G=n.mul(S,A);return G=n.add(G,G),B=n.mul(S,k),B=n.add(B,B),P=n.mul(x,B),L=n.mul(b,J),L=n.add(P,L),P=n.sub(oe,L),L=n.add(oe,L),L=n.mul(P,L),P=n.mul(G,P),B=n.mul(b,B),J=n.mul(x,J),G=n.sub(q,J),G=n.mul(x,G),G=n.add(G,B),B=n.add(q,q),q=n.add(B,q),q=n.add(q,J),q=n.mul(q,G),L=n.add(L,q),J=n.mul(A,k),J=n.add(J,J),q=n.mul(J,G),P=n.sub(P,q),B=n.mul(J,oe),B=n.add(B,B),B=n.add(B,B),new v(P,L,B)}add(x){C(x);let{X:y,Y:b,Z:S}=this,{X:A,Y:k,Z:P}=x,L=n.ZERO,B=n.ZERO,q=n.ZERO,oe=s.a,J=n.mul(s.b,As),G=n.mul(y,A),se=n.mul(b,k),he=n.mul(S,P),Be=n.add(y,b),ie=n.add(A,k);Be=n.mul(Be,ie),ie=n.add(G,se),Be=n.sub(Be,ie),ie=n.add(y,S);let ve=n.add(A,P);return ie=n.mul(ie,ve),ve=n.add(G,he),ie=n.sub(ie,ve),ve=n.add(b,S),L=n.add(k,P),ve=n.mul(ve,L),L=n.add(se,he),ve=n.sub(ve,L),q=n.mul(oe,ie),L=n.mul(J,he),q=n.add(L,q),L=n.sub(se,q),q=n.add(se,q),B=n.mul(L,q),se=n.add(G,G),se=n.add(se,G),he=n.mul(oe,he),ie=n.mul(J,ie),se=n.add(se,he),he=n.sub(G,he),he=n.mul(oe,he),ie=n.add(ie,he),G=n.mul(se,ie),B=n.add(B,G),G=n.mul(ve,ie),L=n.mul(Be,L),L=n.sub(L,G),G=n.mul(Be,se),q=n.mul(ve,q),q=n.add(q,G),new v(L,B,q)}subtract(x){return this.add(x.negate())}is0(){return this.equals(v.ZERO)}multiply(x){let{endo:y}=e;if(!o.isValidNot0(x))throw new Error("invalid scalar: out of range");let b,S,A=k=>F.cached(this,k,P=>_t(v,P));if(y){let{k1neg:k,k1:P,k2neg:L,k2:B}=O(x),{p:q,f:oe}=A(P),{p:J,f:G}=A(B);S=oe.add(G),b=N(y.beta,q,J,k,L)}else{let{p:k,f:P}=A(x);b=k,S=P}return _t(v,[b,S])[0]}multiplyUnsafe(x){let{endo:y}=e,b=this;if(!o.isValid(x))throw new Error("invalid scalar: out of range");if(x===Tt||b.is0())return v.ZERO;if(x===nn)return b;if(F.hasCache(this))return this.multiply(x);if(y){let{k1neg:S,k1:A,k2neg:k,k2:P}=O(x),{p1:L,p2:B}=pd(v,b,A,P);return N(y.beta,L,B,S,k)}else return F.unsafe(b,x)}multiplyAndAddUnsafe(x,y,b){let S=this.multiplyUnsafe(y).add(x.multiplyUnsafe(b));return S.is0()?void 0:S}toAffine(x){return V(this,x)}isTorsionFree(){let{isTorsionFree:x}=e;return i===nn?!0:x?x(v,this):F.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:x}=e;return i===nn?this:x?x(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(x=!0){return Et(x,"isCompressed"),this.assertValidity(),h(v,this,x)}toHex(x=!0){return Xe(this.toBytes(x))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(x=!0){return this.toBytes(x)}_setWindowSize(x){this.precompute(x)}static normalizeZ(x){return _t(v,x)}static msm(x,y){return jr(v,o,x,y)}static fromPrivateKey(x){return v.BASE.multiply(rn(o,x))}}v.BASE=new v(s.Gx,s.Gy,n.ONE),v.ZERO=new v(n.ZERO,n.ONE,n.ZERO),v.Fp=n,v.Fn=o;let D=o.BITS,F=new Wr(v,e.endo?Math.ceil(D/2):D);return v.BASE.precompute(8),v}function $d(r){return Uint8Array.of(r?2:3)}function zd(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Iy(r,e={}){let{Fn:t}=r,n=e.randomBytes||qt,o=Object.assign(zd(r.Fp,t),{seed:wc(t.ORDER)});function s(h){try{return!!rn(t,h)}catch{return!1}}function i(h,p){let{publicKey:m,publicKeyUncompressed:w}=o;try{let g=h.length;return p===!0&&g!==m||p===!1&&g!==w?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return xc(Ve(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(rn(t,h)).toBytes(p)}function l(h){let p=a(h);return{secretKey:p,publicKey:c(p)}}function f(h){if(typeof h=="bigint")return!1;if(h instanceof r)return!0;let{secretKey:p,publicKey:m,publicKeyUncompressed:w}=o;if(t.allowedLengths||p===m)return;let g=Q("key",h).length;return g===m||g===w}function u(h,p,m=!0){if(f(h)===!0)throw new Error("first arg must be private key");if(f(p)===!1)throw new Error("second arg must be public key");let w=rn(t,h);return r.fromHex(p).multiply(w).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>rn(t,h),precompute(h=8,p=r.BASE){return p.precompute(h,!1)}},lengths:o})}function Ty(r,e,t={}){is(e),Gt(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let n=t.randomBytes||qt,o=t.hmac||((y,...b)=>il(e,y,De(...b))),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:f,getSharedSecret:u,utils:d,lengths:h}=Iy(r,t),p={prehash:!1,lowS:typeof t.lowS=="boolean"?t.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function w(y){let b=a>>nn;return y>b}function g(y,b){if(!i.isValidNot0(b))throw new Error(`invalid signature ${y}: out of range 1..Point.Fn.ORDER`);return b}function _(y,b){cl(b);let S=h.signature,A=b==="compact"?S:b==="recovered"?S+1:void 0;return Ve(y,A,`${b} signature`)}class E{constructor(b,S,A){this.r=g("r",b),this.s=g("s",S),A!=null&&(this.recovery=A),Object.freeze(this)}static fromBytes(b,S=m){_(b,S);let A;if(S==="der"){let{r:B,s:q}=It.toSig(Ve(b));return new E(B,q)}S==="recovered"&&(A=b[0],S="compact",b=b.subarray(1));let k=i.BYTES,P=b.subarray(0,k),L=b.subarray(k,k*2);return new E(i.fromBytes(P),i.fromBytes(L),A)}static fromHex(b,S){return this.fromBytes(or(b),S)}addRecoveryBit(b){return new E(this.r,this.s,b)}recoverPublicKey(b){let S=s.ORDER,{r:A,s:k,recovery:P}=this;if(P==null||![0,1,2,3].includes(P))throw new Error("recovery id invalid");if(a*Vd<S&&P>1)throw new Error("recovery id is ambiguous for h>1 curve");let B=P===2||P===3?A+a:A;if(!s.isValid(B))throw new Error("recovery id 2 or 3 invalid");let q=s.toBytes(B),oe=r.fromBytes(De($d((P&1)===0),q)),J=i.inv(B),G=O(Q("msgHash",b)),se=i.create(-G*J),he=i.create(k*J),Be=r.BASE.multiplyUnsafe(se).add(oe.multiplyUnsafe(he));if(Be.is0())throw new Error("point at infinify");return Be.assertValidity(),Be}hasHighS(){return w(this.s)}toBytes(b=m){if(cl(b),b==="der")return or(It.hexFromSig(this));let S=i.toBytes(this.r),A=i.toBytes(this.s);if(b==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return De(Uint8Array.of(this.recovery),S,A)}return De(S,A)}toHex(b){return Xe(this.toBytes(b))}assertValidity(){}static fromCompact(b){return E.fromBytes(Q("sig",b),"compact")}static fromDER(b){return E.fromBytes(Q("sig",b),"der")}normalizeS(){return this.hasHighS()?new E(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return Xe(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return Xe(this.toBytes("compact"))}}let C=t.bits2int||function(b){if(b.length>8192)throw new Error("input is too large");let S=zr(b),A=b.length*8-c;return A>0?S>>BigInt(A):S},O=t.bits2int_modN||function(b){return i.create(C(b))},V=Ht(c);function $(y){return Gn("num < 2^"+c,y,Tt,V),i.toBytes(y)}function N(y,b){return Ve(y,void 0,"message"),b?Ve(e(y),void 0,"prehashed message"):y}function v(y,b,S){if(["recovered","canonical"].some(se=>se in S))throw new Error("sign() legacy options not supported");let{lowS:A,prehash:k,extraEntropy:P}=al(S,p);y=N(y,k);let L=O(y),B=rn(i,b),q=[$(B),$(L)];if(P!=null&&P!==!1){let se=P===!0?n(h.secretKey):P;q.push(Q("extraEntropy",se))}let oe=De(...q),J=L;function G(se){let he=C(se);if(!i.isValidNot0(he))return;let Be=i.inv(he),ie=r.BASE.multiply(he).toAffine(),ve=i.create(ie.x);if(ve===Tt)return;let $o=i.create(Be*i.create(J+ve*B));if($o===Tt)return;let ju=(ie.x===ve?0:2)|Number(ie.y&nn),Xu=$o;return A&&w($o)&&(Xu=i.neg($o),ju^=1),new E(ve,Xu,ju)}return{seed:oe,k2sig:G}}function D(y,b,S={}){y=Q("message",y);let{seed:A,k2sig:k}=v(y,b,S);return Qf(e.outputLen,i.BYTES,o)(A,k)}function F(y){let b,S=typeof y=="string"||bt(y),A=!S&&y!==null&&typeof y=="object"&&typeof y.r=="bigint"&&typeof y.s=="bigint";if(!S&&!A)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(A)b=new E(y.r,y.s);else if(S){try{b=E.fromBytes(Q("sig",y),"der")}catch(k){if(!(k instanceof It.Err))throw k}if(!b)try{b=E.fromBytes(Q("sig",y),"compact")}catch{return!1}}return b||!1}function R(y,b,S,A={}){let{lowS:k,prehash:P,format:L}=al(A,p);if(S=Q("publicKey",S),b=N(Q("message",b),P),"strict"in A)throw new Error("options.strict was renamed to lowS");let B=L===void 0?F(y):E.fromBytes(Q("sig",y),L);if(B===!1)return!1;try{let q=r.fromBytes(S);if(k&&B.hasHighS())return!1;let{r:oe,s:J}=B,G=O(b),se=i.inv(J),he=i.create(G*se),Be=i.create(oe*se),ie=r.BASE.multiplyUnsafe(he).add(q.multiplyUnsafe(Be));return ie.is0()?!1:i.create(ie.x)===oe}catch{return!1}}function x(y,b,S={}){let{prehash:A}=al(S,p);return b=N(b,A),E.fromBytes(y,"recovered").recoverPublicKey(b).toBytes()}return Object.freeze({keygen:l,getPublicKey:f,getSharedSecret:u,utils:d,lengths:h,Point:r,sign:D,verify:R,recoverPublicKey:x,Signature:E,hash:e})}function Py(r){let e={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,n=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0,o=$e(e.n,{BITS:r.nBitLength,allowedLengths:n,modFromBytes:r.wrapPrivateKey}),s={Fp:t,Fn:o,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:e,curveOpts:s}}function Ly(r){let{CURVE:e,curveOpts:t}=Py(r),n={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:e,curveOpts:t,hash:r.hash,ecdsaOpts:n}}function Dy(r,e){let t=e.Point;return Object.assign({},e,{ProjectivePoint:t,CURVE:Object.assign({},r,hs(t.Fn.ORDER,t.Fn.BITS))})}function Hd(r){let{CURVE:e,curveOpts:t,hash:n,ecdsaOpts:o}=Ly(r),s=Cy(e,t),i=Ty(s,n,o);return Dy(r,i)}function Gd(r,e){let t=n=>Hd({...r,hash:n});return{...t(e),create:t}}var fl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Ry={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var Wd=BigInt(2);function ky(r){let e=fl.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,f=l*l*r%e,u=ne(f,t,e)*f%e,d=ne(u,t,e)*f%e,h=ne(d,Wd,e)*l%e,p=ne(h,o,e)*h%e,m=ne(p,s,e)*p%e,w=ne(m,a,e)*m%e,g=ne(w,c,e)*w%e,_=ne(g,a,e)*m%e,E=ne(_,t,e)*f%e,C=ne(E,i,e)*p%e,O=ne(C,n,e)*l%e,V=ne(O,Wd,e);if(!ul.eql(ul.sqr(V),r))throw new Error("Cannot find square root");return V}var ul=$e(fl.p,{sqrt:ky}),ot=Gd({...fl,Fp:ul,lowS:!0,endo:Ry},us);function jd(r,e,t){let n=qr.digest(e instanceof Uint8Array?e:e.subarray());if(Zr(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),ot.sign(o,r).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Yn(String(o))});try{return ot.sign(n.digest,r).toDERRawBytes()}catch(o){throw new Yn(String(o))}}function Xd(r,e,t,n){let o=qr.digest(t instanceof Uint8Array?t:t.subarray());if(Zr(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),ot.verify(e,s,r))).catch(s=>{throw s.name==="AbortError"?s:new Zn(String(s))});try{return n?.signal?.throwIfAborted(),ot.verify(e,o.digest,r)}catch(s){throw new Zn(String(s))}}var io=class{type="secp256k1";raw;_key;constructor(e){this._key=Qd(e),this.raw=Yd(this._key)}toMultihash(){return Je.digest(je(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}verify(e,t,n){return Xd(this._key,t,e,n)}},Cs=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=Zd(e),this.publicKey=new io(t??Jd(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Y(this.raw,e.raw)}sign(e,t){return jd(this.raw,e,t)}};function dl(r){return new io(r)}async function eh(){let r=Oy();return new Cs(r)}function Yd(r){return ot.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Zd(r){try{return ot.getPublicKey(r,!0),r}catch(e){throw new Tn(String(e))}}function Qd(r){try{return ot.ProjectivePoint.fromHex(r),r}catch(e){throw new Or(String(e))}}function Jd(r){try{return ot.getPublicKey(r,!0)}catch(e){throw new Tn(String(e))}}function Oy(){return ot.utils.randomPrivateKey()}async function th(r,e){if(r==="Ed25519")return Ad();if(r==="secp256k1")return eh();if(r==="RSA")return sl(Ny(e));if(r==="ECDSA")return kf(My(e));throw new Bt}function on(r,e){let{Type:t,Data:n}=ut.decode(r),o=n??new Uint8Array;switch(t){case fe.RSA:return rl(o,e);case fe.Ed25519:return Lc(o);case fe.secp256k1:return dl(o);case fe.ECDSA:return sc(o);default:throw new Bt}}function rh(r){let{Type:e,Data:t}=ut.decode(r.digest),n=t??new Uint8Array;switch(e){case fe.Ed25519:return Lc(n);case fe.secp256k1:return dl(n);case fe.ECDSA:return sc(n);default:throw new Bt}}function je(r){return ut.encode({Type:fe[r.type],Data:r.raw})}function Ny(r){return r==null?2048:parseInt(r,10)}function My(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new I("Unsupported curve, should be P-256, P-384 or P-521")}var nh=Symbol.for("nodejs.util.inspect.custom"),By=114,ao=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()})`}[Jo]=!0;toString(){return this.string==null&&(this.string=ee.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ue.createV1(By,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Y(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Y(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[nh](){return`PeerId(${this.toString()})`}},co=class extends ao{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},lo=class extends ao{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},uo=class extends ao{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Fy=2336,fo=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Je.digest(T(this.url))}[nh](){return`PeerId(${this.url})`}[Jo]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ue.createV1(Fy,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=K(e)),e.toString()===this.toString())}};var Uy=114,oh=2336;function ft(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=mt(ee.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return ho(ue.parse(r));if(e==null)throw new I('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=mt(e.decode(r))}return sn(t)}function hl(r){if(r.type==="Ed25519")return new lo({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new uo({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new co({multihash:r.toCID().multihash,publicKey:r});throw new Bt}function sh(r){return hl(r.publicKey)}function sn(r){if(qy(r))return new co({multihash:r});if(Ky(r))try{let e=rh(r);if(e.type==="Ed25519")return new lo({multihash:r,publicKey:e});if(e.type==="secp256k1")return new uo({multihash:r,publicKey:e})}catch{let t=K(r.digest);return new fo(new URL(t))}throw new Go("Supplied PeerID Multihash is invalid")}function ho(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Uy&&r.code!==oh)throw new Ho("Supplied PeerID CID is invalid");if(r.code===oh){let e=K(r.multihash.digest);return new fo(new URL(e))}return sn(r.multihash)}function Ky(r){return r.code===Je.code}function qy(r){return r.code===qr.code}async function ih(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new I("Private network is enforced, but no protector was provided");return r}function Vy(r,e){if(typeof r=="string")return $y(r);if(typeof r=="number")return Gy(r,e);throw Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}var Is=Vy;function $y(r){if(typeof r!="string"||r.length===0||r.length>100)throw Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function zy(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function Hy(r){let e=Math.abs(r);return e>=315576e5?hr(r,e,315576e5,"year"):e>=26298e5?hr(r,e,26298e5,"month"):e>=6048e5?hr(r,e,6048e5,"week"):e>=864e5?hr(r,e,864e5,"day"):e>=36e5?hr(r,e,36e5,"hour"):e>=6e4?hr(r,e,6e4,"minute"):e>=1e3?hr(r,e,1e3,"second"):`${r} ms`}function Gy(r,e){if(typeof r!="number"||!Number.isFinite(r))throw Error("Value provided to ms.format() must be of type number.");return e?.long?Hy(r):zy(r)}function hr(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function pl(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Is,t.destroy=l,Object.keys(r).forEach(f=>{t[f]=r[f]}),t.names=[],t.skips=[],t.formatters={};function e(f){let u=0;for(let d=0;d<f.length;d++)u=(u<<5)-u+f.charCodeAt(d),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(f){let u,d=null,h,p;function m(...w){if(!m.enabled)return;let g=m,_=Number(new Date),E=_-(u||_);g.diff=E,g.prev=u,g.curr=_,u=_,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let C=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(V,$)=>{if(V==="%%")return"%";C++;let N=t.formatters[$];if(typeof N=="function"){let v=w[C];V=N.call(g,v),w.splice(C,1),C--}return V}),t.formatArgs.call(g,w),(g.log||t.log).apply(g,w)}return m.namespace=f,m.useColors=t.useColors(),m.color=t.selectColor(f),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==t.namespaces&&(h=t.namespaces,p=t.enabled(f)),p),set:w=>{d=w}}),typeof t.init=="function"&&t.init(m),m}function n(f,u){let d=t(this.namespace+(typeof u>"u"?":":u)+f);return d.log=this.log,d}function o(f){t.save(f),t.namespaces=f,t.names=[],t.skips=[];let u,d=(typeof f=="string"?f:"").split(/[\s,]+/),h=d.length;for(u=0;u<h;u++)d[u]&&(f=d[u].replace(/\*/g,".*?"),f[0]==="-"?t.skips.push(new RegExp("^"+f.substr(1)+"$")):t.names.push(new RegExp("^"+f+"$")))}function s(){let f=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),f}function i(f){if(f[f.length-1]==="*")return!0;let u,d;for(u=0,d=t.skips.length;u<d;u++)if(t.skips[u].test(f))return!1;for(u=0,d=t.names.length;u<d;u++)if(t.names[u].test(f))return!0;return!1}function a(f){return f.toString().substring(2,f.toString().length-2).replace(/\.\*\?$/,"*")}function c(f){return f instanceof Error?f.stack??f.message:f}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Ts=Jy(),Wy=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function jy(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function Xy(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Is(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var Yy=console.debug??console.log??(()=>{});function Zy(r){try{r?Ts?.setItem("debug",r):Ts?.removeItem("debug")}catch{}}function Qy(){let r;try{r=Ts?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Jy(){try{return localStorage}catch{}}function e0(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var ah=pl({formatArgs:Xy,save:Zy,load:Qy,useColors:jy,setupFormatters:e0,colors:Wy,storage:Ts,log:Yy});var qe=ah;qe.formatters.b=r=>r==null?"undefined":ee.baseEncode(r);qe.formatters.t=r=>r==null?"undefined":We.baseEncode(r);qe.formatters.m=r=>r==null?"undefined":Ga.baseEncode(r);qe.formatters.p=r=>r==null?"undefined":r.toString();qe.formatters.c=r=>r==null?"undefined":r.toString();qe.formatters.k=r=>r==null?"undefined":r.toString();qe.formatters.a=r=>r==null?"undefined":r.toString();qe.formatters.e=r=>{if(r==null)return"undefined";let e=ch(r.message),t=ch(r.stack);return e!=null&&t!=null?t.includes(e)?t:`${e}
|
|
3
|
+
${t}`:t??e??r.toString()};function t0(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Ps(){return{forComponent(r){return lh(r)}}}function lh(r){let e=t0(`${r}:trace`);return qe.enabled(`${r}:trace`)&&qe.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=qe(`${r}:trace`)),Object.assign(qe(r),{error:qe(`${r}:error`),trace:e,newScope:t=>lh(`${r}:${t}`)})}function ch(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function pr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Ls(r){let e=mt(ee.decode(`z${r}`));return sn(e)}var Ze=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 pr(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 pr(this.map.values(),e=>e.key)}values(){return pr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var mr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return pr(this.set.entries(),e=>{let t=Ls(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Ls(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return pr(this.set.values(),e=>Ls(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var ml={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},uh={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},fh=new globalThis.TextEncoder;function r0(r,e){let t=ml[e],n=uh[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function n0(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=ml[e],o=uh[e],s=r;for(;s.length>0;){let i=fh.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function gl(r,{size:e=32,utf8Buffer:t}={}){if(!ml[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 n0(r,e,t);r=fh.encode(r)}return r0(r,e)}var po={hash:r=>Number(gl(r,{size:32})),hashV:(r,e)=>o0(po.hash(r,e))};function o0(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),T(e,"base16")}var yl=64,st=class{fp;h;seed;constructor(e,t,n,o=2){if(o>yl)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=ce(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?Y(this.fp,e.fp):!1}};function gr(r,e){return Math.floor(Math.random()*(e-r))+r}var yr=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof st))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof st))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 st))throw new TypeError("Invalid Fingerprint");let t=gr(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof st))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var s0=500,mo=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??po,this.seed=e.seed??gr(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=T(e));let t=new st(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new yr(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new yr(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[gr(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new yr(this.bucketSize));for(let a=0;a<s0;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new yr(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=T(e));let t=new st(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=T(e));let t=new st(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},i0={1:.5,2:.84,4:.95,8:.98};function a0(r=.001){return r>.002?2:r>1e-5?4:8}function dh(r,e=.001){let t=a0(e),n=i0[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),yl);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var Ds=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??po,this.seed=e.seed??gr(0,Math.pow(2,10)),this.filterSeries=[new mo({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=T(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 mo({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=T(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=T(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 go(r,e=.001,t){return new Ds({...dh(r,e),...t??{}})}function z(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new I(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var Rs=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,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let d=Number.parseInt(u,e);if(!Number.isNaN(d))return d});if(f===void 0)break;if(s*=e,s+=f,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}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 o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var hh=45,c0=15,an=new Rs;function ks(r){if(!(r.length>c0))return an.new(r).parseWith(()=>an.readIPv4Addr())}function Os(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>hh))return an.new(r).parseWith(()=>an.readIPv6Addr())}function cn(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>hh)return;let t=an.new(r).parseWith(()=>an.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function ph(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function mh(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function bl(r){switch(r.length){case br:return r.join(".");case wr:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function gh(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function yh(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var br=4,wr=16,XS=parseInt("0xFFFF",16),l0=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function yo(r,e){e.length===wr&&r.length===br&&ph(e,0,11)&&(e=e.slice(12)),e.length===br&&r.length===wr&&mh(r,l0,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function bh(r,e){if(typeof e=="string"&&(e=cn(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function wl(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=br,o=ks(e);if(o==null&&(n=wr,o=Os(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=xl(s,8*n);return{network:yo(o,i),mask:i}}function xl(r,e){if(e!==8*br&&e!==8*wr)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var ln=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=wl(e));else{let n=cn(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=cn(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=xl(o,8*n.length);this.network=yo(n,this.mask)}}contains(e){return bh({network:this.network,mask:this.mask},e)}toString(){let e=gh(this.mask),t=e!==-1?String(e):yh(this.mask);return bl(this.network)+"/"+t}};function wh(r){try{let e=z(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function xh(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function bo(r){try{let e=z(r);switch(e.type){case"ip4":case"ip6":return xh(e.host);default:return!1}}catch{return!1}}function xe(r){try{return z(r),!0}catch{return!1}}function it(r){return!!ks(r)}function Ns(r){return!!Os(r)}var vh=Ca(Eh(),1),u0=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],f0=u0.map(r=>new vh.Netmask(r));function El(r){for(let e of f0)if(e.contains(r))return!0;return!1}function d0(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function h0(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return El(o)}function p0(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function m0(r){let e=r.split(":"),t=e[e.length-1];return El(t)}function g0(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function un(r){if(it(r))return El(r);if(d0(r))return h0(r);if(p0(r))return m0(r);if(Ns(r))return g0(r)}function Pt(r){try{let e=z(r);switch(e.type){case"ip4":case"ip6":return un(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function ye(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Ms=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},fn=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Ms(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 Ms(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 vl=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function dn(r={}){return y0(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 y0(r,e){e=e??{};let t=e.onEnd,n=new fn,o,s,i,a=ye(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((w,g)=>{s=_=>{s=null,n.push(_);try{w(r(n))}catch(E){g(E)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ye()})}},l=w=>s!=null?s(w):(n.push(w),o),f=w=>(n=new fn,s!=null?s({error:w}):(n.push({error:w}),o)),u=w=>{if(i)return o;if(e?.objectMode!==!0&&w?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:w})},d=w=>i?o:(i=!0,w!=null?f(w):l({done:!0})),h=()=>(n=new fn,d(),{done:!0}),p=w=>(d(w),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:u,end:d,get readableLength(){return n.size},onEmpty:async w=>{let g=w?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let _,E;g!=null&&(_=new Promise((C,O)=>{E=()=>{O(new vl)},g.addEventListener("abort",E)}));try{await Promise.race([a.promise,_])}finally{E!=null&&g!=null&&g?.removeEventListener("abort",E)}}},t==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(w){return m.throw(w),t!=null&&(t(w),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(w){return m.end(w),t!=null&&(t(w),t=void 0),o},get readableLength(){return m.readableLength},onEmpty:w=>m.onEmpty(w)},o}var xo=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Sl=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Sh=r=>globalThis.DOMException===void 0?new Sl(r):new DOMException(r),_h=r=>{let e=r.reason===void 0?Sh("This operation was aborted."):r.reason;return e instanceof Error?e:Sh(e)};function Eo(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((f,u)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&u(_h(h)),a=()=>{u(_h(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(f,u);return}let d=new xo;i=s.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(h){u(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?f():o instanceof Error?u(o):(d.message=o??`Promise timed out after ${t} milliseconds`,u(d))},t),(async()=>{try{f(await r)}catch(h){u(h)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var b0=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function w0(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:f}=b0(r),u=(...h)=>{let p=t.multiArgs?h:h[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),s(c)))},d=h=>{n(),i(h)};n=()=>{for(let h of a)f(h,u);for(let h of t.rejectionEvents)f(h,d)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)l(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Eo(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function at(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=w0(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function vo(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Bs=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},Fs=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},xr=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function x0(r){return r.reason}async function Lt(r,e,t){if(e==null)return r;let n=t?.translateError??x0;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var Us=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ye(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Qe)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function E0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ks=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=E0(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,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 Qe),this.cleanup())}async join(e={}){let t=new Us(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 Lt(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 hn=class extends Pe{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,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=[],this.emitEmpty=vo(this.emitEmpty.bind(this),1),this.emitIdle=vo(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!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 Fs;let n=new Ks(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Qe)}),this.clear()}async onEmpty(e){this.size!==0&&await at(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await at(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await at(this,"idle",e)}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=dn({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new Qe("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};function Dt(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var pn=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var v0=1.2,S0=2,_0=5e3,A0=6e4,C0=5e3,qs=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??C0;this.success=new pn(t),this.failure=new pn(t),this.next=new pn(t),this.failureMultiplier=e.failureMultiplier??S0,this.timeoutMultiplier=e.timeoutMultiplier??v0,this.minTimeout=e.minTimeout??_0,this.maxTimeout=e.maxTimeout??A0,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=Dt([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Ee=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Rt=class extends Error{static name="ValidationError";name="ValidationError"},Vs=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},$s=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Al(r){return e=>K(e,r)}function Cl(r){return e=>T(e,r)}function mn(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Er(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function Ah(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=T(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Er(n);return et([t,o],t.length+o.length)}function Ch(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=We.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Er(n);return et([t,o],t.length+o.length)}function Il(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=K(e,"base32"),o=mn(t);return`${n}:${o}`}var Tl=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new Ee("Invalid byte value in IP address");e[n]=o}),e},Ih=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=it(t[n]),i;s&&(i=Tl(t[n]),t[n]=K(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,K(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new Ee("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},Th=function(r){if(r.byteLength!==4)throw new Ee("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},Ph=function(r){if(r.byteLength!==16)throw new Ee("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new Ee(`Invalid IPv6 address "${t}"`)}};function Lh(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new Ee(`Invalid IPv6 address "${r}"`)}}var _l=Object.values(Mn).map(r=>r.decoder),I0=(function(){let r=_l[0].or(_l[1]);return _l.slice(2).forEach(e=>r=r.or(e)),r})();function Dh(r){return I0.decode(r)}function Rh(r){return e=>r.encoder.encode(e)}function T0(r){if(parseInt(r).toString()!==r)throw new Rt("Value must be an integer")}function P0(r){if(r<0)throw new Rt("Value must be a positive integer, or zero")}function L0(r){return e=>{if(e>r)throw new Rt(`Value must be smaller than or equal to ${r}`)}}function D0(...r){return e=>{for(let t of r)t(e)}}var So=D0(T0,P0,L0(65535));var be=-1,Pl=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new $s(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},kt=new Pl,G0=[{code:4,name:"ip4",size:32,valueToBytes:Tl,bytesToValue:Th,validate:r=>{if(!it(r))throw new Rt(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Er,bytesToValue:mn,validate:So},{code:273,name:"udp",size:16,valueToBytes:Er,bytesToValue:mn,validate:So},{code:33,name:"dccp",size:16,valueToBytes:Er,bytesToValue:mn,validate:So},{code:41,name:"ip6",size:128,valueToBytes:Ih,bytesToValue:Ph,stringToValue:Lh,validate:r=>{if(!Ns(r))throw new Rt(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:be},{code:43,name:"ipcidr",size:8,bytesToValue:Al("base10"),valueToBytes:Cl("base10")},{code:53,name:"dns",size:be},{code:54,name:"dns4",size:be},{code:55,name:"dns6",size:be},{code:56,name:"dnsaddr",size:be},{code:132,name:"sctp",size:16,valueToBytes:Er,bytesToValue:mn,validate:So},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:be,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:be,bytesToValue:Al("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Cl("base58btc")(r):ue.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Il,valueToBytes:Ah},{code:445,name:"onion3",size:296,bytesToValue:Il,valueToBytes:Ch},{code:446,name:"garlic64",size:be},{code:447,name:"garlic32",size:be},{code:448,name:"tls"},{code:449,name:"sni",size:be},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:be,bytesToValue:Rh(Wa),valueToBytes:Dh},{code:480,name:"http"},{code:481,name:"http-path",size:be,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:be}];G0.forEach(r=>{kt.addProtocol(r)});function kh(r){let e=[],t=0;for(;t<r.length;){let n=lr(r,t),o=kt.getProtocol(n),s=ge(n),i=W0(o,r,t+s),a=0;i>0&&o.size===be&&(a=ge(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let f=t+s+a,u=r.subarray(f,f+i);l.value=o.bytesToValue?.(u)??K(u)}e.push(l),t+=c}return e}function Oh(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=kt.getProtocol(n.code),s=ge(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??T(n.value),a=i.byteLength,o.size===be&&(c=ge(a)));let l=new Uint8Array(s+c+a),f=0;Qr(n.code,l,f),f+=s,i!=null&&(o.size===be&&(Qr(a,l,f),f+=c),l.set(i,f)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return et(t,e)}function Nh(r){if(r.charAt(0)!=="/")throw new Ee('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=kt.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new Ee(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new Ee(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new Ee("Incomplete multiaddr");return e}function Mh(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=kt.getProtocol(e.code);if(t==null)throw new Ee(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function W0(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:lr(e,t)}var j0=Symbol.for("nodejs.util.inspect.custom"),$l=Symbol.for("@multiformats/multiaddr");function X0(r){if(r==null&&(r="/"),Qt(r))return r.getComponents();if(r instanceof Uint8Array)return kh(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),Nh(r);if(Array.isArray(r))return r;throw new Ee("Must be a string, Uint8Array, Component[], or another Multiaddr")}var js=class r{[$l]=!0;#e;#n;#t;constructor(e="/",t={}){this.#e=X0(e),t.validate!==!1&&Y0(this)}get bytes(){return this.#t==null&&(this.#t=Oh(this.#e)),this.#t}toString(){return this.#n==null&&(this.#n=Mh(this.#e)),this.#n}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Vs(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Y(this.bytes,e.bytes)}[j0](){return`Multiaddr(${this.toString()})`}};function Y0(r){r.getComponents().forEach(e=>{let t=kt.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function Qt(r){return!!r?.[$l]}function j(r){return new js(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 Bh(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new Xs(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new Xs(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var zl=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ye(),this.haveNext=ye()}[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=ye(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ye(),await Bh(this.readNext.promise,t?.signal,t)}};function Fh(){return new zl}function Z0(r){return r[Symbol.asyncIterator]!=null}async function Q0(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*J0(r){let e=new AbortController,t=Fh();Q0(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*eb(r){for(let e of r)yield*e}function tb(...r){let e=[];for(let t of r)Z0(t)||e.push(t);return e.length===r.length?eb(e):J0(r)}var En=tb;var rb=4194304,Ys=class extends Error{static name="UnwrappedError";name="UnwrappedError"},Gl=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Wl=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},jl=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function nb(r){return typeof r?.closeRead=="function"}function ob(r){return typeof r?.close=="function"}function Hl(r){return nb(r)?r.readStatus==="closing"||r.readStatus==="closed":ob(r)?r.status!=="open":!1}function sb(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Xl(r,e){let t=e?.maxBufferSize??rb,n=new Z,o=Promise.withResolvers(),s=!1;if(!sb(r))throw new I("Argument should be a Stream or a Multiaddr");let i=f=>{if(n.append(f.data),n.byteLength>t){let u=n.byteLength;n.consume(n.byteLength),o.reject(new Error(`Read buffer overflow - ${u} > ${t}`))}o.resolve()};r.addEventListener("message",i);let a=f=>{f.error!=null?o.reject(f.error):o.resolve()};r.addEventListener("close",a);let c=()=>{o.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(f){if(s===!0)throw new Ys("Stream was unwrapped");if(Hl(r)){if(f?.bytes==null)return null;if(n.byteLength<f.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,f.bytes),new xr(`Unexpected EOF - stream closed after reading ${n.byteLength}/${f.bytes} bytes`)}let u=f?.bytes??1;for(;;){if(n.byteLength>=u){o.resolve();break}if(await Lt(o.promise,f?.signal),Hl(r)){if(n.byteLength===0&&f?.bytes==null)return null;break}o=Promise.withResolvers()}let d=f?.bytes??n.byteLength;if(n.byteLength<d){if(Hl(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,d),new xr(`Unexpected EOF - stream closed while reading ${n.byteLength}/${d} bytes`);return l.read(f)}let h=n.sublist(0,d);return n.consume(d),h},async write(f,u){if(s===!0)throw new Ys("Stream was unwrapped");r.send(f)||await at(r,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function Zs(r,e={}){let t=Xl(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=ge(e.maxDataLength));let n=e?.lengthDecoder??lr,o=e?.lengthEncoder??Xt;return{async read(i){let a=-1,c=new Z;for(;;){let f=await t.read({...i,bytes:1});if(f==null)break;c.append(f);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Gl("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new jl(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Wl(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new xr(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new xr(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new Z(o(i.byteLength),i),a)},async writeV(i,a){let c=new Z(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}var Qs=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},vn=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Js=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},_o=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ei(r){return r[Symbol.asyncIterator]!=null}function Uh(r,e){if(r.byteLength>e)throw new vn("Message length too long")}var ri=r=>{let e=ge(r),t=Se(e);return Xt(r,t),ri.bytes=e,t};ri.bytes=0;function ni(r,e){e=e??{};let t=e.lengthEncoder??ri,n=e?.maxDataLength??4194304;function*o(s){Uh(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ei(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}ni.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??ri,n=e?.maxDataLength??4194304;return Uh(r,n),new Z(t(r.byteLength),r)};var _r;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(_r||(_r={}));var Zl=r=>{let e=lr(r);return Zl.bytes=ge(e),e};Zl.bytes=0;function Yl(r,e){let t=new Z,n=_r.LENGTH,o=-1,s=e?.lengthDecoder??Zl,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===_r.LENGTH)try{if(o=s(t),o<0)throw new Qs("Invalid message length");if(o>a)throw new vn("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=_r.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new Js("Message length length too long");break}throw l}if(n===_r.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=_r.LENGTH}}}return ei(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _o("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new _o("Unexpected end of input")})()}Yl.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return Yl(n,{...e??{},onLength:s=>{t=s}})};var oi=class extends hn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var si=class extends hn{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var ii=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Ql}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new Bs("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},Ql=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};var Jl=class extends Map{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 Ce(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Jl({name:e,metrics:t}):n=new Map,n}var eu=class extends Ze{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 tu(r){let{name:e,metrics:t}=r,n;return t!=null?n=new eu({name:e,metrics:t}):n=new Ze,n}var Ao;(function(r){let e;r.codec=()=>(e==null&&(e=Ne((t,n,o={})=>{o.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)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={publicKey:ce(0),payloadType:ce(0),payload:ce(0),signature:ce(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.publicKey=t.bytes();break}case 2:{s.payloadType=t.bytes();break}case 3:{s.payload=t.bytes();break}case 5:{s.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>ke(t,r.codec(),n)})(Ao||(Ao={}));var ai=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var Sn=class r{static createFromProtobuf=e=>{let t=Ao.decode(e),n=on(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=Kh(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new ai("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Ao.encode({publicKey:je(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:Y(this.marshal(),e.marshal())}async validate(e,t){let n=Kh(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},Kh=(r,e,t)=>{let n=T(r),o=Xt(n.byteLength),s=Xt(e.length),i=Xt(t.length);return new Z(o,n,s,e,i,t)};var qh="libp2p-peer-record",Vh=Uint8Array.from([3,1]);var Co;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=Ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ce(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let f=s.uint32();switch(f>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(f&7);break}}}return c})),o),n.encode=s=>Oe(s,n.codec()),n.decode=(s,i)=>ke(s,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Ne((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ce(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new dr('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>Oe(n,r.codec()),r.decode=(n,o)=>ke(n,r.codec(),o)})(Co||(Co={}));function $h(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var Ar=class r{static createFromProtobuf=e=>{let t=Co.decode(e),n=sn(mt(t.peerId)),o=(t.addresses??[]).map(i=>j(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=qh;static CODEC=Vh;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Co.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!$h(this.multiaddrs,e.multiaddrs))}};function ab(r){return r[Symbol.asyncIterator]!=null}function cb(r){if(ab(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Io=cb;var He=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function ci(r,e,t,n){let o=new He(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){nu(t,"abort",u),nu(r,e,l),nu(r,s,f)}let l=d=>{try{if(n?.filter?.(d)===!1)return}catch(h){c(),a(h);return}c(),i(d)},f=d=>{if(c(),d instanceof Error){a(d);return}a(d.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},u=()=>{c(),a(o)};ru(t,"abort",u),ru(r,e,l),ru(r,s,f)})}function ru(r,e,t){r!=null&&(zh(r)?r.addEventListener(e,t):r.addListener(e,t))}function nu(r,e,t){r!=null&&(zh(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function zh(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var li=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var ui=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 Hh(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new ui(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new ui(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var fi=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new He)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function lb(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var di=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=lb(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,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 He),this.cleanup())}async join(e={}){let t=new fi(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 Hh(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)})}};function ou(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var To=class extends Pe{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=ou(this.emitEmpty.bind(this),1),this.emitIdle=ou(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!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.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new li;let n=new di(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new He)}),this.clear()}async onEmpty(e){this.size!==0&&await ci(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await ci(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await ci(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=dn({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new He("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var hi="lock:worker:request-read",pi="lock:worker:abort-read-request",mi="lock:worker:release-read",gi="lock:master:grant-read",yi="lock:master:error-read",bi="lock:worker:request-write",wi="lock:worker:abort-write-request",xi="lock:worker:release-write",Ei="lock:master:grant-write",vi="lock:master:error-write",Si="lock:worker:finalize",_i="mortice",Gh={singleProcess:!1};var su=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let f={type:l.data.type,name:l.data.name,identifier:l.data.identifier};f.type===o&&r.safeDispatchEvent(t,{detail:{name:f.name,identifier:f.identifier,handler:async()=>{e.postMessage({type:c,name:f.name,identifier:f.identifier}),await new Promise(u=>{let d=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===f.identifier&&(e.removeEventListener("message",d),u())};e.addEventListener("message",d)})},onError:u=>{e.postMessage({type:i,name:f.name,identifier:f.identifier,error:{message:u.message,name:u.name,stack:u.stack}})}}}),f.type===s&&r.safeDispatchEvent(n,{detail:{name:f.name,identifier:f.identifier}}),f.type===Si&&r.safeDispatchEvent("finalizeRequest",{detail:{name:f.name}})};var Wh=(r=10)=>Math.random().toString().substring(2,r+2);var Ai=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(_i)}readLock(e){return this.sendRequest(hi,pi,gi,yi,mi,e)}writeLock(e){return this.sendRequest(bi,wi,Ei,vi,xi,e)}finalize(){this.channel.postMessage({type:Si,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Wh();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let f=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",f,{once:!0});let u=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",f),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",f);let h=new Error;d.data.error!=null&&(h.message=d.data.error.message,h.name=d.data.error.name,h.stack=d.data.error.stack),l(h)}};this.channel.addEventListener("message",u)})}};var jh=r=>{if(r=Object.assign({},Gh,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(_i),n=new Pe;return t.addEventListener("message",su(n,t,"requestReadLock","abortReadLockRequest",hi,pi,yi,mi,gi)),t.addEventListener("message",su(n,t,"requestWriteLock","abortWriteLockRequest",bi,wi,vi,xi,Ei)),n}return new Ai(r.name)};var Cr=new Map,Po;function Xh(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function ub(r){if(Po==null&&(Po=jh(r),!Xh(Po))){let e=Po;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Cr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Cr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Cr.get(n);o?.finalize()})}return Po}async function iu(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new He)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Yh=(r,e)=>{let t=Cr.get(r);if(t!=null)return t;let n=ub(e);if(Xh(n))return t=n,Cr.set(r,t),t;let o=new To({concurrency:1}),s;return t={async readLock(i){if(s!=null)return iu(s,i);s=new To({concurrency:e.concurrency,autoStart:!1});let a=s,c=iu(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,iu(o,i)},finalize:()=>{Cr.delete(r)},queue:o},Cr.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var fb={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function au(r){let e=Object.assign({},fb,r);return Yh(e.name,e)}var Ot;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=Ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ce(0)},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>Oe(i,o.codec()),o.decode=(i,a)=>ke(i,o.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=Ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),Ii.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=Ii.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>Oe(i,o.codec()),o.decode=(i,a)=>ke(i,o.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Ne((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Ci.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new dr('Decode error - map field "addresses" had too many elements');a.addresses.push(Ci.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new dr('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new no('Decode error - map field "metadata" had too many elements');let f=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(f.key,f.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new no('Decode error - map field "tags" had too many elements');let f=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(f.key,f.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Oe(o,r.codec()),r.decode=(o,s)=>ke(o,r.codec(),s)})(Ot||(Ot={}));var Ci;(function(r){let e;r.codec=()=>(e==null&&(e=Ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),t.observed!=null&&(n.uint32(24),n.uint64Number(t.observed)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={multiaddr:ce(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.multiaddr=t.bytes();break}case 2:{s.isCertified=t.bool();break}case 3:{s.observed=t.uint64Number();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>ke(t,r.codec(),n)})(Ci||(Ci={}));var Ii;(function(r){let e;r.codec=()=>(e==null&&(e=Ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.value=t.uint32();break}case 2:{s.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>ke(t,r.codec(),n)})(Ii||(Ii={}));function db(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=on(e.publicKey,t);return hl(n)}function Zh(r,e,t){let n=Ot.decode(e);return _n(r,n,t)}function _n(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:db(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:j(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function Qh(r,e){return hb(r.addresses,e.addresses)&&pb(r.protocols,e.protocols)&&mb(r.publicKey,e.publicKey)&&gb(r.peerRecordEnvelope,e.peerRecordEnvelope)&&yb(r.metadata,e.metadata)&&bb(r.tags,e.tags)}function hb(r,e){return ep(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!Y(t.multiaddr,n.multiaddr)))}function pb(r,e){return ep(r,e,(t,n)=>t===n)}function mb(r,e){return Jh(r,e)}function gb(r,e){return Jh(r,e)}function yb(r,e){return tp(r,e,(t,n)=>Y(t,n))}function bb(r,e){return tp(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function Jh(r,e){return r==null&&e==null?!0:r!=null&&e!=null?Y(r,e):!1}function ep(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function tp(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var Nt="/",rp=new TextEncoder().encode(Nt),Ti=rp[0],Ir=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=T(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Ti)throw new Error("Invalid key")}toString(e="utf8"){return K(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Nt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=rp),this._buf[0]!==Ti){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Ti,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Ti;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Nt).slice(1)}type(){return wb(this.baseNamespace())}name(){return xb(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Nt)||(e+=Nt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Nt):new r(e.slice(0,-1).join(Nt))}child(e){return this.toString()===Nt?e:e.toString()===Nt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...Eb(e.map(t=>t.namespaces()))])}};function wb(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function xb(r){let e=r.split(":");return e[e.length-1]}function Eb(r){return[].concat(...r)}var cu="/peers/";function Lo(r){if(!Ft(r)||r.type==null)throw new I("Invalid PeerId");let e=r.toCID().toString();return new Ir(`${cu}${e}`)}async function np(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=j(i.multiaddr)),!Qt(i.multiaddr))throw new I("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(j(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function Li(r,e,t,n){if(e==null)throw new I("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new I("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new I("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Pi(d,{validate:op})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Pi(d,{validate:sp,map:ip})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=Pi([...a.entries()],{validate:op})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,m]of d)m==null?h.delete(p):h.set(p,m);c=Pi([...h.entries()],{validate:sp,map:ip})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let f;o?.id.publicKey!=null?f=je(o.id.publicKey):e.publicKey!=null?f=je(e.publicKey):r.publicKey!=null&&(f=je(r.publicKey));let u={addresses:await np(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:f,peerRecordEnvelope:l};return u.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(h=>Y(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete u.publicKey,u}function Pi(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function op(r,e){if(typeof r!="string")throw new I("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new I("Metadata value must be a Uint8Array")}function sp(r,e){if(typeof r!="string")throw new I("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new I("Tag value must be an integer");if(e.value<0||e.value>100)throw new I("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new I("Tag ttl must be an integer");if(e.ttl<0)throw new I("Tag ttl must be between greater than 0")}}function ip(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function ap(r){let e=r.toString().split("/")[2],t=ue.parse(e,We);return ho(t)}function lu(r,e,t){let n=ap(r);return Zh(n,e,t)}function vb(r,e){return{prefix:cu,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(lu(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(lu(n.key,n.value,e),lu(o.key,o.value,e)))}}var Di=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=tu({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:au({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(Lo(e),t)}async load(e,t){let n=Lo(e),o=await this.datastore.get(n,t),s=Ot.decode(o);if(this.#t(e,s))throw await this.datastore.delete(n,t),new tr;return _n(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await Li(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#n(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await Li(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#n(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await Li(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#n(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(vb(e??{},this.maxAddressAge),e)){let o=ap(t);if(o.equals(this.peerId))continue;let s=Ot.decode(n);if(this.#t(o,s)){await this.datastore.delete(t,e);continue}yield _n(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=Lo(e),o=await this.datastore.get(n,t),s=Ot.decode(o);if(this.#t(e,s))throw await this.datastore.delete(n,t),new tr;return{peerPB:s,peer:_n(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#n(e,t,n,o){t.updated=Date.now();let s=Ot.encode(t);return await this.datastore.put(Lo(e),s,o),{peer:_n(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!Qh(t,n.peerPB)}}#t(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var uu=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new Di(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return Io(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=Ft(t)?t:Ft(t?.expectedPeer)?t.expectedPeer:void 0,s=Ft(t)||t===void 0?n:t,i=await Sn.openAndCertify(e,Ar.DOMAIN,s),a=ho(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Ar.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(f){if(f.name!=="NotFoundError")throw f}if(l?.peerRecordEnvelope!=null){let f=Sn.createFromProtobuf(l.peerRecordEnvelope),u=Ar.createFromProtobuf(f.payload);if(u.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(f=>({isCertified:!0,multiaddr:f}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function cp(r,e={}){return new uu(r,e)}var Ri=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};function Sb(r){return r[Symbol.asyncIterator]!=null}function _b(r){if(Sb(r))return(async()=>{for await(let e of r);})();for(let e of r);}var fu=_b;function Ab(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var lp=Ab;function Cb(r){return r[Symbol.asyncIterator]!=null}function Ib(r,e){let t=0;if(Cb(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=lp(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var Tr=Ib;function Tb(r){return r[Symbol.asyncIterator]!=null}function Pb(r,e){return Tb(r)?(async function*(){yield*(await Io(r)).sort(e)})():(function*(){yield*Io(r).sort(e)})()}var du=Pb;function Lb(r){return r[Symbol.asyncIterator]!=null}function Db(r,e){return Lb(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var hu=Db;var ki=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await fu(this.putMany(e,n)),e=[],await fu(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Tr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Tr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>du(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Tr(n,()=>o++>=s)}return e.limit!=null&&(n=hu(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Tr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Tr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>du(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Tr(n,()=>s++>=o)}return e.limit!=null&&(n=hu(n,e.limit)),n}};var Oi=class extends ki{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new Ri;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Ir(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Ir(n),t?.signal?.throwIfAborted()}};var te=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),M=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),up=r=>({match:e=>r.match(e)===!1?e:!1}),H=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),Ie=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),X=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function re(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var Rb=M(421),fp=re(Rb),Mi=M(54),Bi=M(55),Fi=M(56),mu=M(53),fT=re(Mi,H(M(421))),dT=re(Bi,H(M(421))),hT=re(Fi,H(M(421))),pT=re(Ie(mu,Fi,Mi,Bi),H(M(421))),dp=X(M(4),H(M(43))),hp=X(H(M(42)),M(41),H(M(43))),gu=Ie(dp,hp),Pr=Ie(gu,mu,Mi,Bi,Fi),mT=re(Ie(gu,X(Ie(mu,Fi,Mi,Bi),H(M(421))))),yu=re(dp),bu=re(hp),gT=re(gu),wu=X(Pr,M(6)),Do=X(Pr,M(273)),Ro=re(X(wu,H(M(421)))),yT=re(Do),xu=X(Do,te(460),H(M(421))),Ui=X(Do,te(461),H(M(421))),kb=Ie(xu,Ui),bT=re(xu),pp=re(Ui),pu=Ie(Pr,wu,Do,xu,Ui),mp=Ie(X(pu,te(477),H(M(421)))),Lr=re(mp),gp=Ie(X(pu,te(478),H(M(421))),X(pu,te(448),H(M(449)),te(477),H(M(421)))),ko=re(gp),yp=X(Do,te(280),H(M(466)),H(M(466)),H(M(421))),Eu=re(yp),bp=X(Ui,te(465),H(M(466)),H(M(466)),H(M(421))),vu=re(bp),Ni=Ie(mp,gp,X(wu,H(M(421))),X(kb,H(M(421))),X(Pr,H(M(421))),yp,bp,M(421)),wT=re(Ni),Ob=X(H(Ni),te(290),up(te(281)),H(M(421))),Dr=re(Ob),Nb=Ie(X(Ni,te(290),te(281),H(M(421))),X(Ni,te(281),H(M(421))),X(te(281),H(M(421)))),Su=re(Nb),Mb=Ie(X(Pr,M(6),te(480),H(M(421))),X(Pr,te(480),H(M(421)))),xT=re(Mb),Bb=X(Pr,Ie(X(M(6,"443"),te(480)),X(M(6),te(443)),X(M(6),te(448),te(480)),X(te(448),te(480)),te(448),te(443)),H(M(421))),ET=re(Bb),Fb=Ie(X(M(777),H(M(421)))),vT=re(Fb),Ub=Ie(X(M(400),H(M(421)))),ST=re(Ub);var wp=864e13;var Ki=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Ce({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=z(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=un(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?wp-Date.now():0,lastVerified:o?wp-Date.now():void 0})})}remove(e){let t=z(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!xe(o))continue;let s=z(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),j(n)}confirm(e,t){let n=z(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=z(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var qi=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Ce({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=z(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:it(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=z(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!xe(n))continue;let o=z(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,j(i)):e}confirm(e,t){if(!xe(e))return!1;let n=z(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!xe(e))return!1;let n=z(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var Kb={maxObservedAddresses:10},Vi=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Ce({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??Kb.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Pt(e)||wh(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:j(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var qb={maxObservedAddresses:10},$i=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Ce({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??qb.maxObservedAddresses}get(e,t){if(Pt(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!xe(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!xe(e))return e.toString();let t=z(e);return`${t.host}-${t.port}-${t.protocol}`}};var xp=6e4,Ep={maxObservedAddresses:10,addressVerificationTTL:xp*10,addressVerificationRetry:xp*5},Vb=r=>r;function _u(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&ft(t).equals(e)&&(r=r.decapsulate(j(`/p2p/${e.toString()}`))),r}var zi=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new Vi(e,t),this.dnsMappings=new Ki(e,t),this.ipMappings=new qi(e,t),this.transportAddresses=new $i(e,t),this.announceFilter=t.announceFilter??Vb,this.observedAddressFilter=go(1024),this.addressVerificationTTL=t.addressVerificationTTL??Ep.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??Ep.addressVerificationRetry,this._updatePeerStoreAddresses=vo(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>j(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>j(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>j(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=z(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=_u(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=_u(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=_u(e,this.components.peerId);let n=!1;this.observed.has(e)&&!this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&!this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&!this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&!this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=j(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(j(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${it(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(j(`/ip${it(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!xe(e))return!1;let t=z(e);if(t.type!=="ip4"||un(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>Lr.exactMatch(s)||ko.exactMatch(s),s=>Ro.exactMatch(s),s=>pp.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(f=>z(f).type==="ip4"&&s(f)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!bo(l)).pop();if(a==null)continue;let c=z(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var vp;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(vp||(vp={}));var Hi=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},Gi=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},An=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Oo=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},Wi=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},ji=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},Xi=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},No=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Yi=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Zi=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},Qi=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},Ji=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},ea=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},Jt=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},Rr=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},ta=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},ra=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var Au=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=Ps())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>es(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},$b=["metrics","connectionProtector","dns"],zb=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function Sp(r={}){let e=new Au(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!zb.includes(o)){let i=e.components[o];if(i==null&&!$b.includes(o))throw new Hi(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function _p(r){let e={};for(let t of Object.values(r.components))for(let n of Hb(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of Gb(t))if(e[n]!==!0)throw new Gi(`Service "${Wb(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function Hb(r){return Array.isArray(r?.[Dn])?r[Dn]:[]}function Gb(r){return Array.isArray(r?.[Da])?r[Da]:[]}function Wb(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function Ap(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>Lr.matches(e)?!0:Pt(e)),r}var de=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};function na(r){if(Ft(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:ft(n),e.forEach(o=>{if(!Qt(o))throw new Mt("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new I("Multiaddrs must all have the same peer id or have no peer id")}else{let i=ft(s);if(t?.equals(i)!==!0)throw new I("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!fp.exactMatch(n)),{peerId:t,multiaddrs:e}}var jb=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Cp(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??jb;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function Mo(r){let e=z(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new I(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new I(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new ln(e.host,t)}function Cu(r){return!Dr.exactMatch(r)}function oa(r,e,t){if(r==null||e==null)return;let n=e.sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>Cu(s)))return n}var sa=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>Mo(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Ze;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let f=await this.peerStore.get(l);o.set(l,[...f.tags.values()].reduce((u,d)=>u+d.value,0))}catch(f){f.name!=="NotFoundError"&&this.log.error("error loading peer tags",f)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(f=>{if(xe(c.remoteAddr)){let u=z(c.remoteAddr);return f.contains(u.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await Cp(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Ip="last-dial-failure",Tp="last-dial-success";var Pp=100,ia=50;function Xb(r,e){let t=Ro.exactMatch(r.multiaddr),n=Ro.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let o=ko.exactMatch(r.multiaddr),s=ko.exactMatch(e.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=Lr.exactMatch(r.multiaddr),a=Lr.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=Su.exactMatch(r.multiaddr),l=Su.exactMatch(e.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let f=Eu.exactMatch(r.multiaddr),u=Eu.exactMatch(e.multiaddr);if(f&&!u)return-1;if(!f&&u)return 1;let d=vu.exactMatch(r.multiaddr),h=vu.exactMatch(e.multiaddr);return d&&!h?-1:!d&&h?1:0}function Yb(r,e){let t=bo(r.multiaddr),n=bo(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Zb(r,e){let t=Pt(r.multiaddr),n=Pt(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Qb(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function Jb(r,e){let t=Dr.exactMatch(r.multiaddr),n=Dr.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Lp(r){return r.sort(Xb).sort(Qb).sort(Jb).sort(Zb).sort(Yb)}var Tu=Ca(Rp(),1);function Pu(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Fo=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,id:t.id,run:e};if(this.size===0||this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=Pu(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}setPriority(e,t){let n=this.#e.findIndex(s=>s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var Uo=class extends Tu.default{#e;#n;#t=0;#h;#a;#p=0;#o;#c;#r;#m;#s=0;#l;#i;#g;#w=1n;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Fo,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#n=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#h=e.intervalCap,this.#a=e.interval,this.#r=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#i=e.autoStart===!1}get#x(){return this.#n||this.#t<this.#h}get#E(){return this.#s<this.#l}#v(){this.#s--,this.#u(),this.emit("next")}#S(){this.#b(),this.#y(),this.#c=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#t=this.#e?this.#s:0;else return this.#c===void 0&&(this.#c=setTimeout(()=>{this.#S()},t)),!0}return!1}#u(){if(this.#r.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let e=!this.#_;if(this.#x&&this.#E){let t=this.#r.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#n||this.#o!==void 0||(this.#o=setInterval(()=>{this.#b()},this.#a),this.#p=Date.now()+this.#a)}#b(){this.#t===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#t=this.#e?this.#s:0,this.#f()}#f(){for(;this.#u(););}get concurrency(){return this.#l}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#l=e,this.#f()}async#A(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}setPriority(e,t){this.#r.setPriority(e,t)}async add(e,t={}){return t.id??=(this.#w++).toString(),t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,o)=>{this.#r.enqueue(async()=>{this.#s++;try{t.signal?.throwIfAborted(),this.#t++;let s=e({signal:t.signal});t.timeout&&(s=Eo(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#A(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof xo&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#v()}},t),this.emit("add"),this.#u()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#i?(this.#i=!1,this.#f(),this):this}pause(){this.#i=!0}clear(){this.#r=new this.#m}async onEmpty(){this.#r.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#r.size<e||await this.#d("next",()=>this.#r.size<e)}async onIdle(){this.#s===0&&this.#r.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#r.size}sizeBy(e){return this.#r.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#i}};function ca(r){let e=[Ge.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var Lu=60;function la(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:Ge[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:Ge[e.type],TTL:e.TTL??e.ttl??Lu,data:e.data instanceof Uint8Array?K(e.data):e.data}))}}var rw=4;function Du(r,e={}){let t=new Uo({concurrency:e.queryConcurrency??rw});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),ca(o.types).forEach(a=>{s.append("type",Ge[a])}),o.onProgress?.(new de("dns:query",n));let i=await t.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=la(await a.json());return o.onProgress?.(new de("dns:response",c)),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function kp(){return[Du("https://cloudflare-dns.com/dns-query"),Du("https://dns.google/resolve")]}var Mp=Ca(Np(),1);var Ru=class{lru;constructor(e){this.lru=(0,Mp.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return la({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:Ge[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??Lu)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Bp(r){return new Ru(r)}var nw=1e3,ua=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=Bp(e.cacheSize??nw),Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=kp())}async query(e,t={}){let n=ca(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new de("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,types:n});for(let f of l.Answer)this.cache.add(e,f);return l}catch(l){a.push(l),t.onProgress?.(new de("dns:error",l))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var Ge;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Ge||(Ge={}));function Fp(r={}){return new ua(r)}var ku=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[Ge.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(j(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=Fp()),this.dns)}},kr=new ku;async function Ou(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new ra("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await Ou(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var Ko={maxParallelDials:ia,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:kr}},fa=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Ko.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Ko.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Ko.dialTimeout,this.connections=t.connections??new Ze,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??Ko.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new si({concurrency:t.maxParallelDials??Ko.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==Qe.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=na(e);if(n!=null&&t.force!==!0){let i=oa(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new de("dial-queue:already-connected")),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new de("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new Mr("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new de("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new de("dial-queue:start-dial"));let a=Dt([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??Fu,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let f=[],u=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...u]);let d=await this.calculateMultiaddrs(n,u,{...e,signal:t});for(let h of d){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}f.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,f.map(h=>h.multiaddr.toString())),e?.onProgress?.(new de("dial-queue:calculated-addresses",f));for(let h of f){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new Mr("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...e,signal:t});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[Tp]:T(Date.now().toString())}})}catch(m){this.log.error("could not update last dial failure key for %p",n,m)}return p}catch(p){if(this.log.error("dial failed to %a",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[Ip]:T(Date.now().toString())}})}catch(m){this.log.error("could not update last dial failure key for %p",n,m)}if(t.aborted)throw new Xo(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:j(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new Mr("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new No("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let u=await this.components.peerStore.get(e);o.push(...u.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:d})=>d.toString()))}catch(u){if(u.name!=="NotFoundError")throw u}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let u=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:d})=>d.toString())),o.push(...u.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(u){u.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,u)}}}let s=(await Promise.all(o.map(async u=>{let d=await Ou(u.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return d.length===1&&d[0].equals(u.multiaddr)?u:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(d=>d.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:d.multiaddr.encapsulate(u),isCertified:d.isCertified}:d)}let i=s.filter(u=>{if(this.components.transportManager.dialTransportForMultiaddr(u.multiaddr)==null)return!1;let d=u.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let u of i){let d=u.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||u.isCertified||!1;continue}a.set(d,u)}let c=[...a.values()];if(c.length===0)throw new Qi("The dial request has no valid addresses");let l=[];for(let u of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(u.multiaddr)||l.push(u);let f=this.addressSorter==null?Lp(l):l.sort(this.addressSorter);if(f.length===0)throw new No("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:u})=>u.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",f.map(({multiaddr:u})=>u.toString())),f}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!Dr.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var ow=Object.prototype.toString,sw=r=>ow.call(r)==="[object Error]",iw=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function Uu(r){if(!(r&&sw(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")?!0:iw.has(t)}function aw(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function da(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}var Ku=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}},cw=(r,e,t)=>{let n=t.retries-(e-1);return Object.freeze({error:r,attemptNumber:e,retriesLeft:n})};function lw(r,e){let t=e.randomize?Math.random()+1:1,n=Math.round(t*Math.max(e.minTimeout,1)*e.factor**(r-1));return n=Math.min(n,e.maxTimeout),n}async function uw(r,e,t,n,o){let s=r;if(s instanceof Error||(s=new TypeError(`Non-error was thrown: "${s}". You should only throw errors.`)),s instanceof Ku)throw s.originalError;if(s instanceof TypeError&&!Uu(s))throw s;let i=cw(s,e,t);await t.onFailedAttempt(i);let a=Date.now();if(a-n>=o||e>=t.retries+1||!await t.shouldRetry(i))throw s;let c=lw(e,t),l=o-(a-n);if(l<=0)throw s;let f=Math.min(c,l);f>0&&await new Promise((u,d)=>{let h=()=>{clearTimeout(p),t.signal?.removeEventListener("abort",h),d(t.signal.reason)},p=setTimeout(()=>{t.signal?.removeEventListener("abort",h),u()},f);t.unref&&p.unref?.(),t.signal?.addEventListener("abort",h,{once:!0})}),t.signal?.throwIfAborted()}async function qu(r,e={}){if(e={...e},aw(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,da("factor",e.factor,{min:0,allowInfinity:!1}),da("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),da("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0});let t=e.maxRetryTime??Number.POSITIVE_INFINITY;da("maxRetryTime",t,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let n=0,o=Date.now(),s=t;for(;n<e.retries+1;){n++;try{e.signal?.throwIfAborted();let i=await r(n);return e.signal?.throwIfAborted(),i}catch(i){await uw(i,n,e,o,s)}}throw new Error("Retry attempts exhausted without throwing an error.")}var ha=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new oi({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Up(t)&&(this.queue.has(e)||this.queue.add(async n=>{await qu(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(La)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Up(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)})}stop(){this.started=!1,this.queue.abort()}};function Up(r){for(let e of r.tags.keys())if(e.startsWith(La))return!0;return!1}var Fu=50,Vu={maxConnections:Pp,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},pa=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??Vu.maxConnections,this.maxConnections<1)throw new I("Connection Manager maxConnections must be greater than 0");this.connections=new Ze,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>Mo(j(n))),this.deny=(t.deny??[]).map(n=>Mo(j(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Vu.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new ii({points:t.inboundConnectionThreshold??Vu.inboundConnectionThreshold,duration:1}),this.connectionPruner=new sa({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>j(n))}),this.dialQueue=new fa(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??ia,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,resolvers:t.resolvers??{dnsaddr:kr},connections:this.connections}),this.reconnectQueue=new ha({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await Qu(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await Ju(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([at(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(this.maxConnections<1)throw new I("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new ht("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n,multiaddrs:o}=na(e);if(this.peerId.equals(n))throw new Nr("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=oa(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new de("dial-queue:already-connected")),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??Fu});if(s.status!=="open")throw new er("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new Mt("Duplicate multiaddr connection")),c;return a||i.push(s),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([at(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if(xe(e.remoteAddr)){let s=z(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if(xe(e.remoteAddr)){let s=z(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(xe(e.remoteAddr)){let o=z(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>j(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var hw=1e4,pw="1.0.0",mw="ping",gw="ipfs",Kp=32,yw=!0,ma=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??gw}/${mw}/${pw}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??hw,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??yw,this.timeout=new qs({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[Dn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=Xl(o);t=Date.now(),await Promise.all([s.write(en(Kp),{signal:n}),s.read({bytes:Kp,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;e.rtt=(Date.now()-t)/2}}).catch(t=>{this.log.error("error during heartbeat",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var ga=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:K(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:K(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new An("No content routers available");let n=this,o=new mr;for await(let s of En(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new An("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new An("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new ht;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new ht;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var ya=globalThis.CustomEvent??Event;async function*$u(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=ye(),a=ye(),c=!1,l,f=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=ye(),await i.promise),f)break;let m={done:!1};s.push(m),p().then(w=>{m.done=!0,m.ok=!0,m.value=w,o.dispatchEvent(new ya("task-complete"))},w=>{m.done=!0,m.err=w,o.dispatchEvent(new ya("task-complete"))})}c=!0,o.dispatchEvent(new ya("task-complete"))}catch(p){l=p,o.dispatchEvent(new ya("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*d(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw f=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let m=s[p];if(s.splice(p,1),p--,m.ok)yield m.value;else throw f=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(u()||(a=ye(),await a.promise),l!=null||(n?yield*d():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var ba=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:K(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Oo("No peer routers available");if(e.toString()===this.peerId.toString())throw new Wi("Should not try to find self");let n=this,o=En(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new tr}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Oo("No peer routers available");let n=this,o=go(1024);for await(let s of $u((async function*(){let i=En(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var wa=class extends Pe{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=Dt([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=ye(),yield(await at(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=Dt([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=en(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await Lt(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var zu=32,Hu=64,xa=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=Ce({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new ji(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new Xi(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:zu,maxOutboundStreams:Hu,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new I("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t)!==!1&&(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var Ea=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=Ce({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Ce({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Ln.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new I("Transport must have a valid tag");if(this.transports.has(t))throw new I(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new ta(`No transport available for address ${String(e)}`);return t?.onProgress?.(new de("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new ht("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new Yi)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),f=this.listeners.get(s)??[];f==null&&(f=[],this.listeners.set(s,f)),f.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let u=f.findIndex(d=>d===l);f.splice(u,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),yu.matches(c)?t.ipv4.attempts++:bu.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),yu.matches(c)&&t.ipv4.success++,bu.matches(c)&&t.ipv6.success++},u=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,u),t.errors.set(c.toString(),u),u}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===Ln.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Zi(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
4
|
+
${[...t.errors.entries()].map(([s,i])=>`
|
|
5
|
+
${s}: ${`${bw(i)}`.split(`
|
|
5
6
|
`).join(`
|
|
6
7
|
`)}
|
|
7
|
-
`).join("")}`)}}ipv6Unsupported(
|
|
8
|
-
`);async function
|
|
9
|
-
`),
|
|
10
|
-
`);await
|
|
11
|
-
`),
|
|
12
|
-
|
|
13
|
-
`),
|
|
14
|
-
`),
|
|
15
|
-
`)
|
|
16
|
-
`),e),e.log.trace('handle: responded with "%s" for "%s"',Et,o);continue}if(t.includes(o))return e.log.trace('handle: respond with "%s" for "%s"',o,o),await Ur(n,C(`${o}
|
|
17
|
-
`),e),e.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new W(...t.map(i=>ka.single(C(`${i}
|
|
18
|
-
`))),C(`
|
|
19
|
-
`));e.log.trace('handle: respond with "%s" for %s',t,o),await Ur(n,s,e),e.log.trace('handle: responded with "%s" for %s',t,o);continue}e.log.trace('handle: respond with "na" for "%s"',o),await Ur(n,C(`na
|
|
20
|
-
`),e),e.log('handle: responded with "na" for "%s"',o)}}var Qw=500,of=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;constructor(t,e){this.components=t,this.id=e.id,this.remoteAddr=e.maConn.remoteAddr,this.remotePeer=e.remotePeer,this.direction=e.direction??"outbound",this.status="open",this.timeline=e.maConn.timeline,this.encryption=e.encryption,this.limits=e.limits,this.maConn=e.maConn,this.log=e.maConn.log,this.outboundStreamProtocolNegotiationTimeout=e.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=e.inboundStreamProtocolNegotiationTimeout??1e4,this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this.tags=[],e.muxerFactory!=null&&(this.multiplexer=e.muxerFactory.protocol,this.muxer=e.muxerFactory.createStreamMuxer({direction:this.direction,log:this.log,onIncomingStream:n=>{this.onIncomingStream(n)}}),Promise.all([this.muxer.sink(this.maConn.source),this.maConn.sink(this.muxer.source)]).catch(n=>{this.log.error("error piping data through muxer - %e",n)}))}[Symbol.toStringTag]="Connection";[lf]=!0;get streams(){return this.muxer?.streams??[]}newStream=async(t,e={})=>{if(this.status==="closing")throw new rs("the connection is being closed");if(this.status==="closed")throw new Vr("the connection is closed");if(Array.isArray(t)||(t=[t]),this.limits!=null&&e?.runOnLimitedConnection!==!0)throw new Un("Cannot open protocol stream on limited connection");if(this.muxer==null)throw new Mr("Connection is not multiplexed");this.log.trace("starting new stream for protocols %s",t);let n=await this.muxer.newStream();this.log.trace("started new stream %s for protocols %s",n.id,t);try{if(e.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",t);let c=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);e={...e,signal:c}}n.log.trace("selecting protocol from protocols %s",t);let{stream:o,protocol:s}=await On(n,t,{...e,log:n.log,yieldBytes:!0});n.log("selected protocol %s",s);let i=tx(s,this.components.registrar,e),a=um(s,"outbound",this);if(a>=i){let c=new cs(`Too many outbound protocol streams for protocol "${s}" - ${a}/${i}`);throw n.abort(c),c}return await this.components.peerStore.merge(this.remotePeer,{protocols:[s]}),n.source=o.source,n.sink=o.sink,n.protocol=s,o.closeWrite!=null&&(n.closeWrite=o.closeWrite),o.closeRead!=null&&(n.closeRead=o.closeRead),o.close!=null&&(n.close=o.close),this.components.metrics?.trackProtocolStream(n,this),n.direction="outbound",n}catch(o){throw this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,t,o),n.timeline.close==null&&n.abort(o),o}};onIncomingStream(t){let e=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);Promise.resolve().then(async()=>{let n=this.components.registrar.getProtocols(),{stream:o,protocol:s}=await Mn(t,n,{signal:e,log:t.log,yieldBytes:!1});this.log("incoming %s stream opened",s);let i=Jw(s,this.components.registrar);if(um(s,"inbound",this)===i){let u=new as(`Too many inbound protocol streams for protocol "${s}" - limit ${i}`);throw t.abort(u),u}t.source=o.source,t.sink=o.sink,t.protocol=s,o.closeWrite!=null&&(t.closeWrite=o.closeWrite),o.closeRead!=null&&(t.closeRead=o.closeRead),o.close!=null&&(t.close=o.close),await this.components.peerStore.merge(this.remotePeer,{protocols:[s]},{signal:e}),this.components.metrics?.trackProtocolStream(t,this);let{handler:c,options:l}=this.components.registrar.getHandler(s);if(this.limits!=null&&l.runOnLimitedConnection!==!0)throw new Un("Cannot open protocol stream on limited connection");await c({connection:this,stream:t})}).catch(async n=>{this.log.error("error handling incoming stream id %s - %e",t.id,n),t.abort(n)})}async close(t={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",t.signal==null){let e=AbortSignal.timeout(Qw);t={...t,signal:e}}try{this.log.trace("closing underlying transport"),await this.muxer?.close(t),await this.maConn.close(t),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(e){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,e),this.abort(e)}}}abort(t){this.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,t),this.status="closing",this.muxer?.abort(t),this.maConn.abort(t),this.status="closed",this.timeline.close=Date.now())}};function fm(r,t){return new of(r,t)}function Jw(r,t){try{let{options:e}=t.getHandler(r);return e.maxInboundStreams}catch(e){if(e.name!=="UnhandledProtocolError")throw e}return Qu}function tx(r,t,e={}){try{let{options:n}=t.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return e.maxOutboundStreams??Ju}function um(r,t,e){let n=0;return e.streams.forEach(o=>{o.direction===t&&o.protocol===r&&n++}),n}var Ma=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(t,e){this.components=t,this.connectionEncrypters=Tt({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),e.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Tt({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),e.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=e.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=e.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=e.outboundStreamProtocolNegotiationTimeout??1e4,this.events=t.events,this.metrics={dials:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(t,...e){let n=this.components.connectionGater[t];if(n==null)return;if(await n.apply(this.components.connectionGater,e)===!0)throw new Qi(`The multiaddr connection is blocked by gater.${t}`)}createInboundAbortSignal(t){let e=Fe([AbortSignal.timeout(this.inboundUpgradeTimeout),t]);return e}async upgradeInbound(t,e){let n=!1,o=this.createInboundAbortSignal(e.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=await xt(this.components.connectionManager.acceptIncomingConnection(t),o),!n)throw new Ji("Connection denied");await xt(this.shouldBlockConnection("denyInboundConnection",t),o),await this._performUpgrade(t,"inbound",{...e,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(t,e){try{this.metrics.dials?.increment({outbound:!0});let n=t.remoteAddr.getPeerId(),o;n!=null&&(o=ge(n),await xt(this.shouldBlockConnection("denyOutboundConnection",o,t),e.signal));let s="outbound";return e.initiator===!1&&(s="inbound"),await this._performUpgrade(t,s,e)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(t,e,n){let o,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;t.log=t.log.newScope(`${e}:${l}`),this.components.metrics?.trackMultiaddrConnection(t),t.log.trace("starting the %s connection upgrade",e);let u=t;if(n?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(t.log("protecting the %s connection",e),u=await d.protect(t,n))}try{if(o=u,n?.skipEncryption!==!0){n?.onProgress?.(new dt(`upgrader:encrypt-${e}-connection`)),{conn:o,remotePeer:s,protocol:c,streamMuxer:a}=await(e==="inbound"?this._encryptInbound(u,n):this._encryptOutbound(u,n));let d={...u,...o};await this.shouldBlockConnection(e==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,d)}else{let d=t.remoteAddr.getPeerId();if(d==null)throw new qe(`${e} connection that skipped encryption must have a peer id`);let h=ge(d);c="native",s=h}if(s.equals(this.components.peerId)){let d=new zr("Can not dial self");throw t.abort(d),d}if(i=o,n?.muxerFactory!=null)a=n.muxerFactory;else if(a==null&&this.streamMuxers.size>0){n?.onProgress?.(new dt(`upgrader:multiplex-${e}-connection`));let d=await(e==="inbound"?this._multiplexInbound({...u,...o},this.streamMuxers,n):this._multiplexOutbound({...u,...o},this.streamMuxers,n));a=d.muxerFactory,i=d.stream}}catch(d){throw t.log.error("failed to upgrade inbound connection %s %a - %e",e==="inbound"?"from":"to",t.remoteAddr,d),d}await this.shouldBlockConnection(e==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,t);let f=this._createConnection({id:l,cryptoProtocol:c,direction:e,maConn:t,upgradedConn:i,muxerFactory:a,remotePeer:s,limits:n?.limits});return f.log("successfully upgraded %s connection",e),f}_createConnection(t){let{id:e,cryptoProtocol:n,direction:o,maConn:s,upgradedConn:i,remotePeer:a,muxerFactory:c,limits:l}=t,u,f=s.timeline;return s.timeline=new Proxy(f,{set:(...d)=>(d[1]==="close"&&d[2]!=null&&f.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(h){u.log.error("error closing connection after timeline close %e",h)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(h=>{u.log.error("error thrown while dispatching connection:close event %e",h)}),Reflect.set(...d))}),s.timeline.upgraded=Date.now(),u=fm(this.components,{id:e,maConn:i,remotePeer:a,direction:o,muxerFactory:c,encryption:n,limits:l,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}async _encryptInbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:o,protocol:s}=await Mn(t,n,{...e,log:t.log}),i=this.connectionEncrypters.get(s);if(i==null)throw new Nr(`no crypto module found for ${s}`);return t.log("encrypting inbound connection to %a using %s",t.remoteAddr,s),{...await i.secureInbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting inbound connection from %a failed",t.remoteAddr,o),new Nr(o.message)}}async _encryptOutbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{t.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await On(t,n,{...e,log:t.log,yieldBytes:!0}),i=this.connectionEncrypters.get(s);if(i==null)throw new Nr(`no crypto module found for ${s}`);return t.log("encrypting outbound connection to %a using %s",t.remoteAddr,s),{...await i.secureOutbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting outbound connection to %a failed",t.remoteAddr,o),new Nr(o.message)}}async _multiplexOutbound(t,e,n){let o=Array.from(e.keys());t.log("outbound selecting muxer %s",o);try{t.log.trace("selecting stream muxer from %s",o);let{stream:s,protocol:i}=await On(t,o,{...n,log:t.log,yieldBytes:!0});t.log("selected %s as muxer protocol",i);let a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing outbound connection",s),new Mr(String(s))}}async _multiplexInbound(t,e,n){let o=Array.from(e.keys());t.log("inbound handling muxers %s",o);try{let{stream:s,protocol:i}=await Mn(t,o,{...n,log:t.log}),a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing inbound connection",s),new Mr(String(s))}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};var Na="2.10.0",Ba="js-libp2p";function hm(r,t){return`${r??Ba}/${t??Na} browser/${globalThis.navigator.userAgent}`}var Yo=class extends Vt{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(t){super(),this.status="stopped";let e=new Vt,n=e.dispatchEvent.bind(e);e.dispatchEvent=l=>{let u=n(l),f=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||f},this.peerId=t.peerId,this.logger=t.logger??ei(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=t.nodeInfo?.name??Ba,s=t.nodeInfo?.version??Na,i=this.components=Kp({peerId:t.peerId,privateKey:t.privateKey,nodeInfo:{name:o,version:s,userAgent:t.nodeInfo?.userAgent??hm(o,s)},logger:this.logger,events:e,datastore:t.datastore??new Ri,connectionGater:Vp(t.connectionGater),dns:t.dns});t.metrics!=null&&(this.metrics=this.configureComponent("metrics",t.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",_p(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...t.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(f=>f.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:u})}}),t.connectionProtector!=null&&this.configureComponent("connectionProtector",t.connectionProtector(i)),this.components.upgrader=new Ma(this.components,{connectionEncrypters:(t.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(t.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:t.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:t.connectionManager?.inboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:t.connectionManager?.outboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout}),this.configureComponent("transportManager",new Aa(this.components,t.transportManager)),this.configureComponent("connectionManager",new pa(this.components,t.connectionManager)),t.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new wa(this.components,t.connectionMonitor)),this.configureComponent("registrar",new Sa(this.components)),this.configureComponent("addressManager",new zi(this.components,t.addresses));let a=(t.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new va(this.components,{routers:a}));let c=(t.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new xa(this.components,{routers:c})),this.configureComponent("randomWalk",new _a(this.components)),(t.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",d=>{this.#t(d)})}),t.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),t.services!=null)for(let l of Object.keys(t.services)){let u=t.services[l],f=u(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=f,this.configureComponent(l,f),f[Ua]!=null&&(this.log("registering service %s for content routing",l),c.push(f[Ua])),f[Ka]!=null&&(this.log("registering service %s for peer routing",l),a.push(f[Ka])),f[Fa]!=null&&(this.log("registering service %s for peer discovery",l),f[Fa].addEventListener?.("peer",d=>{this.#t(d)}))}qp(i)}configureComponent(t,e){return e==null&&this.log.error("component %s was null or undefined",t),this.components[t]=e,e}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(t){throw this.log.error("An error occurred starting libp2p",t),this.status="started",await this.stop(),t}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(t){return this.components.connectionManager.getConnections(t)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let t=new Ar;for(let e of this.components.connectionManager.getConnections())t.add(e.remotePeer);return Array.from(t)}async dial(t,e={}){return this.components.connectionManager.openConnection(t,{priority:75,...e})}async dialProtocol(t,e,n={}){if(e==null)throw new k("no protocols were provided to open a stream");if(e=Array.isArray(e)?e:[e],e.length===0)throw new k("no protocols were provided to open a stream");return(await this.dial(t,n)).newStream(e,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(t,e={}){er(t)&&(t=ge(t.getPeerId()??"")),await this.components.connectionManager.closeConnections(t,e)}async getPublicKey(t,e={}){if(this.log("getPublicKey %p",t),t.publicKey!=null)return t.publicKey;try{let i=await this.peerStore.get(t,e);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=oe([C("/pk/"),t.toMultihash().bytes]),o=await this.contentRouting.get(n,e),s=pn(o);return await this.peerStore.patch(t,{publicKey:s},e),s}async handle(t,e,n){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async o=>{await this.components.registrar.handle(o,e,n)}))}async unhandle(t,e){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async n=>{await this.components.registrar.unhandle(n,e)}))}async register(t,e,n){return this.components.registrar.register(t,e,n)}unregister(t){this.components.registrar.unregister(t)}async isDialable(t,e={}){return this.components.connectionManager.isDialable(t,e)}#t(t){let{detail:e}=t;if(e.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(e.id,{multiaddrs:e.multiaddrs}).catch(n=>{this.log.error(n)})}};async function ex(r={}){r.privateKey??=await dh("Ed25519");let t=new Yo({...await Xh(r),peerId:gh(r.privateKey)});return r.start!==!1&&await t.start(),t}var rx=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function nx(r){return r==null?!1:r instanceof Yo?!0:rx.every(t=>typeof r[t]=="function")}return wm(ox);})();
|
|
8
|
+
`).join("")}`)}}ipv6Unsupported(e){if(e.ipv4.attempts===0||e.ipv6.attempts===0)return!1;let t=e.ipv4.attempts===e.ipv4.success,n=e.ipv6.success===0;return t&&n}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};function bw(r){return r.stack!=null&&r.stack.trim()!==""?r.stack:r.message!=null?r.message:r.toString()}var dt="/multistream/1.0.0";var ww=T(`
|
|
9
|
+
`);async function qo(r,e){let n=(await r.read(e)).subarray();if(n.byteLength===0||n[n.length-1]!==ww[0])throw new jo("Missing newline");return K(n).trimEnd()}async function Cn(r,e,t={}){if(e=Array.isArray(e)?[...e]:[e],e.length===0)throw new Error("At least one protocol must be specified");let n=r.log.newScope("mss:select"),o=Zs(r,{...t,maxDataLength:1024});for(let s=0;s<e.length;s++){let i=e[s],a;if(s===0){n.trace('write ["%s", "%s"]',dt,i);let c=T(`${dt}
|
|
10
|
+
`),l=T(`${i}
|
|
11
|
+
`);if(await o.writeV([c,l],t),n.trace("reading multistream-select header"),a=await qo(o,t),n.trace('read "%s"',a),a!==dt){n.error("did not read multistream-select header from response");break}}else n.trace('write "%s"',i),await o.write(T(`${i}
|
|
12
|
+
`),t);if(n.trace("reading protocol response"),a=await qo(o,t),n.trace('read "%s"',a),a===i)return n.trace('selected "%s" after negotiation',a),o.unwrap(),i}throw new Wo(`Protocol selection failed - could not negotiate ${e}`)}async function In(r,e,t={}){e=Array.isArray(e)?e:[e];let n=r.log.newScope("mss:handle"),o=Zs(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){n.trace("reading incoming string");let s=await qo(o,t);if(n.trace('read "%s"',s),s===dt){n.trace('respond with "%s" for "%s"',dt,s),await o.write(T(`${dt}
|
|
13
|
+
`),t),n.trace('responded with "%s" for "%s"',dt,s);continue}if(e.includes(s))return n.trace('respond with "%s" for "%s"',s,s),await o.write(T(`${s}
|
|
14
|
+
`),t),n.trace('responded with "%s" for "%s"',s,s),o.unwrap(),s;if(s==="ls"){let i=new Z(...e.map(a=>ni.single(T(`${a}
|
|
15
|
+
`))),T(`
|
|
16
|
+
`));n.trace('respond with "%s" for %s',e,s),await o.write(i,t),n.trace('responded with "%s" for %s',e,s);continue}n.trace('respond with "na" for "%s"',s),await o.write(T(`na
|
|
17
|
+
`),t),n('responded with "na" for "%s"',s)}}var Wu=class extends Pe{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=Cu(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new Qo(n.local,n.error))})}[Symbol.toStringTag]="Connection";[Zu]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new Jt("Connection is not multiplexed");if(this.muxer.status!=="open")throw new er(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new er(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new Pn("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let a=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:a}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await Cn(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=vw(n.protocol,this.components.registrar,t),s=zp(n.protocol,"outbound",this);if(s>o){let a=new Zo(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(a),a}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol);return await this.runMiddlewareChain(n,this,i)}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await In(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=Ew(t.protocol,this.components.registrar);if(zp(t.protocol,"inbound",this)>o)throw new Yo(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new Pn("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,f,u)=>{await i(l,f),u(l,f)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,f)=>{e=l,t=f,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Hp(r,e){return new Wu(r,e)}function Ew(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return zu}function vw(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??Hu}function zp(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var va=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=Ce({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Ce({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new Ji(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=Dt([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new ea("Connection denied");await Lt(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=ft(n),await Lt(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(e.log("protecting the %s connection",t),o=await u.protect(o,n))}try{if(Sw(n)){if(n.remotePeer==null)throw new Mt(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let u=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,d;u!=null&&(d=ft(u)),n?.onProgress?.(new de(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:d}):this._encryptOutbound(o,{...n,remotePeer:d}))}if(s.equals(this.components.peerId)){let u=new Nr("Can not dial self");throw e.abort(u),u}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new de(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(u){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,u),u}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let f=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return f.log("successfully upgraded connection"),f}_createConnection(e){let t=Hp(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await In(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Rr(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new Rr(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await Cn(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Rr(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new Rr(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await Cn(e,o,n),i=t.get(s);if(i==null)throw new Jt(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection",s),new Jt(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await In(e,o,n),i=t.get(s);if(i==null)throw new Jt(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function Sw(r){return r.skipEncryption===!0}var Sa="3.0.0-049bfa0fa",_a="js-libp2p";function Wp(r,e){return`${r??_a}/${e??Sa} browser/${globalThis.navigator.userAgent}`}var Vo=class extends Pe{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Pe,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let f=n(l),u=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return f||u},this.peerId=e.peerId,this.logger=e.logger??Ps(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??_a,s=e.nodeInfo?.version??Sa,i=this.components=Sp({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??Wp(o,s)},logger:this.logger,events:t,datastore:e.datastore??new Oi,connectionGater:Ap(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",cp(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let f={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(u=>u.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:f})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new va(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,f)=>this.configureComponent(`connection-encryption-${f}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,f)=>this.configureComponent(`stream-muxers-${f}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new Ea(this.components,e.transportManager)),this.configureComponent("connectionManager",new pa(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new ma(this.components,e.connectionMonitor)),this.configureComponent("registrar",new xa(this.components)),this.configureComponent("addressManager",new zi(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,f)=>this.configureComponent(`peer-router-${f}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new ba(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,f)=>this.configureComponent(`content-router-${f}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new ga(this.components,{routers:c})),this.configureComponent("randomWalk",new wa(this.components)),(e.peerDiscovery??[]).forEach((l,f)=>{this.configureComponent(`peer-discovery-${f}`,l(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((l,f)=>{this.components.transportManager.add(this.configureComponent(`transport-${f}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let f=e.services[l],u=f(this.components);if(u==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=u,this.configureComponent(l,u),u[Ia]!=null&&(this.log("registering service %s for content routing",l),c.push(u[Ia])),u[Pa]!=null&&(this.log("registering service %s for peer routing",l),a.push(u[Pa])),u[Ta]!=null&&(this.log("registering service %s for peer discovery",l),u[Ta].addEventListener?.("peer",d=>{this.#e(d)}))}_p(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("An error occurred starting libp2p",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new mr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new I("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new I("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){Qt(e)&&(e=ft(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=et([T("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=on(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function _w(r={}){r.privateKey??=await th("Ed25519");let e=new Vo({...await ih(r),peerId:sh(r.privateKey)});return r.start!==!1&&await e.start(),e}var Aw=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function Cw(r){return r==null?!1:r instanceof Vo?!0:Aw.every(e=>typeof r[e]=="function")}return Jp(Iw);})();
|
|
21
18
|
/*! Bundled license information:
|
|
22
19
|
|
|
23
20
|
@noble/hashes/esm/utils.js:
|