helia 4.0.0 → 4.0.1-8a5bc6f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +20 -26
- 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 +5 -5
- package/src/version.ts +1 -1
- package/dist/typedoc-urls.json +0 -12
package/dist/index.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Helia = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Helia=(()=>{var sI=Object.create;var Wu=Object.defineProperty;var iI=Object.getOwnPropertyDescriptor;var aI=Object.getOwnPropertyNames;var cI=Object.getPrototypeOf,lI=Object.prototype.hasOwnProperty;var Oe=(r,e)=>()=>(r&&(e=r(r=0)),e);var me=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),oe=(r,e)=>{for(var t in e)Wu(r,t,{get:e[t],enumerable:!0})},U8=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of aI(e))!lI.call(r,o)&&o!==t&&Wu(r,o,{get:()=>e[o],enumerable:!(n=iI(e,o))||n.enumerable});return r};var Ue=(r,e,t)=>(t=r!=null?sI(cI(r)):{},U8(e||!r||!r.__esModule?Wu(t,"default",{value:r,enumerable:!0}):t,r)),zu=r=>U8(Wu({},"__esModule",{value:!0}),r);var c5=me((kq,a5)=>{a5.exports=i5;var s5=128,jI=127,XI=~jI,QI=Math.pow(2,31);function i5(r,e,t){e=e||[],t=t||0;for(var n=t;r>=QI;)e[t++]=r&255|s5,r/=128;for(;r&XI;)e[t++]=r&255|s5,r>>>=7;return e[t]=r|0,i5.bytes=t-n+1,e}});var f5=me((Tq,u5)=>{u5.exports=h2;var JI=128,l5=127;function h2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw h2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&l5)<<o:(i&l5)*Math.pow(2,o),o+=7}while(i>=JI);return h2.bytes=s-n,t}});var h5=me((Dq,d5)=>{var ZI=Math.pow(2,7),ek=Math.pow(2,14),tk=Math.pow(2,21),rk=Math.pow(2,28),nk=Math.pow(2,35),ok=Math.pow(2,42),sk=Math.pow(2,49),ik=Math.pow(2,56),ak=Math.pow(2,63);d5.exports=function(r){return r<ZI?1:r<ek?2:r<tk?3:r<rk?4:r<nk?5:r<ok?6:r<sk?7:r<ik?8:r<ak?9:10}});var m5=me((Pq,p5)=>{p5.exports={encode:c5(),decode:f5(),encodingLength:h5()}});var b5=me((Cq,g5)=>{"use strict";var y5=m5();g5.exports=r=>{if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=y5.decode(r);e.push(t),r=r.slice(y5.decode.bytes)}return e}});var p2=me((Nq,w5)=>{var oa=1e3,sa=oa*60,ia=sa*60,Xs=ia*24,ck=Xs*7,lk=Xs*365.25;w5.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return uk(r);if(t==="number"&&isFinite(r))return e.long?dk(r):fk(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function uk(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\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(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*lk;case"weeks":case"week":case"w":return t*ck;case"days":case"day":case"d":return t*Xs;case"hours":case"hour":case"hrs":case"hr":case"h":return t*ia;case"minutes":case"minute":case"mins":case"min":case"m":return t*sa;case"seconds":case"second":case"secs":case"sec":case"s":return t*oa;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function fk(r){var e=Math.abs(r);return e>=Xs?Math.round(r/Xs)+"d":e>=ia?Math.round(r/ia)+"h":e>=sa?Math.round(r/sa)+"m":e>=oa?Math.round(r/oa)+"s":r+"ms"}function dk(r){var e=Math.abs(r);return e>=Xs?Ju(r,e,Xs,"day"):e>=ia?Ju(r,e,ia,"hour"):e>=sa?Ju(r,e,sa,"minute"):e>=oa?Ju(r,e,oa,"second"):r+" ms"}function Ju(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var x5=me((Bq,E5)=>{function hk(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=p2(),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,y,p;function m(...g){if(!m.enabled)return;let b=m,E=Number(new Date),w=E-(u||E);b.diff=w,b.prev=u,b.curr=E,u=E,g[0]=t.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let _=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(k,D)=>{if(k==="%%")return"%";_++;let A=t.formatters[D];if(typeof A=="function"){let C=g[_];k=A.call(b,C),g.splice(_,1),_--}return k}),t.formatArgs.call(b,g),(b.log||t.log).apply(b,g)}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:(y!==t.namespaces&&(y=t.namespaces,p=t.enabled(f)),p),set:g=>{d=g}}),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,]+/),y=d.length;for(u=0;u<y;u++)d[u]&&(f=d[u].replace(/\*/g,".*?"),f[0]==="-"?t.skips.push(new RegExp("^"+f.slice(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.enable(t.load()),t}E5.exports=hk});var m2=me((mr,Zu)=>{mr.formatArgs=mk;mr.save=yk;mr.load=gk;mr.useColors=pk;mr.storage=bk();mr.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();mr.colors=["#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 pk(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function mk(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Zu.exports.humanize(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)}mr.log=console.debug||console.log||(()=>{});function yk(r){try{r?mr.storage.setItem("debug",r):mr.storage.removeItem("debug")}catch{}}function gk(){let r;try{r=mr.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function bk(){try{return localStorage}catch{}}Zu.exports=x5()(mr);var{formatters:wk}=Zu.exports;wk.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var S5=me((Xq,_5)=>{_5.exports=b2;var v5=128,_k=127,Sk=~_k,Rk=Math.pow(2,31);function b2(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw b2.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=Rk;)e[t++]=r&255|v5,r/=128;for(;r&Sk;)e[t++]=r&255|v5,r>>>=7;return e[t]=r|0,b2.bytes=t-n+1,e}});var I5=me((Qq,A5)=>{A5.exports=w2;var Ak=128,R5=127;function w2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a||o>49)throw w2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&R5)<<o:(i&R5)*Math.pow(2,o),o+=7}while(i>=Ak);return w2.bytes=s-n,t}});var T5=me((Jq,k5)=>{var Ik=Math.pow(2,7),kk=Math.pow(2,14),Tk=Math.pow(2,21),Dk=Math.pow(2,28),Pk=Math.pow(2,35),Ck=Math.pow(2,42),Nk=Math.pow(2,49),Bk=Math.pow(2,56),Lk=Math.pow(2,63);k5.exports=function(r){return r<Ik?1:r<kk?2:r<Tk?3:r<Dk?4:r<Pk?5:r<Ck?6:r<Nk?7:r<Bk?8:r<Lk?9:10}});var P5=me((Zq,D5)=>{D5.exports={encode:S5(),decode:I5(),encodingLength:T5()}});var ei=me((eG,t6)=>{"use strict";function e6(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function wT(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return e6(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),e6(new o,t)}}t6.exports=wT});var s6=me((EG,o6)=>{"use strict";o6.exports=function(){return Date.now()}});var a6=me((xG,i6)=>{"use strict";var p1=s6(),j2=class{constructor(e,t,n){let o=this;this._started=p1(),this._rescheduled=0,this._scheduled=t,this._args=n,this._triggered=!1,this._timerWrapper=()=>{o._rescheduled>0?(o._scheduled=o._rescheduled-(p1()-o._started),o._schedule(o._scheduled)):(o._triggered=!0,e.apply(null,o._args))},this._timer=setTimeout(this._timerWrapper,t)}reschedule(e){e||(e=this._scheduled);let t=p1();t+e-(this._started+this._scheduled)<0?(clearTimeout(this._timer),this._schedule(e)):this._triggered?this._schedule(e):(this._started=t,this._rescheduled=e)}_schedule(e){this._triggered=!1,this._started=p1(),this._rescheduled=0,this._scheduled=e,this._timer=setTimeout(this._timerWrapper,e)}clear(){clearTimeout(this._timer)}};function PT(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("timeout needed");let r;if(arguments.length>0){r=new Array(arguments.length-2);for(var e=0;e<r.length;e++)r[e]=arguments[e+2]}return new j2(arguments[0],arguments[1],r)}i6.exports=PT});var u6=me((vG,l6)=>{"use strict";var{AbortController:CT}=globalThis,c6=a6(),X2=class r extends CT{constructor(e){super(),this._ms=e,this._timer=c6(()=>this.abort(),e),Object.setPrototypeOf(this,r.prototype)}abort(){return this._timer.clear(),super.abort()}clear(){this._timer.clear()}reset(){this._timer.clear(),this._timer=c6(()=>this.abort(),this._ms)}};l6.exports={TimeoutController:X2}});var b1=me((NG,e0)=>{"use strict";var ua=typeof Reflect=="object"?Reflect:null,y6=ua&&typeof ua.apply=="function"?ua.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},y1;ua&&typeof ua.ownKeys=="function"?y1=ua.ownKeys:Object.getOwnPropertySymbols?y1=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:y1=function(e){return Object.getOwnPropertyNames(e)};function OT(r){console&&console.warn&&console.warn(r)}var b6=Number.isNaN||function(e){return e!==e};function Ve(){Ve.init.call(this)}e0.exports=Ve;e0.exports.once=FT;Ve.EventEmitter=Ve;Ve.prototype._events=void 0;Ve.prototype._eventsCount=0;Ve.prototype._maxListeners=void 0;var g6=10;function g1(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(Ve,"defaultMaxListeners",{enumerable:!0,get:function(){return g6},set:function(r){if(typeof r!="number"||r<0||b6(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");g6=r}});Ve.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ve.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||b6(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function w6(r){return r._maxListeners===void 0?Ve.defaultMaxListeners:r._maxListeners}Ve.prototype.getMaxListeners=function(){return w6(this)};Ve.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var o=e==="error",s=this._events;if(s!==void 0)o=o&&s.error===void 0;else if(!o)return!1;if(o){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")y6(c,this,t);else for(var l=c.length,f=S6(c,l),n=0;n<l;++n)y6(f[n],this,t);return!0};function E6(r,e,t,n){var o,s,i;if(g1(t),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&(r.emit("newListener",e,t.listener?t.listener:t),s=r._events),i=s[e]),i===void 0)i=s[e]=t,++r._eventsCount;else if(typeof i=="function"?i=s[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),o=w6(r),o>0&&i.length>o&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=i.length,OT(a)}return r}Ve.prototype.addListener=function(e,t){return E6(this,e,t,!1)};Ve.prototype.on=Ve.prototype.addListener;Ve.prototype.prependListener=function(e,t){return E6(this,e,t,!0)};function KT(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function x6(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=KT.bind(n);return o.listener=t,n.wrapFn=o,o}Ve.prototype.once=function(e,t){return g1(t),this.on(e,x6(this,e,t)),this};Ve.prototype.prependOnceListener=function(e,t){return g1(t),this.prependListener(e,x6(this,e,t)),this};Ve.prototype.removeListener=function(e,t){var n,o,s,i,a;if(g1(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():MT(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};Ve.prototype.off=Ve.prototype.removeListener;Ve.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o<s.length;++o)i=s[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this};function v6(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?UT(o):S6(o,o.length)}Ve.prototype.listeners=function(e){return v6(this,e,!0)};Ve.prototype.rawListeners=function(e){return v6(this,e,!1)};Ve.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):_6.call(r,e)};Ve.prototype.listenerCount=_6;function _6(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}Ve.prototype.eventNames=function(){return this._eventsCount>0?y1(this._events):[]};function S6(r,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=r[n];return t}function MT(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];r.pop()}function UT(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].listener||r[t];return e}function FT(r,e){return new Promise(function(t,n){function o(i){r.removeListener(e,s),n(i)}function s(){typeof r.removeListener=="function"&&r.removeListener("error",o),t([].slice.call(arguments))}R6(r,e,s,{once:!0}),e!=="error"&&VT(r,o,{once:!0})})}function VT(r,e,t){typeof r.on=="function"&&R6(r,"error",e,t)}function R6(r,e,t,n){if(typeof r.on=="function")n.once?r.once(e,t):r.on(e,t);else if(typeof r.addEventListener=="function")r.addEventListener(e,function o(s){n.once&&r.removeEventListener(e,o),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r)}});var P6=me((T6,D6)=>{"use strict";var qT=Math.exp;T6=D6.exports=function(e){if(typeof e!="number")throw new Error("must provide a timespan to the moving average constructor");if(e<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let t,n=0,o=0,s=0,i,a={};function c(l,f){return 1-qT(-(l-f)/e)}return a.push=function(f,u){if(i){let d=c(f,i),y=u-t,p=d*y;t=d*u+(1-d)*t,n=(1-d)*(n+y*p),o=Math.sqrt(n),s=t+d*y}else t=u;i=f},a.movingAverage=function(){return t},a.variance=function(){return n},a.deviation=function(){return o},a.forecast=function(){return s},a}});var Cg=me(xa=>{"use strict";var RP="[object ArrayBuffer]",bo=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===RP}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},M0="string",AP=/^[0-9a-f]+$/i,IP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,kP=/^[a-zA-Z0-9-_]+$/,G1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=bo.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Br=class{static toString(e,t=!1){let n=bo.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Y1=class r{static isHex(e){return typeof e===M0&&AP.test(e)}static isBase64(e){return typeof e===M0&&IP.test(e)}static isBase64Url(e){return typeof e===M0&&kP.test(e)}static ToString(e,t="utf8"){let n=bo.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Br.toString(n,!0);case"utf16":case"utf16be":return Br.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Br.fromString(e,!0);case"utf16":case"utf16be":return Br.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=bo.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return G1.fromString(e);case"utf16":case"utf16be":return Br.fromString(e);case"utf16le":case"usc2":return Br.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return G1.toString(e);case"utf16":case"utf16be":return Br.toString(e);case"utf16le":case"usc2":return Br.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=bo.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=bo.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Br.toString(e,t)}static FromUtf16String(e,t=!1){return Br.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Y1.DEFAULT_UTF8_ENCODING="utf8";function TP(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function DP(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function PP(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}xa.BufferSourceConverter=bo;xa.Convert=Y1;xa.assign=TP;xa.combine=DP;xa.isEqual=PP});var Kf=me((wX,Z0)=>{var bX=function(){typeof Z0<"u"&&(Z0.exports=m);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(A){var C=A-A%1;return C==0&&(A<0||A===0&&1/A!=1/0)?-0:C},f=m.prototype,u=(m.fromDate=function(A){return new m(+A)},m.fromInt64BE=_(0,1,2,3,0,4),m.fromInt64LE=_(3,2,1,0,4,0),m.fromString=function(L){var C,U=new m,L=(L+="").replace(/^\s*[+\-]?\d+/,function(H){var H=+H,re=1970+(H-1970)%400;return U.year=H-re,re}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(F,H,re){return H<0&&(re*=-1),C=6e4*(60*+H+ +re),""}).replace(/\.\d+$/,function(F){return U.nano=+(F+c).substr(1,9),""}).split(/\D+/);if(1<L.length?L[1]--:L[1]=0,U.time=C=Date.UTC.apply(Date,L)-(C||0),isNaN(C))throw new TypeError("Invalid Date");return g(U)},m.fromTimeT=function(A){return E(A,0)},f.year=0,f.time=0,f.nano=0,f.addNano=function(A){return this.nano+=+A||0,this},f.getNano=function(){var A=g(this);return(A.time%1e3*a+ +A.nano+1e9)%1e9},f.getTimeT=function(){var C=g(this),A=Math.floor(C.time/1e3),C=C.year;return C&&(A+=C*t*r/e),A},f.getYear=function(){return this.toDate().getUTCFullYear()+this.year},f.toDate=function(){return b(g(this).time)},f.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},f.toString=function(A){var C=this,U=C.toDate(),L={H:function(){return k(U.getUTCHours())},L:function(){return D(U.getUTCMilliseconds(),3)},M:function(){return k(U.getUTCMinutes())},N:function(){return D(C.getNano(),9)},S:function(){return k(U.getUTCSeconds())},Y:function(){var F=C.getYear();return 999999<F?"+"+F:9999<F?"+"+D(F,6):0<=F?D(F,4):-999999<=F?"-"+D(-F,6):F},a:function(){return y[U.getUTCDay()]},b:function(){return d[U.getUTCMonth()]},d:function(){return k(U.getUTCDate())},e:function(){return function(F){return(9<F?"":" ")+(0|F)}(U.getUTCDate())},m:function(){return k(U.getUTCMonth()+1)}};return function F(H){return H.replace(/%./g,function(re){var N=re[1],T=p[N],N=L[N];return T?F(T):N?N():re})}(A||u)},f.writeInt64BE=w(0,1,2,3,0,4),f.writeInt64LE=w(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],y=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
-
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return m;function m(A,C,U){var L=this;if(!(L instanceof m))return new m(A,C,U);L.time=+A||0,L.nano=+C||0,L.year=+U||0,g(L)}function g(A){var C,U,L,F=A.year,H=A.time,re=A.nano,T=((re<0||a<=re)&&(re-=(U=Math.floor(re/a))*a,H+=U,U=1),F%e);return(H<-s||s<H||T)&&((C=l(H/o))&&(F+=C*e,H-=C*o),(L=b(H)).setUTCFullYear(T+L.getUTCFullYear()),L=(H=+L)+(C=l((F-=T)/e))*o,C&&-s<=L&&L<=s&&(F-=C*e,H=L),U=1),U&&(A.year=F,A.time=H,A.nano=re),A}function b(A){var C=new Date(0);return C.setTime(A),C}function E(F,L){F=+F||0;var U=l((L=(L|0)*i)/n)+l(F/n),L=L%n+F%n,F=l(L/n);return F&&(U+=F,L-=F*n),new m(1e3*L,0,U*e)}function w(A,C,U,L,F,H){return function(T,N){var P=g(this);T=T||new Array(8),I(T,N|=0);var R=Math.floor(P.time/1e3),P=P.year*(t*r/e),Y=l(P/i)+l(R/i),P=P%i+R%i,R=Math.floor(P/i);return R&&(Y+=R,P-=R*i),re(T,N+F,Y),re(T,N+H,P),T};function re(T,N,Y){T[N+A]=Y>>24&255,T[N+C]=Y>>16&255,T[N+U]=Y>>8&255,T[N+L]=255&Y}}function _(A,C,U,L,F,H){return function(T,N){I(T,N|=0);var Y=re(T,N+F);return E(re(T,N+H),Y)};function re(T,N){return 16777216*T[N+A]+(T[N+C]<<16|T[N+U]<<8|T[N+L])}}function I(A,C){if(A=A&&A.length,A==null)throw new TypeError("Invalid Buffer");if(A<C+8)throw new RangeError("Out of range")}function k(A){return(9<A?"":"0")+(0|A)}function D(A,C){return(c+(0|A)).substr(-C)}}()});var tb=me((eJ,um)=>{"use strict";var XC=Object.prototype.hasOwnProperty,Zt="~";function Al(){}Object.create&&(Al.prototype=Object.create(null),new Al().__proto__||(Zt=!1));function QC(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function eb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new QC(t,n||r,o),i=Zt?Zt+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 ed(r,e){--r._eventsCount===0?r._events=new Al:delete r._events[e]}function zt(){this._events=new Al,this._eventsCount=0}zt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)XC.call(t,n)&&e.push(Zt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};zt.prototype.listeners=function(e){var t=Zt?Zt+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};zt.prototype.listenerCount=function(e){var t=Zt?Zt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};zt.prototype.emit=function(e,t,n,o,s,i){var a=Zt?Zt+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,y;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(y=1,f=new Array(l-1);y<l;y++)f[y-1]=arguments[y];c[u].fn.apply(c[u].context,f)}}return!0};zt.prototype.on=function(e,t,n){return eb(this,e,t,n,!1)};zt.prototype.once=function(e,t,n){return eb(this,e,t,n,!0)};zt.prototype.removeListener=function(e,t,n,o){var s=Zt?Zt+e:e;if(!this._events[s])return this;if(!t)return ed(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&ed(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:ed(this,s)}return this};zt.prototype.removeAllListeners=function(e){var t;return e?(t=Zt?Zt+e:e,this._events[t]&&ed(this,t)):(this._events=new Al,this._eventsCount=0),this};zt.prototype.off=zt.prototype.removeListener;zt.prototype.addListener=zt.prototype.on;zt.prefixed=Zt;zt.EventEmitter=zt;typeof um<"u"&&(um.exports=zt)});var uE=me(Xl=>{(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,y,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),y=p[0],f=p[1],c=c.substring(f),l.push(y)}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,y;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")),y=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===y)throw new Error("empty octet");return[d,u]},r=function(){function c(l,f){var u,d,y,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=y=32;y>=0;d=--y)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}(),Xl.ip2long=i,Xl.long2ip=a,Xl.Netmask=r}).call(Xl)});var Dx=me((Lue,Tx)=>{function rO(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}Tx.exports=rO});var kv=me(($de,Iv)=>{Iv.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 u_=me((h0e,l_)=>{"use strict";l_.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var y_=me((p_,m_)=>{"use strict";var Hh=u_(),{hasOwnProperty:d_}=Object.prototype,{propertyIsEnumerable:PK}=Object,mc=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),CK=p_,f_={concatArrays:!1,ignoreUndefined:!1},$h=r=>{let e=[];for(let t in r)d_.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)PK.call(r,n)&&e.push(n)}return e};function yc(r){return Array.isArray(r)?NK(r):Hh(r)?BK(r):r}function NK(r){let e=r.slice(0,0);return $h(r).forEach(t=>{mc(e,t,yc(r[t]))}),e}function BK(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return $h(r).forEach(t=>{mc(e,t,yc(r[t]))}),e}var h_=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?mc(r,o,Xy(r[o],e[o],n)):mc(r,o,yc(e[o])))}),r),LK=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)d_.call(s,a)&&(i.push(String(a)),s===r?mc(n,o++,s[a]):mc(n,o++,yc(s[a])));n=h_(n,s,$h(s).filter(a=>!i.includes(a)),t)}),n};function Xy(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?LK(r,e,t):!Hh(e)||!Hh(r)?yc(e):h_(r,e,$h(e),t)}m_.exports=function(...r){let e=Xy(yc(f_),this!==CK&&this||{},f_),t={_:{}};for(let n of r)if(n!==void 0){if(!Hh(n))throw new TypeError("`"+n+"` is not an Option Object");t=Xy(t,{_:n},e)}return t._}});var w_=me((m0e,b_)=>{"use strict";function OK(r){return r>=55296&&r<=56319}function KK(r){return r>=56320&&r<=57343}b_.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],OK(i)&&KK(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var x_=me((y0e,E_)=>{"use strict";function MK(r){return r>=55296&&r<=56319}function UK(r){return r>=56320&&r<=57343}E_.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),UK(o)?s!=null&&MK(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var __=me((g0e,v_)=>{"use strict";var FK=w_(),VK=x_();v_.exports=FK.bind(null,VK)});var A_=me((b0e,R_)=>{"use strict";var qK=__(),HK=/[\/\?<>\\:\*\|"]/g,$K=/[\x00-\x1f\x80-\x9f]/g,GK=/^\.+$/,YK=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,WK=/[\. ]+$/;function S_(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(HK,e).replace($K,e).replace(GK,e).replace(YK,e).replace(WK,e);return qK(t,255)}R_.exports=function(r,e){var t=e&&e.replacement||"",n=S_(r,t);return t===""?n:S_(n,"")}});var tS=me((B3e,eS)=>{"use strict";function CM(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function f(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var p=0,m=0,g=0,b=y.length;g!==b&&y[g]===0;)g++,p++;for(var E=(b-g)*l+1>>>0,w=new Uint8Array(E);g!==b;){for(var _=y[g],I=0,k=E-1;(_!==0||I<m)&&k!==-1;k--,I++)_+=256*w[k]>>>0,w[k]=_%i>>>0,_=_/i>>>0;if(_!==0)throw new Error("Non-zero carry");m=I,g++}for(var D=E-m;D!==E&&w[D]===0;)D++;for(var A=a.repeat(p);D<E;++D)A+=r.charAt(w[D]);return A}function u(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var p=0;if(y[p]!==" "){for(var m=0,g=0;y[p]===a;)m++,p++;for(var b=(y.length-p)*c+1>>>0,E=new Uint8Array(b);y[p];){var w=e[y.charCodeAt(p)];if(w===255)return;for(var _=0,I=b-1;(w!==0||_<g)&&I!==-1;I--,_++)w+=i*E[I]>>>0,E[I]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");g=_,p++}if(y[p]!==" "){for(var k=b-g;k!==b&&E[k]===0;)k++;for(var D=new Uint8Array(m+(b-k)),A=m;k!==b;)D[A++]=E[k++];return D}}}function d(y){var p=u(y);if(p)return p;throw new Error("Non-base"+i+" character")}return{encode:f,decodeUnsafe:u,decode:d}}eS.exports=CM});var sp=me((L3e,rS)=>{"use strict";var NM=new TextDecoder,BM=r=>NM.decode(r),LM=new TextEncoder,OM=r=>LM.encode(r);function KM(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}rS.exports={decodeText:BM,encodeText:OM,concat:KM}});var oS=me((O3e,nS)=>{"use strict";var{encodeText:MM}=sp(),y4=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=MM(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};nS.exports=y4});var iS=me((K3e,sS)=>{"use strict";var UM=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;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=n[r[l]];if(f===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|f,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},FM=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},VM=r=>e=>({encode(t){return FM(t,e,r)},decode(t){return UM(t,e,r)}});sS.exports={rfc4648:VM}});var uS=me((M3e,lS)=>{"use strict";var Pu=tS(),qM=oS(),{rfc4648:Ft}=iS(),{decodeText:HM,encodeText:$M}=sp(),GM=()=>({encode:HM,decode:$M}),aS=[["identity","\0",GM,""],["base2","0",Ft(1),"01"],["base8","7",Ft(3),"01234567"],["base10","9",Pu,"0123456789"],["base16","f",Ft(4),"0123456789abcdef"],["base16upper","F",Ft(4),"0123456789ABCDEF"],["base32hex","v",Ft(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",Ft(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",Ft(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",Ft(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",Ft(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",Ft(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",Ft(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",Ft(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",Ft(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",Pu,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",Pu,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",Pu,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",Pu,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],cS=aS.reduce((r,e)=>(r[e[0]]=new qM(e[0],e[1],e[2],e[3]),r),{}),YM=aS.reduce((r,e)=>(r[e[1]]=cS[e[0]],r),{});lS.exports={names:cS,codes:YM}});var hS=me((Ho,dS)=>{"use strict";var xc=uS(),{encodeText:WM,decodeText:ip,concat:fS}=sp();function zM(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=$i(r);return JM(t,e),fS([n,e],n.length+e.length)}function jM(r,e){let t=$i(r),n=WM(t.encode(e));return fS([t.codeBuf,n],t.codeBuf.length+n.length)}function XM(r){r instanceof Uint8Array&&(r=ip(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),$i(r[0]).decode(r.substring(1))}function QM(r){if(r instanceof Uint8Array&&(r=ip(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return $i(r[0]).name}catch{return!1}}function JM(r,e){$i(r).decode(ip(e))}function $i(r){if(Object.prototype.hasOwnProperty.call(xc.names,r))return xc.names[r];if(Object.prototype.hasOwnProperty.call(xc.codes,r))return xc.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function ZM(r){return r instanceof Uint8Array&&(r=ip(r)),$i(r[0])}Ho=dS.exports=zM;Ho.encode=jM;Ho.decode=XM;Ho.isEncoded=QM;Ho.encoding=$i;Ho.encodingFromData=ZM;var eU=Object.freeze(xc.names),tU=Object.freeze(xc.codes);Ho.names=eU;Ho.codes=tU});var gS=me((U3e,yS)=>{yS.exports=mS;var pS=128,rU=127,nU=~rU,oU=Math.pow(2,31);function mS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=oU;)e[t++]=r&255|pS,r/=128;for(;r&nU;)e[t++]=r&255|pS,r>>>=7;return e[t]=r|0,mS.bytes=t-n+1,e}});var ES=me((F3e,wS)=>{wS.exports=g4;var sU=128,bS=127;function g4(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw g4.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&bS)<<o:(i&bS)*Math.pow(2,o),o+=7}while(i>=sU);return g4.bytes=s-n,t}});var vS=me((V3e,xS)=>{var iU=Math.pow(2,7),aU=Math.pow(2,14),cU=Math.pow(2,21),lU=Math.pow(2,28),uU=Math.pow(2,35),fU=Math.pow(2,42),dU=Math.pow(2,49),hU=Math.pow(2,56),pU=Math.pow(2,63);xS.exports=function(r){return r<iU?1:r<aU?2:r<cU?3:r<lU?4:r<uU?5:r<fU?6:r<dU?7:r<hU?8:r<pU?9:10}});var SS=me((q3e,_S)=>{_S.exports={encode:gS(),decode:ES(),encodingLength:vS()}});var AS=me((H3e,RS)=>{"use strict";var mU=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});RS.exports={names:mU}});function yU(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,g=0,b=0,E=p.length;b!==E&&p[b]===0;)b++,m++;for(var w=(E-b)*f+1>>>0,_=new Uint8Array(w);b!==E;){for(var I=p[b],k=0,D=w-1;(I!==0||k<g)&&D!==-1;D--,k++)I+=256*_[D]>>>0,_[D]=I%a>>>0,I=I/a>>>0;if(I!==0)throw new Error("Non-zero carry");g=k,b++}for(var A=w-g;A!==w&&_[A]===0;)A++;for(var C=c.repeat(m);A<w;++A)C+=r.charAt(_[A]);return C}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 g=0,b=0;p[m]===c;)g++,m++;for(var E=(p.length-m)*l+1>>>0,w=new Uint8Array(E);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var I=0,k=E-1;(_!==0||I<b)&&k!==-1;k--,I++)_+=a*w[k]>>>0,w[k]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");b=I,m++}if(p[m]!==" "){for(var D=E-b;D!==E&&w[D]===0;)D++;for(var A=new Uint8Array(g+(E-D)),C=g;D!==E;)A[C++]=w[D++];return A}}}function y(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:d,decode:y}}var gU,bU,IS,kS=Oe(()=>{gU=yU,bU=gU,IS=bU});var G3e,TS,$o,DS,PS,Fs=Oe(()=>{G3e=new Uint8Array(0),TS=(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},$o=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")},DS=r=>new TextEncoder().encode(r),PS=r=>new TextDecoder().decode(r)});var b4,w4,E4,NS,x4,vc,Vs,wU,EU,ut,En=Oe(()=>{kS();Fs();b4=class{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")}},w4=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 NS(this,e)}},E4=class{constructor(e){this.decoders=e}or(e){return NS(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},NS=(r,e)=>new E4({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),x4=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new b4(e,t,n),this.decoder=new w4(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},vc=({name:r,prefix:e,encode:t,decode:n})=>new x4(r,e,t,n),Vs=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=IS(t,e);return vc({prefix:r,name:e,encode:n,decode:s=>$o(o(s))})},wU=(r,e,t,n)=>{let o={};for(let f=0;f<e.length;++f)o[e[f]]=f;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let f=0;f<s;++f){let u=o[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},EU=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},ut=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>vc({prefix:e,name:r,encode(o){return EU(o,n,t)},decode(o){return wU(o,n,t,r)}})});var v4={};oe(v4,{identity:()=>xU});var xU,BS=Oe(()=>{En();Fs();xU=vc({prefix:"\0",name:"identity",encode:r=>PS(r),decode:r=>DS(r)})});var _4={};oe(_4,{base2:()=>vU});var vU,LS=Oe(()=>{En();vU=ut({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var S4={};oe(S4,{base8:()=>_U});var _U,OS=Oe(()=>{En();_U=ut({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var R4={};oe(R4,{base10:()=>SU});var SU,KS=Oe(()=>{En();SU=Vs({prefix:"9",name:"base10",alphabet:"0123456789"})});var A4={};oe(A4,{base16:()=>RU,base16upper:()=>AU});var RU,AU,MS=Oe(()=>{En();RU=ut({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),AU=ut({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var I4={};oe(I4,{base32:()=>_c,base32hex:()=>DU,base32hexpad:()=>CU,base32hexpadupper:()=>NU,base32hexupper:()=>PU,base32pad:()=>kU,base32padupper:()=>TU,base32upper:()=>IU,base32z:()=>BU});var _c,IU,kU,TU,DU,PU,CU,NU,BU,k4=Oe(()=>{En();_c=ut({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),IU=ut({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),kU=ut({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),TU=ut({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),DU=ut({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),PU=ut({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),CU=ut({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),NU=ut({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),BU=ut({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var T4={};oe(T4,{base36:()=>LU,base36upper:()=>OU});var LU,OU,US=Oe(()=>{En();LU=Vs({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),OU=Vs({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var D4={};oe(D4,{base58btc:()=>eo,base58flickr:()=>KU});var eo,KU,P4=Oe(()=>{En();eo=Vs({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),KU=Vs({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var C4={};oe(C4,{base64:()=>MU,base64pad:()=>UU,base64url:()=>FU,base64urlpad:()=>VU});var MU,UU,FU,VU,FS=Oe(()=>{En();MU=ut({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),UU=ut({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),FU=ut({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),VU=ut({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var N4={};oe(N4,{base256emoji:()=>YU});function $U(r){return r.reduce((e,t)=>(e+=qU[t],e),"")}function GU(r){let e=[];for(let t of r){let n=HU[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var VS,qU,HU,YU,qS=Oe(()=>{En();VS=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}"),qU=VS.reduce((r,e,t)=>(r[t]=e,r),[]),HU=VS.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);YU=vc({prefix:"\u{1F680}",name:"base256emoji",encode:$U,decode:GU})});function GS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=XU;)e[t++]=r&255|HS,r/=128;for(;r&jU;)e[t++]=r&255|HS,r>>>=7;return e[t]=r|0,GS.bytes=t-n+1,e}function B4(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw B4.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&$S)<<o:(i&$S)*Math.pow(2,o),o+=7}while(i>=JU);return B4.bytes=s-n,t}var WU,HS,zU,jU,XU,QU,JU,$S,ZU,eF,tF,rF,nF,oF,sF,iF,aF,cF,lF,uF,Cu,YS=Oe(()=>{WU=GS,HS=128,zU=127,jU=~zU,XU=Math.pow(2,31);QU=B4,JU=128,$S=127;ZU=Math.pow(2,7),eF=Math.pow(2,14),tF=Math.pow(2,21),rF=Math.pow(2,28),nF=Math.pow(2,35),oF=Math.pow(2,42),sF=Math.pow(2,49),iF=Math.pow(2,56),aF=Math.pow(2,63),cF=function(r){return r<ZU?1:r<eF?2:r<tF?3:r<rF?4:r<nF?5:r<oF?6:r<sF?7:r<iF?8:r<aF?9:10},lF={encode:WU,decode:QU,encodingLength:cF},uF=lF,Cu=uF});var Nu,Sc,Rc,cp=Oe(()=>{YS();Nu=(r,e=0)=>[Cu.decode(r,e),Cu.decode.bytes],Sc=(r,e,t=0)=>(Cu.encode(r,e,t),e),Rc=r=>Cu.encodingLength(r)});var Gi,WS,zS,Ac,Lu=Oe(()=>{Fs();cp();Gi=(r,e)=>{let t=e.byteLength,n=Rc(r),o=n+Rc(t),s=new Uint8Array(o+t);return Sc(r,s,0),Sc(t,s,n),s.set(e,o),new Ac(r,t,e,s)},WS=r=>{let e=$o(r),[t,n]=Nu(e),[o,s]=Nu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ac(t,o,i,e)},zS=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&TS(r.bytes,e.bytes),Ac=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var O4,L4,K4=Oe(()=>{Lu();O4=({name:r,code:e,encode:t})=>new L4(r,e,t),L4=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Gi(this.code,t):t.then(n=>Gi(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var M4={};oe(M4,{sha256:()=>fF,sha512:()=>dF});var XS,fF,dF,QS=Oe(()=>{K4();XS=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),fF=O4({name:"sha2-256",code:18,encode:XS("SHA-256")}),dF=O4({name:"sha2-512",code:19,encode:XS("SHA-512")})});var U4={};oe(U4,{identity:()=>mF});var JS,hF,ZS,pF,mF,eR=Oe(()=>{Fs();Lu();JS=0,hF="identity",ZS=$o,pF=r=>Gi(JS,ZS(r)),mF={code:JS,name:hF,encode:ZS,digest:pF}});var tR=Oe(()=>{Fs()});var dye,hye,rR=Oe(()=>{dye=new TextEncoder,hye=new TextDecoder});var fp,bF,wF,EF,Ou,xF,nR,oR,lp,up,vF,_F,SF,sR=Oe(()=>{cp();Lu();P4();k4();Fs();fp=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:up,byteLength:up,code:lp,version:lp,multihash:lp,bytes:lp,_baseCache:up,asCID:up})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==Ou)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xF)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Gi(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&zS(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return wF(t,o,e||eo.encoder);default:return EF(t,o,e||_c.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return _F(/^0\.0/,SF),!!(e&&(e[oR]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||nR(t,n,o.bytes))}else if(e!=null&&e[oR]===!0){let{version:t,multihash:n,code:o}=e,s=WS(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==Ou)throw new Error(`Version 0 CID must use dag-pb (code: ${Ou}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=nR(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ou,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=$o(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 Ac(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]=Nu(e.subarray(t));return t+=d,u},o=n(),s=Ou;if(o===18?(o=0,t=0):o===1&&(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]=bF(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},bF=(r,e)=>{switch(r[0]){case"Q":{let t=e||eo;return[eo.prefix,t.decode(`${eo.prefix}${r}`)]}case eo.prefix:{let t=e||eo;return[eo.prefix,t.decode(r)]}case _c.prefix:{let t=e||_c;return[_c.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},wF=(r,e,t)=>{let{prefix:n}=t;if(n!==eo.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},EF=(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},Ou=112,xF=18,nR=(r,e,t)=>{let n=Rc(r),o=n+Rc(e),s=new Uint8Array(o+t.byteLength);return Sc(r,s,0),Sc(e,s,n),s.set(t,o),s},oR=Symbol.for("@ipld/js-cid/CID"),lp={writable:!1,configurable:!1,enumerable:!0},up={writable:!1,enumerable:!1,configurable:!1},vF="0.0.0-dev",_F=(r,e)=>{if(r.test(vF))console.warn(e);else throw new Error(e)},SF=`CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
2
|
+
"use strict";var Helia=(()=>{var ZE=Object.create;var Rc=Object.defineProperty;var JE=Object.getOwnPropertyDescriptor;var ex=Object.getOwnPropertyNames;var tx=Object.getPrototypeOf,rx=Object.prototype.hasOwnProperty;var Ie=(r,e)=>()=>(r&&(e=r(r=0)),e);var ae=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),me=(r,e)=>{for(var t in e)Rc(r,t,{get:e[t],enumerable:!0})},z3=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ex(e))!rx.call(r,o)&&o!==t&&Rc(r,o,{get:()=>e[o],enumerable:!(n=JE(e,o))||n.enumerable});return r};var ke=(r,e,t)=>(t=r!=null?ZE(tx(r)):{},z3(e||!r||!r.__esModule?Rc(t,"default",{value:r,enumerable:!0}):t,r)),Ac=r=>z3(Rc({},"__esModule",{value:!0}),r);var m4=ae((WO,p4)=>{p4.exports=h4;var f4=128,$x=127,Hx=~$x,qx=Math.pow(2,31);function h4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=qx;)e[t++]=r&255|f4,r/=128;for(;r&Hx;)e[t++]=r&255|f4,r>>>=7;return e[t]=r|0,h4.bytes=t-n+1,e}});var w4=ae((zO,y4)=>{y4.exports=Af;var Wx=128,g4=127;function Af(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Af.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&g4)<<o:(i&g4)*Math.pow(2,o),o+=7}while(i>=Wx);return Af.bytes=s-n,t}});var E4=ae((GO,b4)=>{var zx=Math.pow(2,7),Gx=Math.pow(2,14),Yx=Math.pow(2,21),Xx=Math.pow(2,28),Qx=Math.pow(2,35),jx=Math.pow(2,42),Zx=Math.pow(2,49),Jx=Math.pow(2,56),ev=Math.pow(2,63);b4.exports=function(r){return r<zx?1:r<Gx?2:r<Yx?3:r<Xx?4:r<Qx?5:r<jx?6:r<Zx?7:r<Jx?8:r<ev?9:10}});var v4=ae((YO,x4)=>{x4.exports={encode:m4(),decode:w4(),encodingLength:E4()}});var R4=ae((XO,S4)=>{"use strict";var _4=v4();S4.exports=r=>{if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=_4.decode(r);e.push(t),r=r.slice(_4.decode.bytes)}return e}});var If=ae((QO,A4)=>{var Vs=1e3,Ks=Vs*60,$s=Ks*60,zo=$s*24,tv=zo*7,rv=zo*365.25;A4.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return nv(r);if(t==="number"&&isFinite(r))return e.long?sv(r):ov(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function nv(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\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(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*rv;case"weeks":case"week":case"w":return t*tv;case"days":case"day":case"d":return t*zo;case"hours":case"hour":case"hrs":case"hr":case"h":return t*$s;case"minutes":case"minute":case"mins":case"min":case"m":return t*Ks;case"seconds":case"second":case"secs":case"sec":case"s":return t*Vs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function ov(r){var e=Math.abs(r);return e>=zo?Math.round(r/zo)+"d":e>=$s?Math.round(r/$s)+"h":e>=Ks?Math.round(r/Ks)+"m":e>=Vs?Math.round(r/Vs)+"s":r+"ms"}function sv(r){var e=Math.abs(r);return e>=zo?kc(r,e,zo,"day"):e>=$s?kc(r,e,$s,"hour"):e>=Ks?kc(r,e,Ks,"minute"):e>=Vs?kc(r,e,Vs,"second"):r+" ms"}function kc(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var D4=ae((jO,I4)=>{function iv(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=If(),t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,f=null,m,h;function p(...y){if(!p.enabled)return;let w=p,E=Number(new Date),b=E-(u||E);w.diff=b,w.prev=u,w.curr=E,u=E,y[0]=t.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let S=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(A,D)=>{if(A==="%%")return"%";S++;let _=t.formatters[D];if(typeof _=="function"){let k=y[S];A=_.call(w,k),y.splice(S,1),S--}return A}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}return p.namespace=d,p.useColors=t.useColors(),p.color=t.selectColor(d),p.extend=n,p.destroy=t.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(m!==t.namespaces&&(m=t.namespaces,h=t.enabled(d)),h),set:y=>{f=y}}),typeof t.init=="function"&&t.init(p),p}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),m=f.length;for(u=0;u<m;u++)f[u]&&(d=f[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.slice(1)+"$")):t.names.push(new RegExp("^"+d+"$")))}function s(){let d=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),d}function i(d){if(d[d.length-1]==="*")return!0;let u,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack||d.message:d}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.enable(t.load()),t}I4.exports=iv});var Df=ae((Wt,Cc)=>{Wt.formatArgs=cv;Wt.save=lv;Wt.load=uv;Wt.useColors=av;Wt.storage=dv();Wt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Wt.colors=["#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 av(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function cv(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Cc.exports.humanize(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)}Wt.log=console.debug||console.log||(()=>{});function lv(r){try{r?Wt.storage.setItem("debug",r):Wt.storage.removeItem("debug")}catch{}}function uv(){let r;try{r=Wt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function dv(){try{return localStorage}catch{}}Cc.exports=D4()(Wt);var{formatters:fv}=Cc.exports;fv.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var C4=ae((hP,k4)=>{k4.exports=Cf;var T4=128,gv=127,yv=~gv,wv=Math.pow(2,31);function Cf(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw Cf.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=wv;)e[t++]=r&255|T4,r/=128;for(;r&yv;)e[t++]=r&255|T4,r>>>=7;return e[t]=r|0,Cf.bytes=t-n+1,e}});var P4=ae((pP,O4)=>{O4.exports=Nf;var bv=128,N4=127;function Nf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a||o>49)throw Nf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&N4)<<o:(i&N4)*Math.pow(2,o),o+=7}while(i>=bv);return Nf.bytes=s-n,t}});var B4=ae((mP,L4)=>{var Ev=Math.pow(2,7),xv=Math.pow(2,14),vv=Math.pow(2,21),_v=Math.pow(2,28),Sv=Math.pow(2,35),Rv=Math.pow(2,42),Av=Math.pow(2,49),Iv=Math.pow(2,56),Dv=Math.pow(2,63);L4.exports=function(r){return r<Ev?1:r<xv?2:r<vv?3:r<_v?4:r<Sv?5:r<Rv?6:r<Av?7:r<Iv?8:r<Dv?9:10}});var U4=ae((gP,M4)=>{M4.exports={encode:C4(),decode:P4(),encodingLength:B4()}});var Qo=ae((bB,c8)=>{"use strict";function a8(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function u_(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return a8(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),a8(new o,t)}}c8.exports=u_});var f8=ae((FB,d8)=>{"use strict";d8.exports=function(){return Date.now()}});var p8=ae((VB,h8)=>{"use strict";var Gc=f8(),uh=class{constructor(e,t,n){let o=this;this._started=Gc(),this._rescheduled=0,this._scheduled=t,this._args=n,this._triggered=!1,this._timerWrapper=()=>{o._rescheduled>0?(o._scheduled=o._rescheduled-(Gc()-o._started),o._schedule(o._scheduled)):(o._triggered=!0,e.apply(null,o._args))},this._timer=setTimeout(this._timerWrapper,t)}reschedule(e){e||(e=this._scheduled);let t=Gc();t+e-(this._started+this._scheduled)<0?(clearTimeout(this._timer),this._schedule(e)):this._triggered?this._schedule(e):(this._started=t,this._rescheduled=e)}_schedule(e){this._triggered=!1,this._started=Gc(),this._rescheduled=0,this._scheduled=e,this._timer=setTimeout(this._timerWrapper,e)}clear(){clearTimeout(this._timer)}};function v_(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("timeout needed");let r;if(arguments.length>0){r=new Array(arguments.length-2);for(var e=0;e<r.length;e++)r[e]=arguments[e+2]}return new uh(arguments[0],arguments[1],r)}h8.exports=v_});var y8=ae((KB,g8)=>{"use strict";var{AbortController:__}=globalThis,m8=p8(),dh=class r extends __{constructor(e){super(),this._ms=e,this._timer=m8(()=>this.abort(),e),Object.setPrototypeOf(this,r.prototype)}abort(){return this._timer.clear(),super.abort()}clear(){this._timer.clear()}reset(){this._timer.clear(),this._timer=m8(()=>this.abort(),this._ms)}};g8.exports={TimeoutController:dh}});var jc=ae((ZB,mh)=>{"use strict";var zs=typeof Reflect=="object"?Reflect:null,_8=zs&&typeof zs.apply=="function"?zs.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},Xc;zs&&typeof zs.ownKeys=="function"?Xc=zs.ownKeys:Object.getOwnPropertySymbols?Xc=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Xc=function(e){return Object.getOwnPropertyNames(e)};function I_(r){console&&console.warn&&console.warn(r)}var R8=Number.isNaN||function(e){return e!==e};function Ne(){Ne.init.call(this)}mh.exports=Ne;mh.exports.once=C_;Ne.EventEmitter=Ne;Ne.prototype._events=void 0;Ne.prototype._eventsCount=0;Ne.prototype._maxListeners=void 0;var S8=10;function Qc(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(Ne,"defaultMaxListeners",{enumerable:!0,get:function(){return S8},set:function(r){if(typeof r!="number"||r<0||R8(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");S8=r}});Ne.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ne.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||R8(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function A8(r){return r._maxListeners===void 0?Ne.defaultMaxListeners:r._maxListeners}Ne.prototype.getMaxListeners=function(){return A8(this)};Ne.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var o=e==="error",s=this._events;if(s!==void 0)o=o&&s.error===void 0;else if(!o)return!1;if(o){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")_8(c,this,t);else for(var l=c.length,d=C8(c,l),n=0;n<l;++n)_8(d[n],this,t);return!0};function I8(r,e,t,n){var o,s,i;if(Qc(t),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&(r.emit("newListener",e,t.listener?t.listener:t),s=r._events),i=s[e]),i===void 0)i=s[e]=t,++r._eventsCount;else if(typeof i=="function"?i=s[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),o=A8(r),o>0&&i.length>o&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=i.length,I_(a)}return r}Ne.prototype.addListener=function(e,t){return I8(this,e,t,!1)};Ne.prototype.on=Ne.prototype.addListener;Ne.prototype.prependListener=function(e,t){return I8(this,e,t,!0)};function D_(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function D8(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=D_.bind(n);return o.listener=t,n.wrapFn=o,o}Ne.prototype.once=function(e,t){return Qc(t),this.on(e,D8(this,e,t)),this};Ne.prototype.prependOnceListener=function(e,t){return Qc(t),this.prependListener(e,D8(this,e,t)),this};Ne.prototype.removeListener=function(e,t){var n,o,s,i,a;if(Qc(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():T_(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};Ne.prototype.off=Ne.prototype.removeListener;Ne.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o<s.length;++o)i=s[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this};function T8(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?k_(o):C8(o,o.length)}Ne.prototype.listeners=function(e){return T8(this,e,!0)};Ne.prototype.rawListeners=function(e){return T8(this,e,!1)};Ne.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):k8.call(r,e)};Ne.prototype.listenerCount=k8;function k8(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}Ne.prototype.eventNames=function(){return this._eventsCount>0?Xc(this._events):[]};function C8(r,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=r[n];return t}function T_(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];r.pop()}function k_(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].listener||r[t];return e}function C_(r,e){return new Promise(function(t,n){function o(i){r.removeListener(e,s),n(i)}function s(){typeof r.removeListener=="function"&&r.removeListener("error",o),t([].slice.call(arguments))}N8(r,e,s,{once:!0}),e!=="error"&&N_(r,o,{once:!0})})}function N_(r,e,t){typeof r.on=="function"&&N8(r,"error",e,t)}function N8(r,e,t,n){if(typeof r.on=="function")n.once?r.once(e,t):r.on(e,t);else if(typeof r.addEventListener=="function")r.addEventListener(e,function o(s){n.once&&r.removeEventListener(e,o),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r)}});var U8=ae((B8,M8)=>{"use strict";var O_=Math.exp;B8=M8.exports=function(e){if(typeof e!="number")throw new Error("must provide a timespan to the moving average constructor");if(e<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let t,n=0,o=0,s=0,i,a={};function c(l,d){return 1-O_(-(l-d)/e)}return a.push=function(d,u){if(i){let f=c(d,i),m=u-t,h=f*m;t=f*u+(1-f)*t,n=(1-f)*(n+m*h),o=Math.sqrt(n),s=t+f*m}else t=u;i=d},a.movingAverage=function(){return t},a.variance=function(){return n},a.deviation=function(){return o},a.forecast=function(){return s},a}});var Ym=ae(si=>{"use strict";var xR="[object ArrayBuffer]",An=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===xR}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},n0="string",vR=/^[0-9a-f]+$/i,_R=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,SR=/^[a-zA-Z0-9-_]+$/,Sl=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=An.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},hr=class{static toString(e,t=!1){let n=An.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Rl=class r{static isHex(e){return typeof e===n0&&vR.test(e)}static isBase64(e){return typeof e===n0&&_R.test(e)}static isBase64Url(e){return typeof e===n0&&SR.test(e)}static ToString(e,t="utf8"){let n=An.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return hr.toString(n,!0);case"utf16":case"utf16be":return hr.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return hr.fromString(e,!0);case"utf16":case"utf16be":return hr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=An.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Sl.fromString(e);case"utf16":case"utf16be":return hr.fromString(e);case"utf16le":case"usc2":return hr.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Sl.toString(e);case"utf16":case"utf16be":return hr.toString(e);case"utf16le":case"usc2":return hr.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=An.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=An.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return hr.toString(e,t)}static FromUtf16String(e,t=!1){return hr.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Rl.DEFAULT_UTF8_ENCODING="utf8";function RR(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function AR(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function IR(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}si.BufferSourceConverter=An;si.Convert=Rl;si.assign=RR;si.combine=AR;si.isEqual=IR});var mu=ae((c$,v0)=>{var a$=function(){typeof v0<"u"&&(v0.exports=p);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(_){var k=_-_%1;return k==0&&(_<0||_===0&&1/_!=1/0)?-0:k},d=p.prototype,u=(p.fromDate=function(_){return new p(+_)},p.fromInt64BE=S(0,1,2,3,0,4),p.fromInt64LE=S(3,2,1,0,4,0),p.fromString=function(N){var k,O=new p,N=(N+="").replace(/^\s*[+\-]?\d+/,function(F){var F=+F,Y=1970+(F-1970)%400;return O.year=F-Y,Y}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(P,F,Y){return F<0&&(Y*=-1),k=6e4*(60*+F+ +Y),""}).replace(/\.\d+$/,function(P){return O.nano=+(P+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,O.time=k=Date.UTC.apply(Date,N)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return y(O)},p.fromTimeT=function(_){return E(_,0)},d.year=0,d.time=0,d.nano=0,d.addNano=function(_){return this.nano+=+_||0,this},d.getNano=function(){var _=y(this);return(_.time%1e3*a+ +_.nano+1e9)%1e9},d.getTimeT=function(){var k=y(this),_=Math.floor(k.time/1e3),k=k.year;return k&&(_+=k*t*r/e),_},d.getYear=function(){return this.toDate().getUTCFullYear()+this.year},d.toDate=function(){return w(y(this).time)},d.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},d.toString=function(_){var k=this,O=k.toDate(),N={H:function(){return A(O.getUTCHours())},L:function(){return D(O.getUTCMilliseconds(),3)},M:function(){return A(O.getUTCMinutes())},N:function(){return D(k.getNano(),9)},S:function(){return A(O.getUTCSeconds())},Y:function(){var P=k.getYear();return 999999<P?"+"+P:9999<P?"+"+D(P,6):0<=P?D(P,4):-999999<=P?"-"+D(-P,6):P},a:function(){return m[O.getUTCDay()]},b:function(){return f[O.getUTCMonth()]},d:function(){return A(O.getUTCDate())},e:function(){return function(P){return(9<P?"":" ")+(0|P)}(O.getUTCDate())},m:function(){return A(O.getUTCMonth()+1)}};return function P(F){return F.replace(/%./g,function(Y){var C=Y[1],I=h[C],C=N[C];return I?P(I):C?C():Y})}(_||u)},d.writeInt64BE=b(0,1,2,3,0,4),d.writeInt64LE=b(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
+
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return p;function p(_,k,O){var N=this;if(!(N instanceof p))return new p(_,k,O);N.time=+_||0,N.nano=+k||0,N.year=+O||0,y(N)}function y(_){var k,O,N,P=_.year,F=_.time,Y=_.nano,I=((Y<0||a<=Y)&&(Y-=(O=Math.floor(Y/a))*a,F+=O,O=1),P%e);return(F<-s||s<F||I)&&((k=l(F/o))&&(P+=k*e,F-=k*o),(N=w(F)).setUTCFullYear(I+N.getUTCFullYear()),N=(F=+N)+(k=l((P-=I)/e))*o,k&&-s<=N&&N<=s&&(P-=k*e,F=N),O=1),O&&(_.year=P,_.time=F,_.nano=Y),_}function w(_){var k=new Date(0);return k.setTime(_),k}function E(P,N){P=+P||0;var O=l((N=(N|0)*i)/n)+l(P/n),N=N%n+P%n,P=l(N/n);return P&&(O+=P,N-=P*n),new p(1e3*N,0,O*e)}function b(_,k,O,N,P,F){return function(I,C){var T=y(this);I=I||new Array(8),R(I,C|=0);var v=Math.floor(T.time/1e3),T=T.year*(t*r/e),$=l(T/i)+l(v/i),T=T%i+v%i,v=Math.floor(T/i);return v&&($+=v,T-=v*i),Y(I,C+P,$),Y(I,C+F,T),I};function Y(I,C,$){I[C+_]=$>>24&255,I[C+k]=$>>16&255,I[C+O]=$>>8&255,I[C+N]=255&$}}function S(_,k,O,N,P,F){return function(I,C){R(I,C|=0);var $=Y(I,C+P);return E(Y(I,C+F),$)};function Y(I,C){return 16777216*I[C+_]+(I[C+k]<<16|I[C+O]<<8|I[C+N])}}function R(_,k){if(_=_&&_.length,_==null)throw new TypeError("Invalid Buffer");if(_<k+8)throw new RangeError("Out of range")}function A(_){return(9<_?"":"0")+(0|_)}function D(_,k){return(c+(0|_)).substr(-k)}}()});var y7=ae((HH,O0)=>{"use strict";var zA=Object.prototype.hasOwnProperty,Pt="~";function Ma(){}Object.create&&(Ma.prototype=Object.create(null),new Ma().__proto__||(Pt=!1));function GA(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function g7(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new GA(t,n||r,o),i=Pt?Pt+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 Nu(r,e){--r._eventsCount===0?r._events=new Ma:delete r._events[e]}function kt(){this._events=new Ma,this._eventsCount=0}kt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)zA.call(t,n)&&e.push(Pt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};kt.prototype.listeners=function(e){var t=Pt?Pt+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};kt.prototype.listenerCount=function(e){var t=Pt?Pt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};kt.prototype.emit=function(e,t,n,o,s,i){var a=Pt?Pt+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,d,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,d=new Array(l-1);u<l;u++)d[u-1]=arguments[u];c.fn.apply(c.context,d)}else{var f=c.length,m;for(u=0;u<f;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(!d)for(m=1,d=new Array(l-1);m<l;m++)d[m-1]=arguments[m];c[u].fn.apply(c[u].context,d)}}return!0};kt.prototype.on=function(e,t,n){return g7(this,e,t,n,!1)};kt.prototype.once=function(e,t,n){return g7(this,e,t,n,!0)};kt.prototype.removeListener=function(e,t,n,o){var s=Pt?Pt+e:e;if(!this._events[s])return this;if(!t)return Nu(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Nu(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:Nu(this,s)}return this};kt.prototype.removeAllListeners=function(e){var t;return e?(t=Pt?Pt+e:e,this._events[t]&&Nu(this,t)):(this._events=new Ma,this._eventsCount=0),this};kt.prototype.off=kt.prototype.removeListener;kt.prototype.addListener=kt.prototype.on;kt.prefixed=Pt;kt.EventEmitter=kt;typeof O0<"u"&&(O0.exports=kt)});var Vg=ae(Xa=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,f;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,f=c&255,[l,d,u,f].join(".")},i=function(c){var l,d,u,f,m,h;for(l=[],u=f=0;f<=3&&c.length!==0;u=++f){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=e(c),m=h[0],d=h[1],c=c.substring(d),l.push(m)}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,d,u,f,m;for(f=0,l=10,d="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,d="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)f=f*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")f=f*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")f=f*l+(10+t(c[u])-o)>>>0;else break;else break;if(f>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[f,u]},r=function(){function c(l,d){var u,f,m,h;if(typeof l!="string")throw new Error("Missing `net' parameter");if(d||(h=l.split("/",2),l=h[0],d=h[1]),d||(d=32),typeof d=="string"&&d.indexOf(".")>-1){try{this.maskLong=i(d)}catch(p){throw u=p,new Error("Invalid mask: "+d)}for(f=m=32;m>=0;f=--m)if(this.maskLong===4294967295<<32-f>>>0){this.bitmask=f;break}}else if(d||d===0)this.bitmask=parseInt(d,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(p){throw u=p,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+d);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 d,u,f;for(f=i(this.first),u=i(this.last),d=0;f<=u;)l(a(f),f,d),d++,f++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Xa.ip2long=i,Xa.long2ip=a,Xa.Netmask=r}).call(Xa)});var F9=ae((OJ,U9)=>{function VD(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}U9.exports=VD});var uy=ae((Tte,ly)=>{ly.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 Sy=ae((Kne,_y)=>{"use strict";_y.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var ky=ae((Dy,Ty)=>{"use strict";var sd=Sy(),{hasOwnProperty:Ay}=Object.prototype,{propertyIsEnumerable:gT}=Object,Li=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),yT=Dy,Ry={concatArrays:!1,ignoreUndefined:!1},id=r=>{let e=[];for(let t in r)Ay.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)gT.call(r,n)&&e.push(n)}return e};function Bi(r){return Array.isArray(r)?wT(r):sd(r)?bT(r):r}function wT(r){let e=r.slice(0,0);return id(r).forEach(t=>{Li(e,t,Bi(r[t]))}),e}function bT(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return id(r).forEach(t=>{Li(e,t,Bi(r[t]))}),e}var Iy=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Li(r,o,hp(r[o],e[o],n)):Li(r,o,Bi(e[o])))}),r),ET=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)Ay.call(s,a)&&(i.push(String(a)),s===r?Li(n,o++,s[a]):Li(n,o++,Bi(s[a])));n=Iy(n,s,id(s).filter(a=>!i.includes(a)),t)}),n};function hp(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?ET(r,e,t):!sd(e)||!sd(r)?Bi(e):Iy(r,e,id(e),t)}Ty.exports=function(...r){let e=hp(Bi(Ry),this!==yT&&this||{},Ry),t={_:{}};for(let n of r)if(n!==void 0){if(!sd(n))throw new TypeError("`"+n+"` is not an Option Object");t=hp(t,{_:n},e)}return t._}});var Oy=ae((Hne,Ny)=>{"use strict";function xT(r){return r>=55296&&r<=56319}function vT(r){return r>=56320&&r<=57343}Ny.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],xT(i)&&vT(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Ly=ae((qne,Py)=>{"use strict";function _T(r){return r>=55296&&r<=56319}function ST(r){return r>=56320&&r<=57343}Py.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),ST(o)?s!=null&&_T(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var My=ae((Wne,By)=>{"use strict";var RT=Oy(),AT=Ly();By.exports=RT.bind(null,AT)});var Vy=ae((zne,Fy)=>{"use strict";var IT=My(),DT=/[\/\?<>\\:\*\|"]/g,TT=/[\x00-\x1f\x80-\x9f]/g,kT=/^\.+$/,CT=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,NT=/[\. ]+$/;function Uy(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(DT,e).replace(TT,e).replace(kT,e).replace(CT,e).replace(NT,e);return IT(t,255)}Fy.exports=function(r,e){var t=e&&e.replacement||"",n=Uy(r,t);return t===""?n:Uy(n,"")}});var mw=ae((nie,pw)=>{"use strict";function yk(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function d(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var h=0,p=0,y=0,w=m.length;y!==w&&m[y]===0;)y++,h++;for(var E=(w-y)*l+1>>>0,b=new Uint8Array(E);y!==w;){for(var S=m[y],R=0,A=E-1;(S!==0||R<p)&&A!==-1;A--,R++)S+=256*b[A]>>>0,b[A]=S%i>>>0,S=S/i>>>0;if(S!==0)throw new Error("Non-zero carry");p=R,y++}for(var D=E-p;D!==E&&b[D]===0;)D++;for(var _=a.repeat(h);D<E;++D)_+=r.charAt(b[D]);return _}function u(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var h=0;if(m[h]!==" "){for(var p=0,y=0;m[h]===a;)p++,h++;for(var w=(m.length-h)*c+1>>>0,E=new Uint8Array(w);m[h];){var b=e[m.charCodeAt(h)];if(b===255)return;for(var S=0,R=w-1;(b!==0||S<y)&&R!==-1;R--,S++)b+=i*E[R]>>>0,E[R]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");y=S,h++}if(m[h]!==" "){for(var A=w-y;A!==w&&E[A]===0;)A++;for(var D=new Uint8Array(p+(w-A)),_=p;A!==w;)D[_++]=E[A++];return D}}}function f(m){var h=u(m);if(h)return h;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:f}}pw.exports=yk});var Ed=ae((oie,gw)=>{"use strict";var wk=new TextDecoder,bk=r=>wk.decode(r),Ek=new TextEncoder,xk=r=>Ek.encode(r);function vk(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}gw.exports={decodeText:bk,encodeText:xk,concat:vk}});var ww=ae((sie,yw)=>{"use strict";var{encodeText:_k}=Ed(),Op=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=_k(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};yw.exports=Op});var Ew=ae((iie,bw)=>{"use strict";var Sk=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;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 d=n[r[l]];if(d===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},Rk=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},Ak=r=>e=>({encode(t){return Rk(t,e,r)},decode(t){return Sk(t,e,r)}});bw.exports={rfc4648:Ak}});var Sw=ae((aie,_w)=>{"use strict";var mc=mw(),Ik=ww(),{rfc4648:vt}=Ew(),{decodeText:Dk,encodeText:Tk}=Ed(),kk=()=>({encode:Dk,decode:Tk}),xw=[["identity","\0",kk,""],["base2","0",vt(1),"01"],["base8","7",vt(3),"01234567"],["base10","9",mc,"0123456789"],["base16","f",vt(4),"0123456789abcdef"],["base16upper","F",vt(4),"0123456789ABCDEF"],["base32hex","v",vt(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",vt(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",vt(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",vt(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",vt(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",mc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",mc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",mc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",mc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],vw=xw.reduce((r,e)=>(r[e[0]]=new Ik(e[0],e[1],e[2],e[3]),r),{}),Ck=xw.reduce((r,e)=>(r[e[1]]=vw[e[0]],r),{});_w.exports={names:vw,codes:Ck}});var Iw=ae((Wn,Aw)=>{"use strict";var Ki=Sw(),{encodeText:Nk,decodeText:xd,concat:Rw}=Ed();function Ok(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=Ts(r);return Mk(t,e),Rw([n,e],n.length+e.length)}function Pk(r,e){let t=Ts(r),n=Nk(t.encode(e));return Rw([t.codeBuf,n],t.codeBuf.length+n.length)}function Lk(r){r instanceof Uint8Array&&(r=xd(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),Ts(r[0]).decode(r.substring(1))}function Bk(r){if(r instanceof Uint8Array&&(r=xd(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return Ts(r[0]).name}catch{return!1}}function Mk(r,e){Ts(r).decode(xd(e))}function Ts(r){if(Object.prototype.hasOwnProperty.call(Ki.names,r))return Ki.names[r];if(Object.prototype.hasOwnProperty.call(Ki.codes,r))return Ki.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function Uk(r){return r instanceof Uint8Array&&(r=xd(r)),Ts(r[0])}Wn=Aw.exports=Ok;Wn.encode=Pk;Wn.decode=Lk;Wn.isEncoded=Bk;Wn.encoding=Ts;Wn.encodingFromData=Uk;var Fk=Object.freeze(Ki.names),Vk=Object.freeze(Ki.codes);Wn.names=Fk;Wn.codes=Vk});var Cw=ae((cie,kw)=>{kw.exports=Tw;var Dw=128,Kk=127,$k=~Kk,Hk=Math.pow(2,31);function Tw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Hk;)e[t++]=r&255|Dw,r/=128;for(;r&$k;)e[t++]=r&255|Dw,r>>>=7;return e[t]=r|0,Tw.bytes=t-n+1,e}});var Pw=ae((lie,Ow)=>{Ow.exports=Pp;var qk=128,Nw=127;function Pp(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Pp.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Nw)<<o:(i&Nw)*Math.pow(2,o),o+=7}while(i>=qk);return Pp.bytes=s-n,t}});var Bw=ae((uie,Lw)=>{var Wk=Math.pow(2,7),zk=Math.pow(2,14),Gk=Math.pow(2,21),Yk=Math.pow(2,28),Xk=Math.pow(2,35),Qk=Math.pow(2,42),jk=Math.pow(2,49),Zk=Math.pow(2,56),Jk=Math.pow(2,63);Lw.exports=function(r){return r<Wk?1:r<zk?2:r<Gk?3:r<Yk?4:r<Xk?5:r<Qk?6:r<jk?7:r<Zk?8:r<Jk?9:10}});var Uw=ae((die,Mw)=>{Mw.exports={encode:Cw(),decode:Pw(),encodingLength:Bw()}});var Vw=ae((fie,Fw)=>{"use strict";var eC=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});Fw.exports={names:eC}});function tC(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),d=Math.log(256)/Math.log(a);function u(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var rC,nC,Kw,$w=Ie(()=>{rC=tC,nC=rC,Kw=nC});var pie,Hw,zn,qw,Ww,Mo=Ie(()=>{pie=new Uint8Array(0),Hw=(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},zn=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")},qw=r=>new TextEncoder().encode(r),Ww=r=>new TextDecoder().decode(r)});var Lp,Bp,Mp,Gw,Up,$i,Uo,oC,sC,je,Qr=Ie(()=>{$w();Mo();Lp=class{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")}},Bp=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 Gw(this,e)}},Mp=class{constructor(e){this.decoders=e}or(e){return Gw(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Gw=(r,e)=>new Mp({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Up=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Lp(e,t,n),this.decoder=new Bp(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},$i=({name:r,prefix:e,encode:t,decode:n})=>new Up(r,e,t,n),Uo=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=Kw(t,e);return $i({prefix:r,name:e,encode:n,decode:s=>zn(o(s))})},oC=(r,e,t,n)=>{let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},sC=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},je=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>$i({prefix:e,name:r,encode(o){return sC(o,n,t)},decode(o){return oC(o,n,t,r)}})});var Fp={};me(Fp,{identity:()=>iC});var iC,Yw=Ie(()=>{Qr();Mo();iC=$i({prefix:"\0",name:"identity",encode:r=>Ww(r),decode:r=>qw(r)})});var Vp={};me(Vp,{base2:()=>aC});var aC,Xw=Ie(()=>{Qr();aC=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var Kp={};me(Kp,{base8:()=>cC});var cC,Qw=Ie(()=>{Qr();cC=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var $p={};me($p,{base10:()=>lC});var lC,jw=Ie(()=>{Qr();lC=Uo({prefix:"9",name:"base10",alphabet:"0123456789"})});var Hp={};me(Hp,{base16:()=>uC,base16upper:()=>dC});var uC,dC,Zw=Ie(()=>{Qr();uC=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),dC=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var qp={};me(qp,{base32:()=>Hi,base32hex:()=>mC,base32hexpad:()=>yC,base32hexpadupper:()=>wC,base32hexupper:()=>gC,base32pad:()=>hC,base32padupper:()=>pC,base32upper:()=>fC,base32z:()=>bC});var Hi,fC,hC,pC,mC,gC,yC,wC,bC,Wp=Ie(()=>{Qr();Hi=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),fC=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),hC=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),pC=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),mC=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),gC=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),yC=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),wC=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),bC=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var zp={};me(zp,{base36:()=>EC,base36upper:()=>xC});var EC,xC,Jw=Ie(()=>{Qr();EC=Uo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),xC=Uo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Gp={};me(Gp,{base58btc:()=>hn,base58flickr:()=>vC});var hn,vC,Yp=Ie(()=>{Qr();hn=Uo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),vC=Uo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var Xp={};me(Xp,{base64:()=>_C,base64pad:()=>SC,base64url:()=>RC,base64urlpad:()=>AC});var _C,SC,RC,AC,eb=Ie(()=>{Qr();_C=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),SC=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),RC=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),AC=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var Qp={};me(Qp,{base256emoji:()=>CC});function TC(r){return r.reduce((e,t)=>(e+=IC[t],e),"")}function kC(r){let e=[];for(let t of r){let n=DC[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var tb,IC,DC,CC,rb=Ie(()=>{Qr();tb=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}"),IC=tb.reduce((r,e,t)=>(r[t]=e,r),[]),DC=tb.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);CC=$i({prefix:"\u{1F680}",name:"base256emoji",encode:TC,decode:kC})});function sb(r,e,t){e=e||[],t=t||0;for(var n=t;r>=LC;)e[t++]=r&255|nb,r/=128;for(;r&PC;)e[t++]=r&255|nb,r>>>=7;return e[t]=r|0,sb.bytes=t-n+1,e}function jp(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw jp.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&ob)<<o:(i&ob)*Math.pow(2,o),o+=7}while(i>=MC);return jp.bytes=s-n,t}var NC,nb,OC,PC,LC,BC,MC,ob,UC,FC,VC,KC,$C,HC,qC,WC,zC,GC,YC,XC,gc,ib=Ie(()=>{NC=sb,nb=128,OC=127,PC=~OC,LC=Math.pow(2,31);BC=jp,MC=128,ob=127;UC=Math.pow(2,7),FC=Math.pow(2,14),VC=Math.pow(2,21),KC=Math.pow(2,28),$C=Math.pow(2,35),HC=Math.pow(2,42),qC=Math.pow(2,49),WC=Math.pow(2,56),zC=Math.pow(2,63),GC=function(r){return r<UC?1:r<FC?2:r<VC?3:r<KC?4:r<$C?5:r<HC?6:r<qC?7:r<WC?8:r<zC?9:10},YC={encode:NC,decode:BC,encodingLength:GC},XC=YC,gc=XC});var yc,qi,Wi,_d=Ie(()=>{ib();yc=(r,e=0)=>[gc.decode(r,e),gc.decode.bytes],qi=(r,e,t=0)=>(gc.encode(r,e,t),e),Wi=r=>gc.encodingLength(r)});var ks,ab,cb,zi,bc=Ie(()=>{Mo();_d();ks=(r,e)=>{let t=e.byteLength,n=Wi(r),o=n+Wi(t),s=new Uint8Array(o+t);return qi(r,s,0),qi(t,s,n),s.set(e,o),new zi(r,t,e,s)},ab=r=>{let e=zn(r),[t,n]=yc(e),[o,s]=yc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new zi(t,o,i,e)},cb=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&Hw(r.bytes,e.bytes),zi=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var Jp,Zp,e3=Ie(()=>{bc();Jp=({name:r,code:e,encode:t})=>new Zp(r,e,t),Zp=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?ks(this.code,t):t.then(n=>ks(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var t3={};me(t3,{sha256:()=>QC,sha512:()=>jC});var ub,QC,jC,db=Ie(()=>{e3();ub=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),QC=Jp({name:"sha2-256",code:18,encode:ub("SHA-256")}),jC=Jp({name:"sha2-512",code:19,encode:ub("SHA-512")})});var r3={};me(r3,{identity:()=>eN});var fb,ZC,hb,JC,eN,pb=Ie(()=>{Mo();bc();fb=0,ZC="identity",hb=zn,JC=r=>ks(fb,hb(r)),eN={code:fb,name:ZC,encode:hb,digest:JC}});var mb=Ie(()=>{Mo()});var Lie,Bie,gb=Ie(()=>{Lie=new TextEncoder,Bie=new TextDecoder});var Ad,nN,oN,sN,Ec,iN,yb,wb,Sd,Rd,aN,cN,lN,bb=Ie(()=>{_d();bc();Yp();Wp();Mo();Ad=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:Rd,byteLength:Rd,code:Sd,version:Sd,multihash:Sd,bytes:Sd,_baseCache:Rd,asCID:Rd})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==Ec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==iN)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=ks(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&cb(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return oN(t,o,e||hn.encoder);default:return sN(t,o,e||Hi.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return cN(/^0\.0/,lN),!!(e&&(e[wb]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||yb(t,n,o.bytes))}else if(e!=null&&e[wb]===!0){let{version:t,multihash:n,code:o}=e,s=ab(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==Ec)throw new Error(`Version 0 CID must use dag-pb (code: ${Ec}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=yb(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ec,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=zn(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 zi(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,f]=yc(e.subarray(t));return t+=f,u},o=n(),s=Ec;if(o===18?(o=0,t=0):o===1&&(s=n()),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=nN(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},nN=(r,e)=>{switch(r[0]){case"Q":{let t=e||hn;return[hn.prefix,t.decode(`${hn.prefix}${r}`)]}case hn.prefix:{let t=e||hn;return[hn.prefix,t.decode(r)]}case Hi.prefix:{let t=e||Hi;return[Hi.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},oN=(r,e,t)=>{let{prefix:n}=t;if(n!==hn.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},sN=(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},Ec=112,iN=18,yb=(r,e,t)=>{let n=Wi(r),o=n+Wi(e),s=new Uint8Array(o+t.byteLength);return qi(r,s,0),qi(e,s,n),s.set(t,o),s},wb=Symbol.for("@ipld/js-cid/CID"),Sd={writable:!1,configurable:!1,enumerable:!0},Rd={writable:!1,enumerable:!1,configurable:!1},aN="0.0.0-dev",cN=(r,e)=>{if(r.test(aN))console.warn(e);else throw new Error(e)},lN=`CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
4
4
|
Following code pattern:
|
|
5
5
|
|
|
6
6
|
if (CID.isCID(value)) {
|
|
@@ -14,17 +14,12 @@ if (cid) {
|
|
|
14
14
|
// Make sure to use cid instead of value
|
|
15
15
|
doSomethingWithCID(cid)
|
|
16
16
|
}
|
|
17
|
-
`});var iR=Oe(()=>{sR();cp();Fs();K4();Lu()});var F4,xye,aR=Oe(()=>{BS();LS();OS();KS();MS();k4();US();P4();FS();qS();QS();eR();tR();rR();iR();F4={...v4,..._4,...S4,...R4,...A4,...I4,...T4,...D4,...C4,...N4},xye={...M4,...U4}});function Ic(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var dp=Oe(()=>{});function hp(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Ic(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var V4=Oe(()=>{dp()});function lR(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var cR,q4,RF,pp,H4=Oe(()=>{aR();V4();cR=lR("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),q4=lR("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=hp(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),RF={utf8:cR,"utf-8":cR,hex:F4.base16,latin1:q4,ascii:q4,binary:q4,...F4},pp=RF});var uR={};oe(uR,{toString:()=>AF});function AF(r,e="utf8"){let t=pp[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var fR=Oe(()=>{H4()});var dR={};oe(dR,{fromString:()=>IF});function IF(r,e="utf8"){let t=pp[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Ic(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var hR=Oe(()=>{H4();dp()});var pR={};oe(pR,{concat:()=>kF});function kF(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=hp(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Ic(t)}var mR=Oe(()=>{V4();dp()});var G4=me((Bye,xR)=>{"use strict";var yR=hS(),kc=SS(),{names:Ku}=AS(),{toString:mp}=(fR(),zu(uR)),{fromString:TF}=(hR(),zu(dR)),{concat:DF}=(mR(),zu(pR)),Tc={};for(let r in Ku){let e=r;Tc[Ku[e]]=e}Object.freeze(Tc);function PF(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return mp(r,"base16")}function CF(r){return TF(r,"base16")}function NF(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return mp(yR.encode("base58btc",r)).slice(1)}function BF(r){let e=r instanceof Uint8Array?mp(r):r;return yR.decode("z"+e)}function gR(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=kc.decode(r);if(!wR(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(kc.decode.bytes);let t=kc.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(kc.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${mp(r,"base16")}`);return{code:e,name:Tc[e],length:t,digest:r}}function LF(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=bR(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=kc.encode(n),s=kc.encode(t);return DF([o,s,r],o.length+s.length+r.length)}function bR(r){let e=r;if(typeof r=="string"){if(Ku[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=Ku[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Tc[e]===void 0&&!$4(e))throw new Error(`Unrecognized function code: ${e}`);return e}function $4(r){return r>0&&r<16}function wR(r){return!!($4(r)||Tc[r])}function ER(r){gR(r)}function OF(r){return ER(r),r.subarray(0,2)}xR.exports={names:Ku,codes:Tc,toHexString:PF,fromHexString:CF,toB58String:NF,fromB58String:BF,decode:gR,encode:LF,coerceCode:bR,isAppCode:$4,validate:ER,prefix:OF,isValidCode:wR}});var MR=me(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});var j4=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},bp=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new j4;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};wp.EventIterator=bp;wp.default=bp});var UR=me(Mu=>{"use strict";Object.defineProperty(Mu,"__esModule",{value:!0});var X4=MR();Mu.EventIterator=X4.EventIterator;function $F(r,e,t){return new X4.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}Mu.subscribe=$F;Mu.default=X4.EventIterator});var KA=me((x6e,OA)=>{"use strict";OA.exports=LA;var AV=p2(),Hs=LA.prototype,IV=new Date%1e9;function kV(){return(Math.random()*1e9>>>0)+IV++}function LA(r){r=r||{},this.id=r.id||kV(),this.max=r.max||1/0,this.items=r.items||[],this._lookup={},this.size=this.items.length,this.lastModified=new Date(r.lastModified||new Date);for(var e,t,n=this.items.length;n--;)e=this.items[n],t=new Date(e.expires)-new Date,this._lookup[e.key]=e,t>0?this.expire(e.key,t):t<=0&&this.delete(e.key)}Hs.has=function(r){return r in this._lookup};Hs.get=function(r){if(!this.has(r))return null;var e=this._lookup[r];return e.refresh&&this.expire(r,e.refresh),this.items.splice(this.items.indexOf(e),1),this.items.push(e),e.value};Hs.meta=function(r){if(!this.has(r))return null;var e=this._lookup[r];return"meta"in e?e.meta:null};Hs.set=function(r,e,t){var n=this._lookup[r],o=this._lookup[r]={key:r,value:e};return this.lastModified=new Date,n?(clearTimeout(n.timeout),this.items.splice(this.items.indexOf(n),1,o)):(this.size>=this.max&&this.delete(this.items[0].key),this.items.push(o),this.size++),t&&("ttl"in t&&this.expire(r,t.ttl),"meta"in t&&(o.meta=t.meta),t.refresh&&(o.refresh=t.ttl)),this};Hs.delete=function(r){var e=this._lookup[r];return e?(this.lastModified=new Date,this.items.splice(this.items.indexOf(e),1),clearTimeout(e.timeout),delete this._lookup[r],this.size--,this):!1};Hs.expire=function(r,e){var t=e||0,n=this._lookup[r];if(!n)return this;if(typeof t=="string"&&(t=AV(e)),typeof t!="number")throw new TypeError("Expiration time must be a string or number.");return clearTimeout(n.timeout),n.timeout=setTimeout(this.delete.bind(this,n.key),t),n.expires=Number(new Date)+t,this};Hs.clear=function(){for(var r=this.items.length;r--;)this.delete(this.items[r].key);return this};Hs.toJSON=function(){for(var r=new Array(this.items.length),e,t=r.length;t--;)e=this.items[t],r[t]={key:e.key,meta:e.meta,value:e.value,expires:e.expires,refresh:e.refresh};return{id:this.id,max:isFinite(this.max)?this.max:void 0,lastModified:this.lastModified,items:r}}});var zV={};oe(zV,{createHelia:()=>YV,libp2pDefaults:()=>vp});function Rt(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}function uI(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 Zi=uI;function fI(r){return r[Symbol.asyncIterator]!=null}function F8(r){return r?.then!=null}function dI(r,e){if(fI(r))return async function*(){for await(let a of r){let c=e(a);F8(c)&&await c,yield a}}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);F8(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var Ys=dI;var t2={};oe(t2,{base32:()=>vt,base32hex:()=>EI,base32hexpad:()=>vI,base32hexpadupper:()=>_I,base32hexupper:()=>xI,base32pad:()=>bI,base32padupper:()=>wI,base32upper:()=>W8,base32z:()=>SI});var eq=new Uint8Array(0);function V8(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 io(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 q8(r){return new TextEncoder().encode(r)}function H8(r){return new TextDecoder().decode(r)}function hI(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,g=0,b=0,E=p.length;b!==E&&p[b]===0;)b++,m++;for(var w=(E-b)*f+1>>>0,_=new Uint8Array(w);b!==E;){for(var I=p[b],k=0,D=w-1;(I!==0||k<g)&&D!==-1;D--,k++)I+=256*_[D]>>>0,_[D]=I%a>>>0,I=I/a>>>0;if(I!==0)throw new Error("Non-zero carry");g=k,b++}for(var A=w-g;A!==w&&_[A]===0;)A++;for(var C=c.repeat(m);A<w;++A)C+=r.charAt(_[A]);return C}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 g=0,b=0;p[m]===c;)g++,m++;for(var E=(p.length-m)*l+1>>>0,w=new Uint8Array(E);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var I=0,k=E-1;(_!==0||I<b)&&k!==-1;k--,I++)_+=a*w[k]>>>0,w[k]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");b=I,m++}if(p[m]!==" "){for(var D=E-b;D!==E&&w[D]===0;)D++;for(var A=new Uint8Array(g+(E-D)),C=g;D!==E;)A[C++]=w[D++];return A}}}function y(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:d,decode:y}}var pI=hI,mI=pI,G8=mI;var Qp=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")}},Jp=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 Y8(this,e)}},Zp=class{decoders;constructor(e){this.decoders=e}or(e){return Y8(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 Y8(r,e){return new Zp({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var e2=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 Qp(e,t,n),this.decoder=new Jp(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function ea({name:r,prefix:e,encode:t,decode:n}){return new e2(r,e,t,n)}function Wo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=G8(t,r);return ea({prefix:e,name:r,encode:n,decode:s=>io(o(s))})}function yI(r,e,t,n){let o={};for(let f=0;f<e.length;++f)o[e[f]]=f;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let f=0;f<s;++f){let u=o[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function gI(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;)s+="=";return s}function ot({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return ea({prefix:e,name:r,encode(o){return gI(o,n,t)},decode(o){return yI(o,n,t,r)}})}var vt=ot({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),W8=ot({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),bI=ot({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),wI=ot({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),EI=ot({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xI=ot({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vI=ot({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),_I=ot({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),SI=ot({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var r2={};oe(r2,{base58btc:()=>ie,base58flickr:()=>RI});var ie=Wo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),RI=Wo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var kr={};oe(kr,{Digest:()=>Ws,create:()=>Jr,decode:()=>Zr,equals:()=>o2});var AI=X8,z8=128,II=127,kI=~II,TI=Math.pow(2,31);function X8(r,e,t){e=e||[],t=t||0;for(var n=t;r>=TI;)e[t++]=r&255|z8,r/=128;for(;r&kI;)e[t++]=r&255|z8,r>>>=7;return e[t]=r|0,X8.bytes=t-n+1,e}var DI=n2,PI=128,j8=127;function n2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw n2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&j8)<<o:(i&j8)*Math.pow(2,o),o+=7}while(i>=PI);return n2.bytes=s-n,t}var CI=Math.pow(2,7),NI=Math.pow(2,14),BI=Math.pow(2,21),LI=Math.pow(2,28),OI=Math.pow(2,35),KI=Math.pow(2,42),MI=Math.pow(2,49),UI=Math.pow(2,56),FI=Math.pow(2,63),VI=function(r){return r<CI?1:r<NI?2:r<BI?3:r<LI?4:r<OI?5:r<KI?6:r<MI?7:r<UI?8:r<FI?9:10},qI={encode:AI,decode:DI,encodingLength:VI},HI=qI,Fc=HI;function Vc(r,e=0){return[Fc.decode(r,e),Fc.decode.bytes]}function ta(r,e,t=0){return Fc.encode(r,e,t),e}function ra(r){return Fc.encodingLength(r)}function Jr(r,e){let t=e.byteLength,n=ra(r),o=n+ra(t),s=new Uint8Array(o+t);return ta(r,s,0),ta(t,s,n),s.set(e,o),new Ws(r,t,e,s)}function Zr(r){let e=io(r),[t,n]=Vc(e),[o,s]=Vc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ws(t,o,i,e)}function o2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&V8(r.bytes,t.bytes)}}var Ws=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function Q8(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return GI(t,s2(r),e??ie.encoder);default:return YI(t,s2(r),e??vt.encoder)}}var J8=new WeakMap;function s2(r){let e=J8.get(r);if(e==null){let t=new Map;return J8.set(r,t),t}return e}var de=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!==qc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==WI)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=Jr(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&&o2(e.multihash,n.multihash)}toString(e){return Q8(this,e)}toJSON(){return{"/":Q8(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??Z8(n,o,s.bytes))}else if(t[zI]===!0){let{version:n,multihash:o,code:s}=t,i=Zr(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!==qc)throw new Error(`Version 0 CID must use dag-pb (code: ${qc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Z8(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,qc,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=io(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 Ws(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]=Vc(e.subarray(t));return t+=d,u},o=n(),s=qc;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]=$I(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 s2(s).set(n,e),s}};function $I(r,e){switch(r[0]){case"Q":{let t=e??ie;return[ie.prefix,t.decode(`${ie.prefix}${r}`)]}case ie.prefix:{let t=e??ie;return[ie.prefix,t.decode(r)]}case vt.prefix:{let t=e??vt;return[vt.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function GI(r,e,t){let{prefix:n}=t;if(n!==ie.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 YI(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 qc=112,WI=18;function Z8(r,e,t){let n=ra(r),o=n+ra(e),s=new Uint8Array(o+t.byteLength);return ta(r,s,0),ta(e,s,n),s.set(t,o),s}var zI=Symbol.for("@ipld/js-cid/CID");var i2=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 xn(r){let{name:e,metrics:t}=r,n;return t!=null?n=new i2({name:e,metrics:t}):n=new Map,n}var e5=Symbol.for("@libp2p/connection");var vn=Symbol.for("@libp2p/content-routing");var zs=Symbol.for("@libp2p/peer-discovery");var a2=Symbol.for("@libp2p/peer-id");function na(r){return r!=null&&!!r[a2]}var _n=Symbol.for("@libp2p/peer-routing");var t5="keep-alive";var Sn=Symbol.for("@libp2p/transport");var zo;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(zo||(zo={}));var en=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},h=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Xu=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var ao="ERR_TIMEOUT";var r5="ERR_NOT_FOUND",js="ERR_INVALID_MESSAGE";var Fe=class extends EventTarget{#e=new Map;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 Ct(e,t))}},c2=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},Ct=globalThis.CustomEvent??c2;var Ce=(r,...e)=>{try{[...e]}catch{}};function Qu(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function jo(...r){let e=[];for(let t of r)Qu(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 Xo(...r){let e=[];for(let t of r)Qu(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 d2={};oe(d2,{sha256:()=>K,sha512:()=>f2});function u2({name:r,code:e,encode:t}){return new l2(r,e,t)}var l2=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Jr(this.code,t):t.then(n=>Jr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function o5(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var K=u2({name:"sha2-256",code:18,encode:o5("SHA-256")}),f2=u2({name:"sha2-512",code:19,encode:o5("SHA-512")});var z5=Ue(b5(),1);var yr=Ue(m2(),1);var g2={};oe(g2,{base64:()=>Ge,base64pad:()=>Ek,base64url:()=>y2,base64urlpad:()=>xk});var Ge=ot({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ek=ot({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),y2=ot({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),xk=ot({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});yr.default.formatters.b=r=>r==null?"undefined":ie.baseEncode(r);yr.default.formatters.t=r=>r==null?"undefined":vt.baseEncode(r);yr.default.formatters.m=r=>r==null?"undefined":Ge.baseEncode(r);yr.default.formatters.p=r=>r==null?"undefined":r.toString();yr.default.formatters.c=r=>r==null?"undefined":r.toString();yr.default.formatters.k=r=>r==null?"undefined":r.toString();yr.default.formatters.a=r=>r==null?"undefined":r.toString();function vk(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 Qo(){return{forComponent(r){return jt(r)}}}function jt(r){let e=vk(`${r}:trace`);return yr.default.enabled(`${r}:trace`)&&yr.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,yr.default)(`${r}:trace`)),Object.assign((0,yr.default)(r),{error:(0,yr.default)(`${r}:error`),trace:e})}function O(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Qs=class{_refCounter;cid;priority;wantType;constructor(e,t,n){this._refCounter=1,this.cid=e,this.priority=t??1,this.wantType=n}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry <key: ${this.cid.toString(ie)}, priority: ${this.priority}, refs: ${this._refCounter}>`}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority&&this.wantType===e.wantType}};var Jo=class{entry;cancel;sendDontHave;constructor(e,t,n,o,s){this.entry=new Qs(e,t,n),this.cancel=!!o,this.sendDontHave=!!s}get cid(){return this.entry.cid}set cid(e){this.entry.cid=e}get priority(){return this.entry.priority}set priority(e){this.entry.priority=e}get wantType(){return this.entry.wantType}set wantType(e){this.entry.wantType=e}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(ie)} <cancel: ${this.cancel}, priority: ${this.priority}>`}equals(e){return this.cancel===e.cancel&&this.sendDontHave===e.sendDontHave&&this.wantType===e.wantType&&this.entry.equals(e.entry)}};var Tr=(r,e)=>{let t=["bitswap"];return e!=null&&t.push(e),r!=null&&t.push(`${r.toString().slice(0,8)}`),jt(t.join(":"))};var e1=(r,e)=>{if(r.size!==e.size)return!1;for(let[t,n]of r){let o=e.get(t);if(o===void 0||n instanceof Uint8Array&&o instanceof Uint8Array&&!O(n,o)||n instanceof Jo&&o instanceof Jo&&!n.equals(o))return!1}return!0};var Hc=Ue(P5(),1);function Ok(r){let e=new Uint8Array(r.reduce((n,o)=>n+Hc.default.encodingLength(o),0)),t=0;for(let n of r)e=Hc.encode(n,e,t),t+=Hc.default.encodingLength(n);return e}var C5=Ok;var E2=new Float32Array([-0]),Zo=new Uint8Array(E2.buffer);function N5(r,e,t){E2[0]=r,e[t]=Zo[0],e[t+1]=Zo[1],e[t+2]=Zo[2],e[t+3]=Zo[3]}function B5(r,e){return Zo[0]=r[e],Zo[1]=r[e+1],Zo[2]=r[e+2],Zo[3]=r[e+3],E2[0]}var x2=new Float64Array([-0]),$t=new Uint8Array(x2.buffer);function L5(r,e,t){x2[0]=r,e[t]=$t[0],e[t+1]=$t[1],e[t+2]=$t[2],e[t+3]=$t[3],e[t+4]=$t[4],e[t+5]=$t[5],e[t+6]=$t[6],e[t+7]=$t[7]}function O5(r,e){return $t[0]=r[e],$t[1]=r[e+1],$t[2]=r[e+2],$t[3]=r[e+3],$t[4]=r[e+4],$t[5]=r[e+5],$t[6]=r[e+6],$t[7]=r[e+7],x2[0]}var Kk=BigInt(Number.MAX_SAFE_INTEGER),Mk=BigInt(Number.MIN_SAFE_INTEGER),sr=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 Js;if(e<Kk&&e>Mk)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>K5&&(o=0n,++n>K5&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Js;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):Js}},Js=new sr(0,0);Js.toBigInt=function(){return 0n};Js.zzEncode=Js.zzDecode=function(){return this};Js.length=function(){return 1};var K5=4294967296n;function M5(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 U5(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 v2(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 tn(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function t1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var _2=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,tn(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 tn(this,4);return t1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw tn(this,4);return t1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw tn(this,4);let e=B5(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw tn(this,4);let e=O5(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 tn(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return U5(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw tn(this,e);this.pos+=e}else do if(this.pos>=this.len)throw tn(this);while(this.buf[this.pos++]&128);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 sr(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 tn(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 tn(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 tn(this,8);let e=t1(this.buf,this.pos+=4),t=t1(this.buf,this.pos+=4);return new sr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){return this.readLongVarint().toNumber(!0)}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 S2(r){return new _2(r instanceof Uint8Array?r:r.subarray())}function X(r,e){let t=S2(r);return e.decode(t)}function Rn(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function ft(r=0){return globalThis.Buffer?.alloc!=null?Rn(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function nt(r=0){return globalThis.Buffer?.allocUnsafe!=null?Rn(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var R2={};oe(R2,{base10:()=>Uk});var Uk=Wo({prefix:"9",name:"base10",alphabet:"0123456789"});var A2={};oe(A2,{base16:()=>Fk,base16upper:()=>Vk});var Fk=ot({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Vk=ot({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var I2={};oe(I2,{base2:()=>qk});var qk=ot({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var k2={};oe(k2,{base256emoji:()=>Wk});var V5=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}"),Hk=V5.reduce((r,e,t)=>(r[t]=e,r),[]),$k=V5.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Gk(r){return r.reduce((e,t)=>(e+=Hk[t],e),"")}function Yk(r){let e=[];for(let t of r){let n=$k[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Wk=ea({prefix:"\u{1F680}",name:"base256emoji",encode:Gk,decode:Yk});var T2={};oe(T2,{base36:()=>es,base36upper:()=>zk});var es=Wo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),zk=Wo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var D2={};oe(D2,{base8:()=>jk});var jk=ot({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var P2={};oe(P2,{identity:()=>Xk});var Xk=ea({prefix:"\0",name:"identity",encode:r=>H8(r),decode:r=>q8(r)});var wH=new TextEncoder,EH=new TextDecoder;var q5=512;var r1=85;var N2={};oe(N2,{identity:()=>Xe});var $5=0,Qk="identity",G5=io;function Jk(r){return Jr($5,G5(r))}var Xe={code:$5,name:Qk,encode:G5,digest:Jk};var Dr={...P2,...I2,...D2,...R2,...A2,...t2,...T2,...r2,...g2,...k2},CH={...d2,...N2};function W5(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Y5=W5("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),B2=W5("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=nt(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Zk={utf8:Y5,"utf-8":Y5,hex:Dr.base16,latin1:B2,ascii:B2,binary:B2,...Dr},n1=Zk;function x(r,e="utf8"){let t=n1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Rn(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function L2(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return nt(i);o+i>e&&(n=nt(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var Zs=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function O2(){}var M2=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},eT=L2();function tT(r){return globalThis.Buffer!=null?nt(r):eT(r)}var Yc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Zs(O2,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Zs(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new U2((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($c,10,sr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=sr.fromBigInt(e);return this._push($c,t.length(),t)}uint64Number(e){let t=sr.fromNumber(e);return this._push($c,t.length(),t)}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=sr.fromBigInt(e).zzEncode();return this._push($c,t.length(),t)}sint64Number(e){let t=sr.fromNumber(e).zzEncode();return this._push($c,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(K2,1,e?1:0)}fixed32(e){return this._push(Gc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=sr.fromBigInt(e);return this._push(Gc,4,t.lo)._push(Gc,4,t.hi)}fixed64Number(e){let t=sr.fromNumber(e);return this._push(Gc,4,t.lo)._push(Gc,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(N5,4,e)}double(e){return this._push(L5,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(K2,1,0):this.uint32(t)._push(nT,t,e)}string(e){let t=M5(e);return t!==0?this.uint32(t)._push(v2,t,e):this._push(K2,1,0)}fork(){return this.states=new M2(this),this.head=this.tail=new Zs(O2,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 Zs(O2,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=tT(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function K2(r,e,t){e[t]=r&255}function rT(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var U2=class extends Zs{next;constructor(e,t){super(rT,e,t),this.next=void 0}};function $c(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 Gc(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 nT(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Yc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(oT,e,r),this},Yc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(sT,e,r),this});function oT(r,e,t){e.set(r,t)}function sT(r,e,t){r.length<40?v2(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(x(r),t)}function F2(){return new Yc}function Q(r,e){let t=F2();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var aa;(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"})(aa||(aa={}));function o1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Re(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 o1("enum",aa.VARINT,t,n)}function J(r,e){return o1("message",aa.LENGTH_DELIMITED,r,e)}var Wc=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var ir;(function(r){let e;(function(a){let c;(function(d){d.Block="Block",d.Have="Have"})(c=a.WantType||(a.WantType={}));let l;(function(d){d[d.Block=0]="Block",d[d.Have=1]="Have"})(l||(l={})),function(d){d.codec=()=>Re(l)}(c=a.WantType||(a.WantType={}));let f;(function(d){let y;d.codec=()=>(y==null&&(y=J((p,m,g={})=>{g.lengthDelimited!==!1&&m.fork(),p.block!=null&&p.block.byteLength>0&&(m.uint32(10),m.bytes(p.block)),p.priority!=null&&p.priority!==0&&(m.uint32(16),m.int32(p.priority)),p.cancel!=null&&p.cancel!==!1&&(m.uint32(24),m.bool(p.cancel)),p.wantType!=null&&l[p.wantType]!==0&&(m.uint32(32),r.Wantlist.WantType.codec().encode(p.wantType,m)),p.sendDontHave!=null&&p.sendDontHave!==!1&&(m.uint32(40),m.bool(p.sendDontHave)),g.lengthDelimited!==!1&&m.ldelim()},(p,m)=>{let g={block:new Uint8Array(0),priority:0,cancel:!1,wantType:c.Block,sendDontHave:!1},b=m==null?p.len:p.pos+m;for(;p.pos<b;){let E=p.uint32();switch(E>>>3){case 1:g.block=p.bytes();break;case 2:g.priority=p.int32();break;case 3:g.cancel=p.bool();break;case 4:g.wantType=r.Wantlist.WantType.codec().decode(p);break;case 5:g.sendDontHave=p.bool();break;default:p.skipType(E&7);break}}return g})),y),d.encode=p=>Q(p,d.codec()),d.decode=p=>X(p,d.codec())})(f=a.Entry||(a.Entry={}));let u;a.codec=()=>(u==null&&(u=J((d,y,p={})=>{if(p.lengthDelimited!==!1&&y.fork(),d.entries!=null)for(let m of d.entries)y.uint32(10),r.Wantlist.Entry.codec().encode(m,y);d.full!=null&&d.full!==!1&&(y.uint32(16),y.bool(d.full)),p.lengthDelimited!==!1&&y.ldelim()},(d,y)=>{let p={entries:[],full:!1},m=y==null?d.len:d.pos+y;for(;d.pos<m;){let g=d.uint32();switch(g>>>3){case 1:p.entries.push(r.Wantlist.Entry.codec().decode(d,d.uint32()));break;case 2:p.full=d.bool();break;default:d.skipType(g&7);break}}return p})),u),a.encode=d=>Q(d,a.codec()),a.decode=d=>X(d,a.codec())})(e=r.Wantlist||(r.Wantlist={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.prefix!=null&&l.prefix.byteLength>0&&(f.uint32(10),f.bytes(l.prefix)),l.data!=null&&l.data.byteLength>0&&(f.uint32(18),f.bytes(l.data)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={prefix:new Uint8Array(0),data:new Uint8Array(0)},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.prefix=l.bytes();break;case 2:u.data=l.bytes();break;default:l.skipType(y&7);break}}return u})),c),a.encode=l=>Q(l,a.codec()),a.decode=l=>X(l,a.codec())})(t=r.Block||(r.Block={}));let n;(function(a){a.Have="Have",a.DontHave="DontHave"})(n=r.BlockPresenceType||(r.BlockPresenceType={}));let o;(function(a){a[a.Have=0]="Have",a[a.DontHave=1]="DontHave"})(o||(o={})),function(a){a.codec=()=>Re(o)}(n=r.BlockPresenceType||(r.BlockPresenceType={}));let s;(function(a){let c;a.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.cid!=null&&l.cid.byteLength>0&&(f.uint32(10),f.bytes(l.cid)),l.type!=null&&o[l.type]!==0&&(f.uint32(16),r.BlockPresenceType.codec().encode(l.type,f)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={cid:new Uint8Array(0),type:n.Have},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.cid=l.bytes();break;case 2:u.type=r.BlockPresenceType.codec().decode(l);break;default:l.skipType(y&7);break}}return u})),c),a.encode=l=>Q(l,a.codec()),a.decode=l=>X(l,a.codec())})(s=r.BlockPresence||(r.BlockPresence={}));let i;r.codec=()=>(i==null&&(i=J((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.wantlist!=null&&(c.uint32(10),r.Wantlist.codec().encode(a.wantlist,c)),a.blocks!=null)for(let f of a.blocks)c.uint32(18),c.bytes(f);if(a.payload!=null)for(let f of a.payload)c.uint32(26),r.Block.codec().encode(f,c);if(a.blockPresences!=null)for(let f of a.blockPresences)c.uint32(34),r.BlockPresence.codec().encode(f,c);a.pendingBytes!=null&&a.pendingBytes!==0&&(c.uint32(40),c.int32(a.pendingBytes)),l.lengthDelimited!==!1&&c.ldelim()},(a,c)=>{let l={blocks:[],payload:[],blockPresences:[],pendingBytes:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let u=a.uint32();switch(u>>>3){case 1:l.wantlist=r.Wantlist.codec().decode(a,a.uint32());break;case 2:l.blocks.push(a.bytes());break;case 3:l.payload.push(r.Block.codec().decode(a,a.uint32()));break;case 4:l.blockPresences.push(r.BlockPresence.codec().decode(a,a.uint32()));break;case 5:l.pendingBytes=a.int32();break;default:a.skipType(u&7);break}}return l})),i),r.encode=a=>Q(a,r.codec()),r.decode=a=>X(a,r.codec())})(ir||(ir={}));var Gt=class r{static Entry=Jo;static WantType={Block:ir.Wantlist.WantType.Block,Have:ir.Wantlist.WantType.Have};static BlockPresenceType={Have:ir.BlockPresenceType.Have,DontHave:ir.BlockPresenceType.DontHave};static deserialize=async(e,t)=>{let n=ir.decode(e),o=n.wantlist?.full===!0,s=new r(o);return n.wantlist?.entries.forEach(i=>{if(i.block==null)return;let a=de.decode(i.block);s.addEntry(a,i.priority??0,i.wantType,!!i.cancel,!!i.sendDontHave)}),n.blockPresences.forEach(i=>{if(i.cid==null)return;let a=de.decode(i.cid);i.type===r.BlockPresenceType.Have?s.addHave(a):s.addDontHave(a)}),n.blocks.length>0?(await Promise.all(n.blocks.map(async i=>{let a=await K.digest(i),c=de.createV0(a);s.addBlock(c,i)})),s):(n.payload.length>0&&(await Promise.all(n.payload.map(async i=>{if(i.prefix==null||i.data==null)return;let a=(0,z5.default)(i.prefix),c=a[0],l=a[1],f=a[2],u=f===K.code?K:await t?.getHasher(f);if(u==null)throw new h("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");let d=await u.digest(i.data),y=de.create(c,l,d);s.addBlock(y,i.data)})),s.setPendingBytes(n.pendingBytes)),s)};static blockPresenceSize=e=>e.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(e,t,n,o,s){n==null&&(n=r.WantType.Block);let i=e.toString(ie),a=this.wantlist.get(i);a!=null?(a.wantType===n&&(a.priority=t),o===!0&&(a.cancel=!!o),s===!0&&(a.sendDontHave=!!s),n===r.WantType.Block&&a.wantType===r.WantType.Have&&(a.wantType=n)):this.wantlist.set(i,new Jo(e,t,n,o,s))}addBlock(e,t){let n=e.toString(ie);this.blocks.set(n,t)}addHave(e){let t=e.toString(ie);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.Have)}addDontHave(e){let t=e.toString(ie);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.DontHave)}cancel(e){let t=e.toString(ie);this.wantlist.delete(t),this.addEntry(e,0,r.WantType.Block,!0,!1)}setPendingBytes(e){this.pendingBytes=e}serializeToBitswap100(){return ir.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.bytes,priority:Number(e.priority),cancel:!!e.cancel,wantType:ir.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){let e={wantlist:{entries:Array.from(this.wantlist.values()).map(t=>({block:t.cid.bytes,priority:Number(t.priority),wantType:t.wantType,cancel:!!t.cancel,sendDontHave:!!t.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(let[t,n]of this.blocks.entries()){let o=de.parse(t),s=o.version,i=o.code,a=o.multihash.code,c=o.multihash.digest.length,l=C5([s,i,a,c]);e.payload.push({prefix:l,data:n})}for(let[t,n]of this.blockPresences)e.blockPresences.push({cid:de.parse(t).bytes,type:n});return this.pendingBytes>0&&(e.pendingBytes=this.pendingBytes),ir.encode(e)}equals(e){return!(this.full!==e.full||this.pendingBytes!==e.pendingBytes||!e1(this.wantlist,e.wantlist)||!e1(this.blocks,e.blocks)||!e1(this.blockPresences,e.blockPresences))}get[Symbol.toStringTag](){let e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage <full: ${this.full}, list: ${e}, blocks: ${t}>`}};var j5={Block:ir.Wantlist.WantType.Block,Have:ir.Wantlist.WantType.Have},iT=(r,e)=>Array.prototype.slice.call(e,0).sort((t,n)=>{let o=r(t),s=r(n);return o<s?-1:o>s?1:0}),ts=class{static Entry=Qs;set;_stats;constructor(e,t){this.set=t!=null?xn({name:"ipfs_bitswap_wantlist",metrics:t.metrics}):new Map,this._stats=e}get length(){return this.set.size}add(e,t,n){let o=e.toString(ie),s=this.set.get(o);s!=null?(s.inc(),s.priority=t,s.wantType===j5.Have&&n===j5.Block&&(s.wantType=n)):(this.set.set(o,new Qs(e,t,n)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(e){let t=e.toString(ie),n=this.set.get(t);n!=null&&(n.dec(),!n.hasRefs()&&(this.set.delete(t),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(e){this.set.has(e)&&this.set.delete(e)}forEach(e){this.set.forEach(e)}entries(){return this.set.entries()}sortedEntries(){return new Map(iT(e=>e[1].key,Array.from(this.set.entries())))}contains(e){let t=e.toString(ie);return this.set.has(t)}get(e){let t=e.toString(ie);return this.set.get(t)}};var s1=class{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(e){this.partner=e,this.wantlist=new ts,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=e}wants(e,t,n){this.wantlist.add(e,t,n)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.get(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}};var zc=class extends Map{_cmp;_keys;constructor(e,t){super(),this._cmp=t??this._defaultSort,this._keys=[];for(let[n,o]of e??[])this.set(n,o)}update(e){if(e<0||e>=this._keys.length)return;let t=this._keys[e];this._keys.splice(e,1);let n=this._find(t);this._keys.splice(n,0,t)}set(e,t){if(this.has(e)){let o=this.indexOf(e);this._keys.splice(o,1)}super.set(e,t);let n=this._find(e);return this._keys.splice(n,0,e),this}clear(){super.clear(),this._keys=[]}delete(e){if(!this.has(e))return!1;let t=this.indexOf(e);return this._keys.splice(t,1),super.delete(e)}indexOf(e){if(!this.has(e))return-1;let t=this._find(e);if(this._keys[t]===e)return t;for(let n=1;n<this._keys.length;n++){if(this._keys[t+n]===e)return t+n;if(this._keys[t-n]===e)return t-n}return-1}_find(e){let t=0,n=this._keys.length;for(;t<n;){let o=t+n>>>1,s=this._kCmp(this._keys[o],e);if(s<0)t=o+1;else if(s>0)n=o;else return o}return t}*keys(){for(let e of this._keys)yield e}*values(){for(let e of this._keys)yield this.get(e)}*entries(){for(let e of this._keys)yield[e,this.get(e)]}*[Symbol.iterator](){yield*this.entries()}forEach(e,t=this){if(e!=null)for(let n of this._keys){let o=this.get(n);if(o==null)throw new Error("Value cannot be undefined");e.apply(t,[[n,o]])}}_defaultSort(e,t){return e[0]<t[0]?-1:t[0]<e[0]?1:0}_kCmp(e,t){return this._cmp([e,this.get(e)],[t,this.get(t)])}};var aT={hasNewInfo(){return!1},merge(){}},i1=class{_taskMerger;_byPeer;constructor(e=aT){this._taskMerger=e,this._byPeer=new zc([],a1.compare)}pushTasks(e,t){let n=this._byPeer.get(e.toString());n==null&&(n=new a1(e,this._taskMerger)),n.pushTasks(t),this._byPeer.set(e.toString(),n)}popTasks(e){let t=this._head();if(t===void 0)return{tasks:[],pendingSize:0};let{tasks:n,pendingSize:o}=t.popTasks(e);if(n.length===0)return{tasks:n,pendingSize:o};let s=t.peerId;return t.isIdle()?this._byPeer.delete(s.toString()):this._byPeer.update(0),{peerId:s,tasks:n,pendingSize:o}}_head(){if(this._byPeer.size!==0)for(let[,e]of this._byPeer)return e}remove(e,t){this._byPeer.get(t.toString())?.remove(e)}tasksDone(e,t){let n=this._byPeer.get(e.toString());if(n==null)return;let o=this._byPeer.indexOf(e.toString());for(let s of t)n.taskDone(s);this._byPeer.update(o)}},a1=class{peerId;_taskMerger;_activeTotalSize;_pending;_active;constructor(e,t){this.peerId=e,this._taskMerger=t,this._activeTotalSize=0,this._pending=new V2,this._active=new Set}pushTasks(e){for(let t of e)this._pushTask(t)}_pushTask(e){if(!this._taskHasMoreInfoThanActiveTasks(e))return;let t=this._pending.get(e.topic);if(t!=null){e.priority>t.priority&&this._pending.updatePriority(e.topic,e.priority),this._taskMerger.merge(e,t);return}this._pending.add(e)}_taskHasMoreInfoThanActiveTasks(e){let t=[];for(let n of this._active)n.topic===e.topic&&t.push(n);return t.length===0?!0:this._taskMerger.hasNewInfo(e,t)}popTasks(e){let t=0,n=[],o=this._pending.tasks();for(let s=0;s<o.length&&t<e;s++){let i=o[s];n.push(i),t+=i.size,this._pending.delete(i.topic),this._activeTotalSize+=i.size,this._active.add(i)}return{tasks:n,pendingSize:this._pending.totalSize}}taskDone(e){this._active.has(e)&&(this._activeTotalSize-=e.size,this._active.delete(e))}remove(e){this._pending.delete(e)}isIdle(){return this._pending.length===0&&this._active.size===0}static compare(e,t){return e[1]._pending.length===0?1:t[1]._pending.length===0?-1:e[1]._activeTotalSize===t[1]._activeTotalSize?t[1]._pending.length-e[1]._pending.length:e[1]._activeTotalSize-t[1]._activeTotalSize}},V2=class{_tasks;constructor(){this._tasks=new zc([],this._compare)}get length(){return this._tasks.size}get totalSize(){return[...this._tasks.values()].reduce((e,t)=>e+t.task.size,0)}get(e){return this._tasks?.get(e)?.task}add(e){this._tasks.set(e.topic,{created:Date.now(),task:e})}delete(e){this._tasks.delete(e)}tasks(){return[...this._tasks.values()].map(e=>e.task)}updatePriority(e,t){let n=this._tasks.get(e);if(n==null)return;let o=this._tasks.indexOf(e);n.task.priority=t,this._tasks.update(o)}_compare(e,t){return e[1].task.priority===t[1].task.priority?e[1].created-t[1].created:t[1].task.priority-e[1].task.priority}};var X5={hasNewInfo(r,e){let t=!1,n=!1;for(let o of e)o.data.haveBlock&&(t=!0),o.data.isWantBlock&&(n=!0);return!!(!n&&r.data.isWantBlock||!t&&r.data.haveBlock)},merge(r,e){let t=r.data,n=e.data;!n.haveBlock&&t.haveBlock&&(n.haveBlock=t.haveBlock,n.blockSize=t.blockSize),!n.isWantBlock&&t.isWantBlock&&(n.isWantBlock=!0,(!n.haveBlock||t.haveBlock)&&(n.haveBlock=t.haveBlock,e.size=r.size)),n.isWantBlock&&n.haveBlock&&(e.size=n.blockSize)}};var Q5=Gt.WantType,cT=16*1024,lT=1024,c1=class{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(e,t,n,o,s,i={}){this._log=Tr(e,"engine"),this.blockstore=t,this.network=n,this._stats=o,this._opts=this._processOpts(i),this.ledgerMap=xn({name:"ipfs_bitswap_ledger_map",metrics:s.metrics}),this._running=!1,this._requestQueue=new i1(X5)}_processOpts(e){return{maxSizeReplaceHasWithBlock:lT,targetMessageSize:cT,...e}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(e=>{this._log.error("error processing stats",e)})})}async _processTasks(){if(!this._running)return;let{peerId:e,tasks:t,pendingSize:n}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(t.length===0)return;let o=new Gt(!1);o.setPendingBytes(n);let s=[],i=new Map;for(let c of t){let l=de.parse(c.topic);c.data.haveBlock?c.data.isWantBlock?(s.push(l),i.set(c.topic,c.data)):o.addHave(l):o.addDontHave(l)}let a=await this._getBlocks(s);for(let[c,l]of i){let f=de.parse(c),u=a.get(c);u!=null?o.addBlock(f,u):l.sendDontHave&&o.addDontHave(f)}if(o.empty){e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks();return}try{e!=null&&await this.network.sendMessage(e,o);for(let[c,l]of a.entries())e!=null&&this.messageSent(e,de.parse(c),l)}catch(c){this._log.error(c)}e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks()}wantlistForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);return n!=null?n.wantlist.sortedEntries():new Map}ledgerForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return{peer:n.partner,value:n.debtRatio(),sent:n.accounting.bytesSent,recv:n.accounting.bytesRecv,exchanged:n.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.partner)}receivedBlocks(e){if(e.length!==0){for(let t of this.ledgerMap.values())for(let{cid:n,block:o}of e){let s=t.wantlistContains(n);if(s==null)continue;let i=o.length,a=this._sendAsBlock(s.wantType,i),c=i;a||(c=Gt.blockPresenceSize(s.cid)),this._requestQueue.pushTasks(t.partner,[{topic:s.cid.toString(ie),priority:s.priority,size:c,data:{blockSize:i,isWantBlock:a,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(e,t){let n=this._findOrCreate(e);if(t.empty)return;if(t.full&&(n.wantlist=new ts),this._updateBlockAccounting(t.blocks,n),t.wantlist.size===0){this._scheduleProcessTasks();return}let o=[],s=[];t.wantlist.forEach(i=>{i.cancel?(n.cancelWant(i.cid),o.push(i.cid)):(n.wants(i.cid,i.priority,i.wantType),s.push(i))}),this._cancelWants(e,o),await this._addWants(e,s),this._scheduleProcessTasks()}_cancelWants(e,t){for(let n of t)this._requestQueue.remove(n.toString(ie),e)}async _addWants(e,t){let n=await this._getBlockSizes(t.map(s=>s.cid)),o=[];for(let s of t){let i=s.cid.toString(ie),a=n.get(i);if(a==null)s.sendDontHave&&o.push({topic:i,priority:s.priority,size:Gt.blockPresenceSize(s.cid),data:{isWantBlock:s.wantType===Q5.Block,blockSize:0,haveBlock:!1,sendDontHave:s.sendDontHave}});else{let c=this._sendAsBlock(s.wantType,a),l=a;c||(l=Gt.blockPresenceSize(s.cid)),o.push({topic:i,priority:s.priority,size:l,data:{isWantBlock:c,blockSize:a,haveBlock:!0,sendDontHave:s.sendDontHave}})}this._requestQueue.pushTasks(e,o)}}_sendAsBlock(e,t){return e===Q5.Block||t<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(e){let t=await this._getBlocks(e);return new Map([...t].map(([n,o])=>[n,o.length]))}async _getBlocks(e){let t=new Map;return await Promise.all(e.map(async n=>{try{let o=await this.blockstore.get(n);t.set(n.toString(ie),o)}catch(o){o.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",n,o)}})),t}_updateBlockAccounting(e,t){for(let n of e.values())this._log("got block (%s bytes)",n.length),t.receivedBytes(n.length)}messageSent(e,t,n){let o=this._findOrCreate(e);o.sentBytes(n.length),o.wantlist.remove(t)}numBytesSentTo(e){return this._findOrCreate(e).accounting.bytesSent}numBytesReceivedFrom(e){return this._findOrCreate(e).accounting.bytesRecv}peerDisconnected(e){this.ledgerMap.delete(e.toString())}_findOrCreate(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return n;let o=new s1(e);return this.ledgerMap.set(t,o),this._stats!=null&&this._stats.push(t,"peerCount",1),o}start(){this._running=!0}stop(){this._running=!1}};function uT(r){return r[Symbol.asyncIterator]!=null}function fT(r){if(uT(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Pr=fT;var dT=Math.pow(2,7),hT=Math.pow(2,14),pT=Math.pow(2,21),q2=Math.pow(2,28),H2=Math.pow(2,35),$2=Math.pow(2,42),G2=Math.pow(2,49),Ke=128,Yt=127;function Et(r){if(r<dT)return 1;if(r<hT)return 2;if(r<pT)return 3;if(r<q2)return 4;if(r<H2)return 5;if(r<$2)return 6;if(r<G2)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function mT(r,e,t=0){switch(Et(r)){case 8:e[t++]=r&255|Ke,r/=128;case 7:e[t++]=r&255|Ke,r/=128;case 6:e[t++]=r&255|Ke,r/=128;case 5:e[t++]=r&255|Ke,r/=128;case 4:e[t++]=r&255|Ke,r>>>=7;case 3:e[t++]=r&255|Ke,r>>>=7;case 2:e[t++]=r&255|Ke,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function yT(r,e,t=0){switch(Et(r)){case 8:e.set(t++,r&255|Ke),r/=128;case 7:e.set(t++,r&255|Ke),r/=128;case 6:e.set(t++,r&255|Ke),r/=128;case 5:e.set(t++,r&255|Ke),r/=128;case 4:e.set(t++,r&255|Ke),r>>>=7;case 3:e.set(t++,r&255|Ke),r>>>=7;case 2:e.set(t++,r&255|Ke),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function gT(r,e){let t=r[e],n=0;if(n+=t&Yt,t<Ke||(t=r[e+1],n+=(t&Yt)<<7,t<Ke)||(t=r[e+2],n+=(t&Yt)<<14,t<Ke)||(t=r[e+3],n+=(t&Yt)<<21,t<Ke)||(t=r[e+4],n+=(t&Yt)*q2,t<Ke)||(t=r[e+5],n+=(t&Yt)*H2,t<Ke)||(t=r[e+6],n+=(t&Yt)*$2,t<Ke)||(t=r[e+7],n+=(t&Yt)*G2,t<Ke))return n;throw new RangeError("Could not decode varint")}function bT(r,e){let t=r.get(e),n=0;if(n+=t&Yt,t<Ke||(t=r.get(e+1),n+=(t&Yt)<<7,t<Ke)||(t=r.get(e+2),n+=(t&Yt)<<14,t<Ke)||(t=r.get(e+3),n+=(t&Yt)<<21,t<Ke)||(t=r.get(e+4),n+=(t&Yt)*q2,t<Ke)||(t=r.get(e+5),n+=(t&Yt)*H2,t<Ke)||(t=r.get(e+6),n+=(t&Yt)*$2,t<Ke)||(t=r.get(e+7),n+=(t&Yt)*G2,t<Ke))return n;throw new RangeError("Could not decode varint")}function st(r,e,t=0){return e==null&&(e=nt(Et(r))),e instanceof Uint8Array?mT(r,e,t):yT(r,e,t)}function gr(r,e=0){return r instanceof Uint8Array?gT(r,e):bT(r,e)}function le(r,e){if(globalThis.Buffer!=null)return Rn(globalThis.Buffer.concat(r,e));e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=nt(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Rn(t)}var Z5=Symbol.for("@achingbrain/uint8arraylist");function J5(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 l1(r){return!!r?.[Z5]}var be=class r{bufs;length;[Z5]=!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(l1(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(l1(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=J5(this.bufs,e);return t.buf[t.index]}set(e,t){let n=J5(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(l1(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 le(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:le(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(!l1(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 y=this.get(u+d);if(n[d]!==y){f=Math.max(1,d-a[y]);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=nt(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=ft(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=ft(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=ft(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=nt(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=ft(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=ft(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=ft(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=ft(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=ft(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(!O(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}};function u1(r){return r[Symbol.asyncIterator]!=null}var f1=r=>{let e=Et(r),t=nt(e);return st(r,t),f1.bytes=e,t};f1.bytes=0;function ar(r,e){e=e??{};let t=e.lengthEncoder??f1;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return u1(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}ar.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??f1;return new be(t(r.byteLength),r)};var ca=Ue(ei(),1);var ET=8,xT=1024*1024*4,ti;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ti||(ti={}));var Y2=r=>{let e=gr(r);return Y2.bytes=Et(e),e};Y2.bytes=0;function cr(r,e){let t=new be,n=ti.LENGTH,o=-1,s=e?.lengthDecoder??Y2,i=e?.maxLengthLength??ET,a=e?.maxDataLength??xT;function*c(){for(;t.byteLength>0;){if(n===ti.LENGTH)try{if(o=s(t),o<0)throw(0,ca.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,ca.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=ti.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,ca.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===ti.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=ti.LENGTH}}}return u1(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,ca.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,ca.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}cr.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 cr(n,{...e??{},onLength:s=>{t=s}})};function vT(r){return r[Symbol.asyncIterator]!=null}function _T(r,e){if(vT(r))return async function*(){for await(let a of r)yield e(a)}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var rn=_T;function he(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var h1=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},la=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new h1(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 h1(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 W2=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function At(r={}){return ST(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 ST(r,e){e=e??{};let t=e.onEnd,n=new la,o,s,i,a=he(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,b)=>{s=E=>{s=null,n.push(E);try{g(r(n))}catch(w){b(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=he()})}},l=g=>s!=null?s(g):(n.push(g),o),f=g=>(n=new la,s!=null?s({error:g}):(n.push({error:g}),o)),u=g=>{if(i)return o;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},d=g=>i?o:(i=!0,g!=null?f(g):l({done:!0})),y=()=>(n=new la,d(),{done:!0}),p=g=>(d(g),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:y,throw:p,push:u,end:d,get readableLength(){return n.size},onEmpty:async g=>{let b=g?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let E,w;b!=null&&(E=new Promise((_,I)=>{w=()=>{I(new W2)},b.addEventListener("abort",w)}));try{await Promise.race([a.promise,E])}finally{w!=null&&b!=null&&b?.removeEventListener("abort",w)}}},t==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(g){return m.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(g){return m.end(g),t!=null&&(t(g),t=void 0),o},get readableLength(){return m.readableLength},onEmpty:g=>m.onEmpty(g)},o}function RT(r){return r[Symbol.asyncIterator]!=null}function AT(...r){let e=[];for(let t of r)RT(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=At({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Xt=AT;function it(r,...e){if(r==null)throw new Error("Empty pipeline");if(z2(r)){let n=r;r=()=>n.source}else if(n6(r)||r6(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&z2(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)z2(t[n])&&(t[n]=kT(t[n]));return IT(...t)}var IT=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},r6=r=>r?.[Symbol.asyncIterator]!=null,n6=r=>r?.[Symbol.iterator]!=null,z2=r=>r==null?!1:r.sink!=null&&r.source!=null,kT=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=At({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(r6(s))o=async function*(){yield*s,n.end()};else if(n6(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Xt(n,o())}return r.source};function TT(r){return r[Symbol.asyncIterator]!=null}function DT(r,e){return TT(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 rs=DT;var De=class extends Event{constructor(e,t){super(e),this.detail=t}};var m6=Ue(u6(),1);var f6=Math.pow(2,31)-1,d6=1e3,h6=1;var Q2="/ipfs/bitswap/1.0.0",J2="/ipfs/bitswap/1.1.0",Z2="/ipfs/bitswap/1.2.0",NT=1024,BT=1024,LT=3e4,m1=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(e,t,n,o={}){this._log=Tr(e.peerId,"network"),this._libp2p=e,this._bitswap=t,this._protocols=[Q2],o.b100Only!==!0&&(this._protocols.unshift(J2),this._protocols.unshift(Z2)),this._stats=n,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=o.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=o.maxInboundStreams??NT,this._maxOutboundStreams=o.maxOutboundStreams??BT,this._incomingStreamTimeout=o.incomingStreamTimeout??LT}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});let e={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(let t of this._protocols)this._registrarIds.push(await this._libp2p.register(t,e));this._libp2p.getConnections().forEach(t=>{this._onPeerConnect(t.remotePeer)})}async stop(){if(this._running=!1,await this._libp2p.unhandle(this._protocols),this._registrarIds!=null){for(let e of this._registrarIds)this._libp2p.unregister(e);this._registrarIds=[]}}_onConnection(e){if(!this._running)return;let{stream:t,connection:n}=e,o=new m6.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new h("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this._incomingStreamTimeout);i.addEventListener("abort",s),await it(t,a=>cr(a),async a=>{for await(let c of a){try{let l=await Gt.deserialize(c.subarray(),this._hashLoader);await this._bitswap._receiveMessage(n.remotePeer,l)}catch(l){this._bitswap._receiveError(l);break}i.removeEventListener("abort",s),i=AbortSignal.timeout(this._incomingStreamTimeout),i.addEventListener("abort",s)}}),await t.close({signal:i})}).catch(s=>{this._log(s),t.abort(s)}).finally(()=>{o.clear()})}_onPeerConnect(e){this._bitswap._onPeerConnected(e)}_onPeerDisconnect(e){this._bitswap._onPeerDisconnected(e)}findProviders(e,t={}){return t.onProgress?.(new De("bitswap:network:find-providers",e)),this._libp2p.contentRouting.findProviders(e,t)}async findAndConnect(e,t){await Pr(rs(rn(this.findProviders(e,t),async n=>this.connectTo(n.id,t).catch(o=>{this._log.error(o)})),3)).catch(n=>{this._log.error(n)})}async provide(e,t={}){t.onProgress?.(new De("bitswap:network:provide",e)),await this._libp2p.contentRouting.provide(e,t)}async sendMessage(e,t,n={}){if(!this._running)throw new Error("network isn't running");let o=e.toString();this._log("sendMessage to %s",o,t),n.onProgress?.(new De("bitswap:network:send-wantlist",e)),await this._writeMessage(e,t,n),this._updateSentStats(e,t.blocks)}async connectTo(e,t={}){if(!this._running)throw new Error("network isn't running");return t.onProgress?.(new De("bitswap:network:dial",e)),this._libp2p.dial(e,t)}_updateSentStats(e,t){let n=e.toString();if(this._stats!=null){for(let o of t.values())this._stats.push(n,"dataSent",o.length);this._stats.push(n,"blocksSent",t.size)}}async _writeMessage(e,t,n={}){let o=await this._libp2p.dialProtocol(e,[Z2,J2,Q2]);try{let s;switch(o.protocol){case Q2:s=t.serializeToBitswap100();break;case J2:case Z2:s=t.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${o.protocol}`)}await it([s],i=>ar(i),o),await o.close()}catch(s){n.onProgress?.(new De("bitswap:network:send-wantlist:error",{peer:e,error:s})),this._log(s),o.abort(s)}}};var k6=Ue(b1(),1);function v(r,e="utf8"){let t=n1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var A6=r=>`unwant:${v(r.multihash.bytes,"base64")}`,I6=r=>`block:${v(r.multihash.bytes,"base64")}`,w1=class extends k6.EventEmitter{_log;constructor(e){super(),this.setMaxListeners(d6),this._log=Tr(e,"notif")}hasBlock(e,t){let n=I6(e);this._log(n),this.emit(n,t)}async wantBlock(e,t={}){if(e==null)throw new Error("Not a valid cid");let n=I6(e),o=A6(e);return this._log(`wantBlock:${e}`),new Promise((s,i)=>{let a=()=>{this.removeListener(n,c),t.onProgress?.(new De("bitswap:want-block:unwant",e)),i(new Error(`Block for ${e} unwanted`))},c=l=>{this.removeListener(o,a),t.onProgress?.(new De("bitswap:want-block:block",e)),s(l)};this.once(o,a),this.once(n,c),t.signal?.addEventListener("abort",()=>{this.removeListener(n,c),this.removeListener(o,a),i(new Error(`Want for ${e} aborted`))})})}unwantBlock(e){let t=A6(e);this._log(t),this.emit(t)}};var B6=Ue(b1(),1);var C6=Ue(b1(),1),t0=Ue(P6(),1),jc=class extends C6.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(n=>{this._stats[n]=BigInt(0),this._movingAverages[n]={},this._options.movingAverageIntervals.forEach(o=>{(this._movingAverages[n][o]=(0,t0.default)(o)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){let e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let e;for(;this._queue.length>0;){let t=e=this._queue.shift();t!=null&&this._applyOp(t)}e!=null&&this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){let t=e-this._frequencyLastTime;t>0&&Object.keys(this._stats).forEach(n=>{this._updateFrequencyFor(n,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,n){let o=this._frequencyAccumulators[e]??0;this._frequencyAccumulators[e]=0;let s=o/t*1e3,i=this._movingAverages[e];i==null&&(i=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(a=>{let c=i[a];c==null&&(c=i[a]=(0,t0.default)(a)),c.push(n,s)})}_applyOp(e){let t=e[0],n=e[1];if(typeof n!="number")throw new Error(`invalid increment number: ${n}`);Object.prototype.hasOwnProperty.call(this._stats,t)||(this._stats[t]=BigInt(0)),this._stats[t]=BigInt(this._stats[t])+BigInt(n),this._frequencyAccumulators[t]==null&&(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=n}};var N6={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]},E1=class extends B6.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(e,t=[],n=N6){super();let o=Object.assign({},N6,n);if(typeof o.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof o.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=t,this._options=o,this._enabled=this._options.enabled,this._global=new jc(t,o),this._global.on("update",s=>this.emit("update",s)),this._peers=xn({name:"ipfs_bitswap_stats_peers",metrics:e.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(let e of this._peers)e[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(e){let t=e.toString();return this._peers.get(t)}push(e,t,n){if(this._enabled&&(this._global.push(t,n),e!=null)){let o=this._peers.get(e);o==null&&(o=new jc(this._initialCounters,this._options),this._peers.set(e,o)),o.push(t,n)}}disconnected(e){let t=e.toString(),n=this._peers.get(t);n!=null&&(n.stop(),this._peers.delete(t))}};var L6=HT;function HT(r,e,t){var n=null,o=null,s=function(){n&&(clearTimeout(n),o=null,n=null)},i=function(){var c=o;s(),c&&c()},a=function(){if(!e)return r.apply(this,arguments);var c=this,l=arguments,f=t&&!n;if(s(),o=function(){r.apply(c,l)},n=setTimeout(function(){if(n=null,!f){var u=o;return o=null,u()}},e),f)return o()};return a.cancel=s,a.flush=i,a}var x1=class{peerId;refcnt;network;_entries;_log;constructor(e,t,n){this.peerId=t,this.network=n,this.refcnt=1,this._entries=[],this._log=Tr(e,"msgqueue"),this.sendEntries=L6(this.sendEntries.bind(this),h6)}addMessage(e,t={}){e.empty||this.send(e,t)}addEntries(e,t={}){this._entries=this._entries.concat(e),this.sendEntries(t)}sendEntries(e={}){if(this._entries.length===0)return;let t=new Gt(!1);this._entries.forEach(n=>{n.cancel===!0?t.cancel(n.cid):t.addEntry(n.cid,n.priority)}),this._entries=[],this.addMessage(t,e)}async send(e,t={}){try{await this.network.connectTo(this.peerId,t)}catch(n){this._log.error("cant connect to peer %p: %s",this.peerId,n.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,e,t).catch(n=>{this._log.error("send error",n)})}};var v1=class{peers;wantlist;network;_peerId;_log;constructor(e,t,n,o){this.peers=xn({name:"ipfs_bitswap_want_manager_peers",metrics:o.metrics}),this.wantlist=new ts(n,o),this.network=t,this._peerId=e,this._log=Tr(e,"want")}_addEntries(e,t,n,o={}){let s=e.map((i,a)=>new Gt.Entry(i,f6-a,Gt.WantType.Block,t));s.forEach(i=>{i.cancel?n===!0?this.wantlist.removeForce(i.cid.toString(ie)):this.wantlist.remove(i.cid):(this._log("adding to wantlist"),this.wantlist.add(i.cid,i.priority))});for(let i of this.peers.values())i.addEntries(s,o)}_startPeerHandler(e){let t=this.peers.get(e.toString());if(t!=null){t.refcnt++;return}t=new x1(this._peerId,e,this.network);let n=new Gt(!0);for(let o of this.wantlist.entries())n.addEntry(o[1].cid,o[1].priority);return t.addMessage(n),this.peers.set(e.toString(),t),t}_stopPeerHandler(e){let t=this.peers.get(e.toString());t!=null&&(t.refcnt--,!(t.refcnt>0)&&this.peers.delete(e.toString()))}wantBlocks(e,t={}){this._addEntries(e,!1,!1,t),t.signal?.addEventListener("abort",()=>{this.cancelWants(e)})}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){}stop(){this.peers.forEach(e=>{this.disconnected(e.peerId)})}};var $T={async getHasher(){throw new Error("Not implemented")}},GT={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader:$T,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},YT=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"],_1=class{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(e,t,n={}){this._libp2p=e,this._log=Tr(this.peerId),n=Object.assign({},GT,n),this.stats=new E1(e,YT,{enabled:n.statsEnabled,computeThrottleTimeout:n.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:n.statsComputeThrottleMaxQueueSize}),this.network=new m1(e,this,this.stats,{hashLoader:n.hashLoader,maxInboundStreams:n.maxInboundStreams,maxOutboundStreams:n.maxOutboundStreams,incomingStreamTimeout:n.incomingStreamTimeout}),this.blockstore=t,this.engine=new c1(this.peerId,t,this.network,this.stats,e),this.wm=new v1(this.peerId,this.network,this.stats,e),this.notifications=new w1(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(e,t){try{await this.engine.messageReceived(e,t)}catch{this._log("failed to receive message",t)}if(t.blocks.size===0)return;let n=[];for(let[o,s]of t.blocks.entries()){let i=de.parse(o);n.push({wasWanted:this.wm.wantlist.contains(i),cid:i,data:s})}this.wm.cancelWants(n.filter(({wasWanted:o})=>o).map(({cid:o})=>o)),await Promise.all(n.map(async({cid:o,wasWanted:s,data:i})=>{await this._handleReceivedBlock(e,o,i,s)}))}async _handleReceivedBlock(e,t,n,o){this._log("received block");let s=await this.blockstore.has(t);this._updateReceiveCounters(e.toString(),t,n,s),o&&await this.put(t,n)}_updateReceiveCounters(e,t,n,o){this.stats.push(e,"blocksReceived",1),this.stats.push(e,"dataReceived",n.length),o&&(this.stats.push(e,"dupBlksReceived",1),this.stats.push(e,"dupDataReceived",n.length))}_receiveError(e){this._log.error("ReceiveError",e)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this.stats.disconnected(e)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(e,t){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async want(e,t={}){let n=async(c,l)=>(this.wm.wantBlocks([c],l),this.notifications.wantBlock(c,l)),o=!1,s=async(c,l)=>{try{return await this.blockstore.get(c,l)}catch(f){if(f.code!=="ERR_NOT_FOUND")throw f;return o||(o=!0,this.network.findAndConnect(c,l).catch(u=>{this._log.error(u)})),await n(c,l)}},i=new AbortController,a=Rt([i.signal,t.signal]);try{return await Promise.race([this.notifications.wantBlock(e,{...t,signal:a}),s(e,{...t,signal:a})])}finally{i.abort(),a.clear()}}unwant(e){let t=Array.isArray(e)?e:[e];this.wm.unwantBlocks(t),t.forEach(n=>{this.notifications.unwantBlock(n)})}cancelWants(e){this.wm.cancelWants(Array.isArray(e)?e:[e])}async put(e,t,n){await this.blockstore.put(e,t),this.notify(e,t)}async*putMany(e,t){yield*this.blockstore.putMany(Ys(e,({cid:n,block:o})=>{this.notify(n,o)}),t)}notify(e,t,n={}){this.notifications.hasBlock(e,t),this.engine.receivedBlocks([{cid:e,block:t}]),this.network.provide(e,n).catch(o=>{this._log.error("Failed to provide: %s",o.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}};var O6=(r,e,t={})=>new _1(r,e,t);var r0=class{bitswap;started;constructor(e,t={}){let{libp2p:n,blockstore:o,hashers:s}=e;this.bitswap=O6(n,o,{hashLoader:{getHasher:async i=>{let a;if(typeof i=="string"?a=Object.values(s).find(c=>c.name===i):a=s[i],a!=null)return a;throw new Error(`Could not load hasher for code/name "${i}"`)}},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}announce(e,t,n){this.bitswap.notify(e,t,n)}async retrieve(e,{validateFn:t,...n}={}){return this.bitswap.want(e,n)}};function n0(r={}){return e=>new r0(e,r)}var S1=class{url;#e=0;#t=0;#r=0;#i=0;constructor(e){this.url=e instanceof URL?e:new URL(e)}async getRawBlock(e,t){let n=this.url;if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var R1=class{gateways;log;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(t.gateways??K6).map(n=>new S1(n))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${e} from gateway ${s.url}`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw new AggregateError(o,`unable to fetch raw block for CID ${e} from any gateway`)}};var K6=["https://dweb.link","https://cf-ipfs.com","https://4everland.io"];function o0(r={}){return e=>new R1(e,r)}var WT=Symbol.for("nodejs.util.inspect.custom"),M6=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e),Dr.identity.decoder),U6=114,s0=36,i0=37,Xc=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[a2]=!0;toString(){return this.string==null&&(this.string=ie.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return de.createV1(U6,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return O(this.multihash.bytes,e);if(typeof e=="string")return Ae(e).equals(this);if(e?.multihash?.bytes!=null)return O(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[WT](){return`PeerId(${this.toString()})`}},ri=class extends Xc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ni=class extends Xc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},oi=class extends Xc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function F6(r){if(r.type==="RSA")return new ri(r);if(r.type==="Ed25519")return new ni(r);if(r.type==="secp256k1")return new oi(r);throw new h("Not a PeerId","ERR_INVALID_PARAMETERS")}function Ae(r,e){if(e=e??M6,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Zr(ie.decode(`z${r}`));return r.startsWith("12D")?new ni({multihash:t}):r.startsWith("16U")?new oi({multihash:t}):new ri({multihash:t})}return at(M6.decode(r))}function at(r){try{let e=Zr(r);if(e.code===Xe.code){if(e.digest.length===s0)return new ni({multihash:e});if(e.digest.length===i0)return new oi({multihash:e})}if(e.code===K.code)return new ri({multihash:e})}catch{return zT(de.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function zT(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==U6)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===K.code)return new ri({multihash:r.multihash});if(e.code===Xe.code){if(e.digest.length===s0)return new ni({multihash:r.multihash});if(e.digest.length===i0)return new oi({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function It(r,e){return r.length===s0?new ni({multihash:Jr(Xe.code,r),privateKey:e}):r.length===i0?new oi({multihash:Jr(Xe.code,r),privateKey:e}):new ri({multihash:await K.digest(r),publicKey:r,privateKey:e})}var A1=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 V6=45,XT=15,fa=new A1;function a0(r){if(!(r.length>XT))return fa.new(r).parseWith(()=>fa.readIPv4Addr())}function c0(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>V6))return fa.new(r).parseWith(()=>fa.readIPv6Addr())}function I1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>V6))return fa.new(r).parseWith(()=>fa.readIPAddr())}var HY=parseInt("0xFFFF",16),$Y=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function da(r){return!!a0(r)}function ha(r){return!!c0(r)}function k1(r){return!!I1(r)}var $6=da,tD=ha,l0=function(r){let e=0;if(r=r.toString().trim(),$6(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(tD(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=$6(t[n]),i;s&&(i=l0(t[n]),t[n]=v(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,v(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let 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++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},G6=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var pa={},u0={},nD=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];nD.forEach(r=>{let e=oD(...r);u0[e.code]=e,pa[e.name]=e});function oD(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function fe(r){if(typeof r=="number"){if(u0[r]!=null)return u0[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(pa[r]!=null)return pa[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var IW=fe("ip4"),kW=fe("ip6"),TW=fe("ipcidr");function d0(r,e){switch(fe(r).code){case 4:case 41:return iD(e);case 42:return z6(e);case 6:case 273:case 33:case 132:return X6(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return z6(e);case 421:return uD(e);case 444:return j6(e);case 445:return j6(e);case 466:return lD(e);default:return v(e,"base16")}}function h0(r,e){switch(fe(r).code){case 4:return Y6(e);case 41:return Y6(e);case 42:return W6(e);case 6:case 273:case 33:case 132:return p0(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return W6(e);case 421:return aD(e);case 444:return fD(e);case 445:return dD(e);case 466:return cD(e);default:return x(e,"base16")}}var f0=Object.values(Dr).map(r=>r.decoder),sD=function(){let r=f0[0].or(f0[1]);return f0.slice(2).forEach(e=>r=r.or(e)),r}();function Y6(r){if(!k1(r))throw new Error("invalid ip address");return l0(r)}function iD(r){let e=G6(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!k1(e))throw new Error("invalid ip address");return e}function p0(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function X6(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function W6(r){let e=x(r),t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function z6(r){let e=gr(r);if(r=r.slice(Et(e)),r.length!==e)throw new Error("inconsistent lengths");return v(r)}function aD(r){let e;r[0]==="Q"||r[0]==="1"?e=Zr(ie.decode(`z${r}`)).bytes:e=de.parse(r).multihash.bytes;let t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function cD(r){let e=sD.decode(r),t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function lD(r){let e=gr(r),t=r.slice(Et(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+v(t,"base64url")}function uD(r){let e=gr(r),t=r.slice(Et(e));if(t.length!==e)throw new Error("inconsistent lengths");return v(t,"base58btc")}function fD(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=vt.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=p0(n);return le([t,o],t.length+o.length)}function dD(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=vt.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=p0(n);return le([t,o],t.length+o.length)}function j6(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=v(e,"base32"),o=X6(t);return`${n}:${o}`}function Q6(r){r=m0(r);let e=[],t=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=fe(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw Z6("invalid address: "+r);if(a.path===!0){n=m0(o.slice(s).join("/")),e.push([a.code,h0(a.code,n)]),t.push([a.code,n]);break}let c=h0(a.code,o[s]);e.push([a.code,c]),t.push([a.code,d0(a.code,c)])}return{string:J6(t),bytes:g0(e),tuples:e,stringTuples:t,path:n}}function y0(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=gr(r,o),i=Et(s),a=fe(s),c=hD(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw Z6("Invalid address Uint8Array: "+v(r,"base16"));e.push([s,l]);let f=d0(s,l);if(t.push([s,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:J6(t),tuples:e,stringTuples:t,path:n}}function J6(r){let e=[];return r.map(t=>{let n=fe(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),m0(e.join("/"))}function g0(r){return le(r.map(e=>{let t=fe(e[0]),n=Uint8Array.from(st(t.code));return e.length>1&&e[1]!=null&&(n=le([n,e[1]])),n}))}function hD(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=gr(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Et(t)}}function m0(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function Z6(r){return new Error("Error parsing address: "+r)}var pD=Symbol.for("nodejs.util.inspect.custom"),b0=Symbol.for("@multiformats/js-multiaddr/multiaddr"),mD=[fe("dns").code,fe("dns4").code,fe("dns6").code,fe("dnsaddr").code],T1=class r{bytes;#e;#t;#r;#i;[b0]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=y0(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=Q6(e)}else if(ns(e))t=y0(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=fe("tcp"),a=fe("udp"),c=fe("ip4"),l=fe("ip6"),f=fe("dns6"),u=fe("ip6zone");for(let[y,p]of this.stringTuples())y===u.code&&(s=`%${p??""}`),mD.includes(y)&&(t=i.name,o=443,n=`${p??""}${s}`,e=y===f.code?6:4),(y===i.code||y===a.code)&&(t=fe(y).name,o=parseInt(p??"")),(y===c.code||y===l.code)&&(t=fe(y).name,n=`${p??""}${s}`,e=y===l.code?6:4);if(e==null||t==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:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},fe(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>fe(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(g0(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===pa.p2p.code&&e.push([n,o]),n===pa["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?v(ie.decode(`z${n}`),"base58btc"):v(de.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return O(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=D1.get(t.name);if(n==null)throw new h(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>new r(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[pD](){return`Multiaddr(${this.#e})`}};var D1=new Map;function ns(r){return!!r?.[b0]}function se(r){return new T1(r)}async function*P1(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var K0={};oe(K0,{Ed25519PrivateKey:()=>li,Ed25519PublicKey:()=>rl,generateKeyPair:()=>SP,generateKeyPairFromSeed:()=>kg,unmarshalEd25519PrivateKey:()=>vP,unmarshalEd25519PublicKey:()=>_P});function Cr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function os(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function yD(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function w0(r,...e){if(!yD(r))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function si(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");os(r.outputLen),os(r.blockLen)}function ma(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 eg(r,e){w0(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var C1=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function tg(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var ii=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),nn=(r,e)=>r<<32-e|r>>>e,gD=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!gD)throw new Error("Non little-endian hardware is not supported");var bD=async()=>{};async function rg(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await bD(),n+=s)}}function E0(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function on(r){if(typeof r=="string"&&(r=E0(r)),!tg(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function N1(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];if(!tg(o))throw new Error("Uint8Array expected");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 ya=class{clone(){return this._cloneInto()}},wD={}.toString;function ng(r,e){if(e!==void 0&&wD.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function ga(r){let e=n=>r().update(on(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function dt(r=32){if(C1&&typeof C1.getRandomValues=="function")return C1.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function ED(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)}var ss=class extends ya{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ii(this.buffer)}update(e){ma(this);let{view:t,buffer:n,blockLen:o}=this;e=on(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ii(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){ma(this),eg(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;ED(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=ii(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.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var B1=BigInt(4294967295),x0=BigInt(32);function og(r,e=!1){return e?{h:Number(r&B1),l:Number(r>>x0&B1)}:{h:Number(r>>x0&B1)|0,l:Number(r&B1)|0}}function xD(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=og(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var vD=(r,e)=>BigInt(r>>>0)<<x0|BigInt(e>>>0),_D=(r,e,t)=>r>>>t,SD=(r,e,t)=>r<<32-t|e>>>t,RD=(r,e,t)=>r>>>t|e<<32-t,AD=(r,e,t)=>r<<32-t|e>>>t,ID=(r,e,t)=>r<<64-t|e>>>t-32,kD=(r,e,t)=>r>>>t-32|e<<64-t,TD=(r,e)=>e,DD=(r,e)=>r,PD=(r,e,t)=>r<<t|e>>>32-t,CD=(r,e,t)=>e<<t|r>>>32-t,ND=(r,e,t)=>e<<t-32|r>>>64-t,BD=(r,e,t)=>r<<t-32|e>>>64-t;function LD(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var OD=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),KD=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,MD=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),UD=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,FD=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),VD=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var qD={fromBig:og,split:xD,toBig:vD,shrSH:_D,shrSL:SD,rotrSH:RD,rotrSL:AD,rotrBH:ID,rotrBL:kD,rotr32H:TD,rotr32L:DD,rotlSH:PD,rotlSL:CD,rotlBH:ND,rotlBL:BD,add:LD,add3L:OD,add3H:KD,add4L:MD,add4H:UD,add5H:VD,add5L:FD},xe=qD;var[HD,$D]=xe.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),is=new Uint32Array(80),as=new Uint32Array(80),v0=class extends ss{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:d,Gh:y,Gl:p,Hh:m,Hl:g}=this;return[e,t,n,o,s,i,a,c,l,f,u,d,y,p,m,g]}set(e,t,n,o,s,i,a,c,l,f,u,d,y,p,m,g){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=y|0,this.Gl=p|0,this.Hh=m|0,this.Hl=g|0}process(e,t){for(let w=0;w<16;w++,t+=4)is[w]=e.getUint32(t),as[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let _=is[w-15]|0,I=as[w-15]|0,k=xe.rotrSH(_,I,1)^xe.rotrSH(_,I,8)^xe.shrSH(_,I,7),D=xe.rotrSL(_,I,1)^xe.rotrSL(_,I,8)^xe.shrSL(_,I,7),A=is[w-2]|0,C=as[w-2]|0,U=xe.rotrSH(A,C,19)^xe.rotrBH(A,C,61)^xe.shrSH(A,C,6),L=xe.rotrSL(A,C,19)^xe.rotrBL(A,C,61)^xe.shrSL(A,C,6),F=xe.add4L(D,L,as[w-7],as[w-16]),H=xe.add4H(F,k,U,is[w-7],is[w-16]);is[w]=H|0,as[w]=F|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:d,Fh:y,Fl:p,Gh:m,Gl:g,Hh:b,Hl:E}=this;for(let w=0;w<80;w++){let _=xe.rotrSH(u,d,14)^xe.rotrSH(u,d,18)^xe.rotrBH(u,d,41),I=xe.rotrSL(u,d,14)^xe.rotrSL(u,d,18)^xe.rotrBL(u,d,41),k=u&y^~u&m,D=d&p^~d&g,A=xe.add5L(E,I,D,$D[w],as[w]),C=xe.add5H(A,b,_,k,HD[w],is[w]),U=A|0,L=xe.rotrSH(n,o,28)^xe.rotrBH(n,o,34)^xe.rotrBH(n,o,39),F=xe.rotrSL(n,o,28)^xe.rotrBL(n,o,34)^xe.rotrBL(n,o,39),H=n&s^n&a^s&a,re=o&i^o&c^i&c;b=m|0,E=g|0,m=y|0,g=p|0,y=u|0,p=d|0,{h:u,l:d}=xe.add(l|0,f|0,C|0,U|0),l=a|0,f=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let T=xe.add3L(U,F,re);n=xe.add3H(T,C,L,H),o=T|0}({h:n,l:o}=xe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=xe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=xe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=xe.add(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:d}=xe.add(this.Eh|0,this.El|0,u|0,d|0),{h:y,l:p}=xe.add(this.Fh|0,this.Fl|0,y|0,p|0),{h:m,l:g}=xe.add(this.Gh|0,this.Gl|0,m|0,g|0),{h:b,l:E}=xe.add(this.Hh|0,this.Hl|0,b|0,E|0),this.set(n,o,s,i,a,c,l,f,u,d,y,p,m,g,b,E)}roundClean(){is.fill(0),as.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Ye=ga(()=>new v0);var O1={};oe(O1,{bitGet:()=>QD,bitLen:()=>XD,bitMask:()=>Qc,bitSet:()=>JD,bytesToHex:()=>uo,bytesToNumberBE:()=>fo,bytesToNumberLE:()=>an,concatBytes:()=>po,createHmacDrbg:()=>R0,ensureBytes:()=>We,equalBytes:()=>zD,hexToBytes:()=>ai,hexToNumber:()=>S0,isBytes:()=>sn,numberToBytesBE:()=>cs,numberToBytesLE:()=>ho,numberToHexUnpadded:()=>cg,numberToVarBytesBE:()=>WD,utf8ToBytes:()=>jD,validateObject:()=>Nr});var ag=BigInt(0),L1=BigInt(1),GD=BigInt(2);function sn(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var YD=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function uo(r){if(!sn(r))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=YD[r[t]];return e}function cg(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function S0(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var lo={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function sg(r){if(r>=lo._0&&r<=lo._9)return r-lo._0;if(r>=lo._A&&r<=lo._F)return r-(lo._A-10);if(r>=lo._a&&r<=lo._f)return r-(lo._a-10)}function ai(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded 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=sg(r.charCodeAt(s)),a=sg(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 fo(r){return S0(uo(r))}function an(r){if(!sn(r))throw new Error("Uint8Array expected");return S0(uo(Uint8Array.from(r).reverse()))}function cs(r,e){return ai(r.toString(16).padStart(e*2,"0"))}function ho(r,e){return cs(r,e).reverse()}function WD(r){return ai(cg(r))}function We(r,e,t){let n;if(typeof e=="string")try{n=ai(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(sn(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} expected ${t} bytes, got ${o}`);return n}function po(...r){let e=0;for(let o=0;o<r.length;o++){let s=r[o];if(!sn(s))throw new Error("Uint8Array expected");e+=s.length}let t=new Uint8Array(e),n=0;for(let o=0;o<r.length;o++){let s=r[o];t.set(s,n),n+=s.length}return t}function zD(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 jD(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function XD(r){let e;for(e=0;r>ag;r>>=L1,e+=1);return e}function QD(r,e){return r>>BigInt(e)&L1}var JD=(r,e,t)=>r|(t?L1:ag)<<BigInt(e),Qc=r=>(GD<<BigInt(r-1))-L1,_0=r=>new Uint8Array(r),ig=r=>Uint8Array.from(r);function R0(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=_0(r),o=_0(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=_0())=>{o=a(ig([0]),u),n=a(),u.length!==0&&(o=a(ig([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,d=[];for(;u<e;){n=a();let y=n.slice();d.push(y),u+=n.length}return po(...d)};return(u,d)=>{i(),c(u);let y;for(;!(y=d(l()));)c();return i(),y}}var ZD={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||sn(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Nr(r,e,t={}){let n=(o,s,i)=>{let a=ZD[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var _t=BigInt(0),Qe=BigInt(1),ci=BigInt(2),eP=BigInt(3),A0=BigInt(4),lg=BigInt(5),ug=BigInt(8),tP=BigInt(9),rP=BigInt(16);function Le(r,e){let t=r%e;return t>=_t?t:e+t}function I0(r,e,t){if(t<=_t||e<_t)throw new Error("Expected power/modulo > 0");if(t===Qe)return _t;let n=Qe;for(;e>_t;)e&Qe&&(n=n*r%t),r=r*r%t,e>>=Qe;return n}function ze(r,e,t){let n=r;for(;e-- >_t;)n*=n,n%=t;return n}function K1(r,e){if(r===_t||e<=_t)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Le(r,e),n=e,o=_t,s=Qe,i=Qe,a=_t;for(;t!==_t;){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!==Qe)throw new Error("invert: does not exist");return Le(o,e)}function nP(r){let e=(r-Qe)/ci,t,n,o;for(t=r-Qe,n=0;t%ci===_t;t/=ci,n++);for(o=ci;o<r&&I0(o,e,r)!==r-Qe;o++);if(n===1){let i=(r+Qe)/A0;return function(c,l){let f=c.pow(l,i);if(!c.eql(c.sqr(f),l))throw new Error("Cannot find square root");return f}}let s=(t+Qe)/ci;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,f=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),d=a.pow(c,t);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let y=1;for(let m=a.sqr(d);y<l&&!a.eql(m,a.ONE);y++)m=a.sqr(m);let p=a.pow(f,Qe<<BigInt(l-y-1));f=a.sqr(p),u=a.mul(u,p),d=a.mul(d,f),l=y}return u}}function oP(r){if(r%A0===eP){let e=(r+Qe)/A0;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%ug===lg){let e=(r-lg)/ug;return function(n,o){let s=n.mul(o,ci),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,ci),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%rP,nP(r)}var fg=(r,e)=>(Le(r,e)&Qe)===Qe,sP=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function k0(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=sP.reduce((n,o)=>(n[o]="function",n),e);return Nr(r,t)}function iP(r,e,t){if(t<_t)throw new Error("Expected power > 0");if(t===_t)return r.ONE;if(t===Qe)return e;let n=r.ONE,o=e;for(;t>_t;)t&Qe&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Qe;return n}function aP(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function T0(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function M1(r,e,t=!1,n={}){if(r<=_t)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=T0(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=oP(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:Qc(o),ZERO:_t,ONE:Qe,create:c=>Le(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return _t<=c&&c<r},is0:c=>c===_t,isOdd:c=>(c&Qe)===Qe,neg:c=>Le(-c,r),eql:(c,l)=>c===l,sqr:c=>Le(c*c,r),add:(c,l)=>Le(c+l,r),sub:(c,l)=>Le(c-l,r),mul:(c,l)=>Le(c*l,r),pow:(c,l)=>iP(a,c,l),div:(c,l)=>Le(c*K1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>K1(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>aP(a,c),cmov:(c,l,f)=>f?l:c,toBytes:c=>t?ho(c,s):cs(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?an(c):fo(c)}});return Object.freeze(a)}function dg(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function hg(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 D0(r){let e=hg(r);return e+Math.ceil(e/2)}function pg(r,e,t=!1){let n=r.length,o=hg(e),s=D0(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?fo(r):an(r),a=Le(i,e-Qe)+Qe;return t?ho(a,o):cs(a,o)}var lP=BigInt(0),P0=BigInt(1);function U1(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>lP;)s&P0&&(i=i.add(a)),a=a.double(),s>>=P0;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,f=l;for(let u=0;u<i;u++){f=l,c.push(f);for(let d=1;d<a;d++)f=f.add(l),c.push(f);l=f.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,f=r.BASE,u=BigInt(2**o-1),d=2**o,y=BigInt(o);for(let p=0;p<a;p++){let m=p*c,g=Number(i&u);i>>=y,g>c&&(g-=d,i+=P0);let b=m,E=m+Math.abs(g)-1,w=p%2!==0,_=g<0;g===0?f=f.add(t(w,s[b])):l=l.add(t(_,s[E]))}return{p:l,f}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function Jc(r){return k0(r.Fp),Nr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...T0(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var cn=BigInt(0),br=BigInt(1),F1=BigInt(2),uP=BigInt(8),fP={zip215:!0};function dP(r){let e=Jc(r);return Nr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function V1(r){let e=dP(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=F1<<BigInt(a*8)-br,f=t.create,u=e.uvRatio||((P,R)=>{try{return{isValid:!0,value:t.sqrt(P*t.inv(R))}}catch{return{isValid:!1,value:cn}}}),d=e.adjustScalarBytes||(P=>P),y=e.domain||((P,R,V)=>{if(R.length||V)throw new Error("Contexts/pre-hash are not supported");return P}),p=P=>typeof P=="bigint"&&cn<P,m=(P,R)=>p(P)&&p(R)&&P<R,g=P=>P===cn||m(P,l);function b(P,R){if(m(P,R))return P;throw new Error(`Expected valid scalar < ${R}, got ${typeof P} ${P}`)}function E(P){return P===cn?P:b(P,n)}let w=new Map;function _(P){if(!(P instanceof I))throw new Error("ExtendedPoint expected")}class I{constructor(R,V,$,j){if(this.ex=R,this.ey=V,this.ez=$,this.et=j,!g(R))throw new Error("x required");if(!g(V))throw new Error("y required");if(!g($))throw new Error("z required");if(!g(j))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(R){if(R instanceof I)throw new Error("extended point not allowed");let{x:V,y:$}=R||{};if(!g(V)||!g($))throw new Error("invalid affine point");return new I(V,$,br,f(V*$))}static normalizeZ(R){let V=t.invertBatch(R.map($=>$.ez));return R.map(($,j)=>$.toAffine(V[j])).map(I.fromAffine)}_setWindowSize(R){this._WINDOW_SIZE=R,w.delete(this)}assertValidity(){let{a:R,d:V}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:$,ey:j,ez:ue,et:pe}=this,_e=f($*$),ye=f(j*j),ge=f(ue*ue),$e=f(ge*ge),Me=f(_e*R),Dt=f(ge*f(Me+ye)),Pt=f($e+f(V*f(_e*ye)));if(Dt!==Pt)throw new Error("bad point: equation left != right (1)");let xt=f($*j),Ht=f(ue*pe);if(xt!==Ht)throw new Error("bad point: equation left != right (2)")}equals(R){_(R);let{ex:V,ey:$,ez:j}=this,{ex:ue,ey:pe,ez:_e}=R,ye=f(V*_e),ge=f(ue*j),$e=f($*_e),Me=f(pe*j);return ye===ge&&$e===Me}is0(){return this.equals(I.ZERO)}negate(){return new I(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:R}=e,{ex:V,ey:$,ez:j}=this,ue=f(V*V),pe=f($*$),_e=f(F1*f(j*j)),ye=f(R*ue),ge=V+$,$e=f(f(ge*ge)-ue-pe),Me=ye+pe,Dt=Me-_e,Pt=ye-pe,xt=f($e*Dt),Ht=f(Me*Pt),so=f($e*Pt),Gs=f(Dt*Me);return new I(xt,Ht,Gs,so)}add(R){_(R);let{a:V,d:$}=e,{ex:j,ey:ue,ez:pe,et:_e}=this,{ex:ye,ey:ge,ez:$e,et:Me}=R;if(V===BigInt(-1)){let C8=f((ue-j)*(ge+ye)),N8=f((ue+j)*(ge-ye)),Xp=f(N8-C8);if(Xp===cn)return this.double();let B8=f(pe*F1*Me),L8=f(_e*F1*$e),O8=L8+B8,K8=N8+C8,M8=L8-B8,tI=f(O8*Xp),rI=f(K8*M8),nI=f(O8*M8),oI=f(Xp*K8);return new I(tI,rI,oI,nI)}let Dt=f(j*ye),Pt=f(ue*ge),xt=f(_e*$*Me),Ht=f(pe*$e),so=f((j+ue)*(ye+ge)-Dt-Pt),Gs=Ht-xt,Uc=Ht+xt,P8=f(Pt-V*Dt),QA=f(so*Gs),JA=f(Uc*P8),ZA=f(so*P8),eI=f(Gs*Uc);return new I(QA,JA,eI,ZA)}subtract(R){return this.add(R.negate())}wNAF(R){return A.wNAFCached(this,w,R,I.normalizeZ)}multiply(R){let{p:V,f:$}=this.wNAF(b(R,n));return I.normalizeZ([V,$])[0]}multiplyUnsafe(R){let V=E(R);return V===cn?D:this.equals(D)||V===br?this:this.equals(k)?this.wNAF(V).p:A.unsafeLadder(this,V)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return A.unsafeLadder(this,n).is0()}toAffine(R){let{ex:V,ey:$,ez:j}=this,ue=this.is0();R==null&&(R=ue?uP:t.inv(j));let pe=f(V*R),_e=f($*R),ye=f(j*R);if(ue)return{x:cn,y:br};if(ye!==br)throw new Error("invZ was invalid");return{x:pe,y:_e}}clearCofactor(){let{h:R}=e;return R===br?this:this.multiplyUnsafe(R)}static fromHex(R,V=!1){let{d:$,a:j}=e,ue=t.BYTES;R=We("pointHex",R,ue);let pe=R.slice(),_e=R[ue-1];pe[ue-1]=_e&-129;let ye=an(pe);ye===cn||(V?b(ye,l):b(ye,t.ORDER));let ge=f(ye*ye),$e=f(ge-br),Me=f($*ge-j),{isValid:Dt,value:Pt}=u($e,Me);if(!Dt)throw new Error("Point.fromHex: invalid y coordinate");let xt=(Pt&br)===br,Ht=(_e&128)!==0;if(!V&&Pt===cn&&Ht)throw new Error("Point.fromHex: x=0 and x_0=1");return Ht!==xt&&(Pt=f(-Pt)),I.fromAffine({x:Pt,y:ye})}static fromPrivateKey(R){return L(R).point}toRawBytes(){let{x:R,y:V}=this.toAffine(),$=ho(V,t.BYTES);return $[$.length-1]|=R&br?128:0,$}toHex(){return uo(this.toRawBytes())}}I.BASE=new I(e.Gx,e.Gy,br,f(e.Gx*e.Gy)),I.ZERO=new I(cn,br,br,cn);let{BASE:k,ZERO:D}=I,A=U1(I,a*8);function C(P){return Le(P,n)}function U(P){return C(an(P))}function L(P){let R=a;P=We("private key",P,R);let V=We("hashed private key",s(P),2*R),$=d(V.slice(0,R)),j=V.slice(R,2*R),ue=U($),pe=k.multiply(ue),_e=pe.toRawBytes();return{head:$,prefix:j,scalar:ue,point:pe,pointBytes:_e}}function F(P){return L(P).pointBytes}function H(P=new Uint8Array,...R){let V=po(...R);return U(s(y(V,We("context",P),!!o)))}function re(P,R,V={}){P=We("message",P),o&&(P=o(P));let{prefix:$,scalar:j,pointBytes:ue}=L(R),pe=H(V.context,$,P),_e=k.multiply(pe).toRawBytes(),ye=H(V.context,_e,ue,P),ge=C(pe+ye*j);E(ge);let $e=po(_e,ho(ge,t.BYTES));return We("result",$e,a*2)}let T=fP;function N(P,R,V,$=T){let{context:j,zip215:ue}=$,pe=t.BYTES;P=We("signature",P,2*pe),R=We("message",R),o&&(R=o(R));let _e=an(P.slice(pe,2*pe)),ye,ge,$e;try{ye=I.fromHex(V,ue),ge=I.fromHex(P.slice(0,pe),ue),$e=k.multiplyUnsafe(_e)}catch{return!1}if(!ue&&ye.isSmallOrder())return!1;let Me=H(j,ge.toRawBytes(),ye.toRawBytes(),R);return ge.add(ye.multiplyUnsafe(Me)).subtract($e).clearCofactor().equals(I.ZERO)}return k._setWindowSize(8),{CURVE:e,getPublicKey:F,sign:re,verify:N,ExtendedPoint:I,utils:{getExtendedPublicKey:L,randomPrivateKey:()=>i(t.BYTES),precompute(P=8,R=I.BASE){return R._setWindowSize(P),R.multiply(BigInt(3)),R}}}}var Zc=BigInt(0),C0=BigInt(1);function hP(r){return Nr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function mg(r){let e=hP(r),{P:t}=e,n=w=>Le(w,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(w=>w),c=e.powPminus2||(w=>I0(w,t-BigInt(2),t));function l(w,_,I){let k=n(w*(_-I));return _=n(_-k),I=n(I+k),[_,I]}function f(w){if(typeof w=="bigint"&&Zc<=w&&w<t)return w;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function d(w,_){let I=f(w),k=f(_),D=I,A=C0,C=Zc,U=I,L=C0,F=Zc,H;for(let T=BigInt(o-1);T>=Zc;T--){let N=k>>T&C0;F^=N,H=l(F,A,U),A=H[0],U=H[1],H=l(F,C,L),C=H[0],L=H[1],F=N;let Y=A+C,P=n(Y*Y),R=A-C,V=n(R*R),$=P-V,j=U+L,ue=U-L,pe=n(ue*Y),_e=n(j*R),ye=pe+_e,ge=pe-_e;U=n(ye*ye),L=n(D*n(ge*ge)),A=n(P*V),C=n($*(P+n(u*$)))}H=l(F,A,U),A=H[0],U=H[1],H=l(F,C,L),C=H[0],L=H[1];let re=c(C);return n(A*re)}function y(w){return ho(n(w),s)}function p(w){let _=We("u coordinate",w,s);return i===32&&(_[31]&=127),an(_)}function m(w){let _=We("scalar",w),I=_.length;if(I!==s&&I!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${I}`);return an(a(_))}function g(w,_){let I=p(_),k=m(w),D=d(I,k);if(D===Zc)throw new Error("Invalid private or public key received");return y(D)}let b=y(e.Gu);function E(w){return g(w,b)}return{scalarMult:g,scalarMultBase:E,getSharedSecret:(w,_)=>g(w,_),getPublicKey:w=>E(w),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:b}}var el=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),yg=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Cz=BigInt(0),pP=BigInt(1),N0=BigInt(2),mP=BigInt(5),gg=BigInt(10),yP=BigInt(20),gP=BigInt(40),bg=BigInt(80);function wg(r){let e=el,n=r*r%e*r%e,o=ze(n,N0,e)*n%e,s=ze(o,pP,e)*r%e,i=ze(s,mP,e)*s%e,a=ze(i,gg,e)*i%e,c=ze(a,yP,e)*a%e,l=ze(c,gP,e)*c%e,f=ze(l,bg,e)*l%e,u=ze(f,bg,e)*l%e,d=ze(u,gg,e)*i%e;return{pow_p_5_8:ze(d,N0,e)*r%e,b2:n}}function Eg(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function bP(r,e){let t=el,n=Le(e*e*e,t),o=Le(n*n*e,t),s=wg(r*o).pow_p_5_8,i=Le(r*n*s,t),a=Le(e*i*i,t),c=i,l=Le(i*yg,t),f=a===r,u=a===Le(-r,t),d=a===Le(-r*yg,t);return f&&(i=c),(u||d)&&(i=l),fg(i,t)&&(i=Le(-i,t)),{isValid:f||u,value:i}}var mo=M1(el,void 0,!0),B0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:mo,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Ye,randomBytes:dt,adjustScalarBytes:Eg,uvRatio:bP},we=V1(B0);function xg(r,e,t){if(e.length>255)throw new Error("Context is too big");return N1(E0("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var Nz=V1({...B0,domain:xg}),Bz=V1({...B0,domain:xg,prehash:Ye}),tl=mg({P:el,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=el,{pow_p_5_8:t,b2:n}=wg(r);return Le(ze(t,BigInt(3),e)*n,e)},adjustScalarBytes:Eg,randomBytes:dt});var wP=(mo.ORDER+BigInt(3))/BigInt(8),Lz=mo.pow(N0,wP),Oz=mo.sqrt(mo.neg(mo.ONE)),Kz=(mo.ORDER-BigInt(5))/BigInt(8),Mz=BigInt(486662);var Uz=dg(mo,mo.neg(BigInt(486664)));var Fz=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Vz=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),qz=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),Hz=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var $z=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ba=32,yo=64,q1=32;function vg(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:Ag(r,e),publicKey:e}}function _g(r){if(r.length!==q1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:Ag(e,t),publicKey:t}}function Sg(r,e){let t=r.subarray(0,q1);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Rg(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Ag(r,e){let t=new Uint8Array(yo);for(let n=0;n<q1;n++)t[n]=r[n],t[q1+n]=e[n];return t}var Qt={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var L0={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Ig(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Qt.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function wa(r,e){let n=await Ig().encrypt(r,e);return Ge.encode(n)}var ht;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(ht||(ht={}));var O0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(O0||(O0={}));(function(r){r.codec=()=>Re(O0)})(ht||(ht={}));var An;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=ht.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(An||(An={}));var go;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=ht.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(go||(go={}));var rl=class{_key;constructor(e){this._key=Ea(e,ba)}verify(e,t){return Rg(this._key,t,e)}marshal(){return this._key}get bytes(){return An.encode({Type:ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}},li=class{_key;_publicKey;constructor(e,t){this._key=Ea(e,yo),this._publicKey=Ea(t,ba)}sign(e){return Sg(this._key,e)}get public(){return new rl(this._publicKey)}marshal(){return this._key}get bytes(){return go.encode({Type:ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Cr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vP(r){if(r.length>yo){r=Ea(r,yo+ba);let n=r.subarray(0,yo),o=r.subarray(yo,r.length);return new li(n,o)}r=Ea(r,yo);let e=r.subarray(0,yo),t=r.subarray(ba);return new li(e,t)}function _P(r){return r=Ea(r,ba),new rl(r)}async function SP(){let{privateKey:r,publicKey:e}=vg();return new li(r,e)}async function kg(r){let{privateKey:e,publicKey:t}=_g(r);return new li(e,t)}function Ea(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Y0={};oe(Y0,{MAX_RSA_KEY_SIZE:()=>hl,RsaPrivateKey:()=>_a,RsaPublicKey:()=>dl,fromJwk:()=>zP,generateKeyPair:()=>jP,unmarshalRsaPrivateKey:()=>$0,unmarshalRsaPublicKey:()=>WP});function ui(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var ds={};oe(ds,{exportToPem:()=>qP,importFromPem:()=>HP,jwkToPkcs1:()=>MP,jwkToPkix:()=>FP,pkcs1ToJwk:()=>KP,pkixToJwk:()=>UP});var $1=class extends ya{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,si(e);let n=on(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),s.fill(0)}update(e){return ma(this),this.iHash.update(e),this}digestInto(e){ma(this),w0(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}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ls=(r,e,t)=>new $1(r,e).update(t).digest();ls.create=(r,e)=>new $1(r,e);function Tg(r,e,t,n){si(r);let o=ng({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(os(s),os(i),os(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=on(e),l=on(t),f=new Uint8Array(i),u=ls.create(r,c),d=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:f,PRF:u,PRFSalt:d}}function Dg(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function Pg(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Tg(r,e,t,n),l,f=new Uint8Array(4),u=ii(f),d=new Uint8Array(a.outputLen);for(let y=1,p=0;p<s;y++,p+=a.outputLen){let m=i.subarray(p,p+a.outputLen);u.setInt32(0,y,!1),(l=c._cloneInto(l)).update(f).digestInto(d),m.set(d.subarray(0,m.length));for(let g=1;g<o;g++){a._cloneInto(l).update(d).digestInto(d);for(let b=0;b<m.length;b++)m[b]^=d[b]}}return Dg(a,c,i,l,d)}async function pt(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Tg(r,e,t,n),f,u=new Uint8Array(4),d=ii(u),y=new Uint8Array(c.outputLen);for(let p=1,m=0;m<s;p++,m+=c.outputLen){let g=a.subarray(m,m+c.outputLen);d.setInt32(0,p,!1),(f=l._cloneInto(f)).update(u).digestInto(y),g.set(y.subarray(0,g.length)),await rg(o-1,i,()=>{c._cloneInto(f).update(y).digestInto(y);for(let b=0;b<g.length;b++)g[b]^=y[b]})}return Dg(c,l,a,f,y)}var ke=Ue(Cg());function fi(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function us(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*e);l[s-f-1]=Math.floor(o/u),o-=l[s-f-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function W1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function U0(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=fi(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,fi(s,8)-n}function Ng(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=us(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=us(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function Bg(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function lr(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var bj=Math.log(2);function z1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function F0(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function xo(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ol=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return F0(this.items)}},nl=[new Uint8Array([1])],Lg="0123456789";var va="",ln=new ArrayBuffer(0),V0=new Uint8Array(0),sl="EndOfContent",Kg="OCTET STRING",Mg="BIT STRING";function vo(r){var e;return e=class extends r{constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?ke.BufferSourceConverter.toUint8Array(s.valueHex):V0}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!xo(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",ln)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ke.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var wo=class{constructor({blockLength:e=0,error:t=va,warnings:n=[],valueBeforeDecode:o=V0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=ke.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:ke.Convert.ToHex(this.valueBeforeDecodeView)}}};wo.NAME="baseBlock";var Wt=class extends wo{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Wt.NAME="valueBlock";var j1=class extends vo(wo){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?ke.BufferSourceConverter.toUint8Array(e.valueHex):V0,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",ln}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=us(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),f=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let d=new Uint8Array(f);for(let y=0;y<l.length;y++)d[y]=l[y];l=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let d=0;d<c;d++)u[d]=l[d];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=fi(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};j1.NAME="identificationBlock";var X1=class extends wo{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=fi(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=us(this.length,8);if(o.byteLength>127)return this.error="Too big length",ln;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};X1.NAME="lengthBlock";var Z={},Nt=class extends wo{constructor({name:e=va,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new j1(o),this.lenBlock=new X1(o),this.valueBlock=s?new s(o):new Wt(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new ol;t||Ug(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?ln:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ke.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${ke.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return Bg(t,n)}};Nt.NAME="BaseBlock";function Ug(r){if(r instanceof Z.Constructed)for(let e of r.valueBlock.value)Ug(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Q1=class extends Nt{constructor({value:e=va,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Q1.NAME="BaseStringBlock";var J1=class extends vo(Wt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};J1.NAME="PrimitiveValueBlock";var Fg,Z1=class extends Nt{constructor(e={}){super(e,J1),this.idBlock.isConstructed=!1}};Fg=Z1;Z.Primitive=Fg;Z1.NAME="PRIMITIVE";function NP(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function Nf(r,e=0,t=r.length){let n=e,o=new Nt({},Wt),s=new wo;if(!xo(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=Nt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=Z.EndOfContent;break;case 1:c=Z.Boolean;break;case 2:c=Z.Integer;break;case 3:c=Z.BitString;break;case 4:c=Z.OctetString;break;case 5:c=Z.Null;break;case 6:c=Z.ObjectIdentifier;break;case 10:c=Z.Enumerated;break;case 12:c=Z.Utf8String;break;case 13:c=Z.RelativeObjectIdentifier;break;case 14:c=Z.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=Z.Sequence;break;case 17:c=Z.Set;break;case 18:c=Z.NumericString;break;case 19:c=Z.PrintableString;break;case 20:c=Z.TeletexString;break;case 21:c=Z.VideotexString;break;case 22:c=Z.IA5String;break;case 23:c=Z.UTCTime;break;case 24:c=Z.GeneralizedTime;break;case 25:c=Z.GraphicString;break;case 26:c=Z.VisibleString;break;case 27:c=Z.GeneralString;break;case 28:c=Z.UniversalString;break;case 29:c=Z.CharacterString;break;case 30:c=Z.BmpString;break;case 31:c=Z.DATE;break;case 32:c=Z.TimeOfDay;break;case 33:c=Z.DateTime;break;case 34:c=Z.Duration;break;default:{let l=o.idBlock.isConstructed?new Z.Constructed:new Z.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?Z.Constructed:Z.Primitive}return o=NP(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function Ee(r){if(!r.byteLength){let e=new Nt({},Wt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Nf(ke.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function BP(r,e){return r?1:e}var In=class extends Wt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;BP(this.isIndefiniteForm,n)>0;){let i=Nf(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===sl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===sl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new ol;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?ln:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};In.NAME="ConstructedValueBlock";var Vg,fs=class extends Nt{constructor(e={}){super(e,In),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
17
|
+
`});var Eb=Ie(()=>{bb();_d();Mo();e3();bc()});var n3,qie,xb=Ie(()=>{Yw();Xw();Qw();jw();Zw();Wp();Jw();Yp();eb();rb();db();pb();mb();gb();Eb();n3={...Fp,...Vp,...Kp,...$p,...Hp,...qp,...zp,...Gp,...Xp,...Qp},qie={...t3,...r3}});function Gi(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Id=Ie(()=>{});function Dd(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Gi(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var o3=Ie(()=>{Id()});function _b(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var vb,s3,uN,Td,i3=Ie(()=>{xb();o3();vb=_b("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),s3=_b("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=Dd(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),uN={utf8:vb,"utf-8":vb,hex:n3.base16,latin1:s3,ascii:s3,binary:s3,...n3},Td=uN});var Sb={};me(Sb,{toString:()=>dN});function dN(r,e="utf8"){let t=Td[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var Rb=Ie(()=>{i3()});var Ab={};me(Ab,{fromString:()=>fN});function fN(r,e="utf8"){let t=Td[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Gi(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var Ib=Ie(()=>{i3();Id()});var Db={};me(Db,{concat:()=>hN});function hN(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=Dd(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Gi(t)}var Tb=Ie(()=>{o3();Id()});var c3=ae((nae,Lb)=>{"use strict";var kb=Iw(),Yi=Uw(),{names:xc}=Vw(),{toString:kd}=(Rb(),Ac(Sb)),{fromString:pN}=(Ib(),Ac(Ab)),{concat:mN}=(Tb(),Ac(Db)),Xi={};for(let r in xc){let e=r;Xi[xc[e]]=e}Object.freeze(Xi);function gN(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return kd(r,"base16")}function yN(r){return pN(r,"base16")}function wN(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return kd(kb.encode("base58btc",r)).slice(1)}function bN(r){let e=r instanceof Uint8Array?kd(r):r;return kb.decode("z"+e)}function Cb(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=Yi.decode(r);if(!Ob(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(Yi.decode.bytes);let t=Yi.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(Yi.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${kd(r,"base16")}`);return{code:e,name:Xi[e],length:t,digest:r}}function EN(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=Nb(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=Yi.encode(n),s=Yi.encode(t);return mN([o,s,r],o.length+s.length+r.length)}function Nb(r){let e=r;if(typeof r=="string"){if(xc[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=xc[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Xi[e]===void 0&&!a3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function a3(r){return r>0&&r<16}function Ob(r){return!!(a3(r)||Xi[r])}function Pb(r){Cb(r)}function xN(r){return Pb(r),r.subarray(0,2)}Lb.exports={names:xc,codes:Xi,toHexString:gN,fromHexString:yN,toB58String:wN,fromB58String:bN,decode:Cb,encode:EN,coerceCode:Nb,isAppCode:a3,validate:Pb,prefix:xN,isValidCode:Ob}});var Zb=ae(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});var f3=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},Od=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new f3;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Pd.EventIterator=Od;Pd.default=Od});var Jb=ae(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});var h3=Zb();vc.EventIterator=h3.EventIterator;function TN(r,e,t){return new h3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}vc.subscribe=TN;vc.default=h3.EventIterator});var kE=ae((Gle,TE)=>{"use strict";TE.exports=DE;var HN=If(),Fo=DE.prototype,qN=new Date%1e9;function WN(){return(Math.random()*1e9>>>0)+qN++}function DE(r){r=r||{},this.id=r.id||WN(),this.max=r.max||1/0,this.items=r.items||[],this._lookup={},this.size=this.items.length,this.lastModified=new Date(r.lastModified||new Date);for(var e,t,n=this.items.length;n--;)e=this.items[n],t=new Date(e.expires)-new Date,this._lookup[e.key]=e,t>0?this.expire(e.key,t):t<=0&&this.delete(e.key)}Fo.has=function(r){return r in this._lookup};Fo.get=function(r){if(!this.has(r))return null;var e=this._lookup[r];return e.refresh&&this.expire(r,e.refresh),this.items.splice(this.items.indexOf(e),1),this.items.push(e),e.value};Fo.meta=function(r){if(!this.has(r))return null;var e=this._lookup[r];return"meta"in e?e.meta:null};Fo.set=function(r,e,t){var n=this._lookup[r],o=this._lookup[r]={key:r,value:e};return this.lastModified=new Date,n?(clearTimeout(n.timeout),this.items.splice(this.items.indexOf(n),1,o)):(this.size>=this.max&&this.delete(this.items[0].key),this.items.push(o),this.size++),t&&("ttl"in t&&this.expire(r,t.ttl),"meta"in t&&(o.meta=t.meta),t.refresh&&(o.refresh=t.ttl)),this};Fo.delete=function(r){var e=this._lookup[r];return e?(this.lastModified=new Date,this.items.splice(this.items.indexOf(e),1),clearTimeout(e.timeout),delete this._lookup[r],this.size--,this):!1};Fo.expire=function(r,e){var t=e||0,n=this._lookup[r];if(!n)return this;if(typeof t=="string"&&(t=HN(e)),typeof t!="number")throw new TypeError("Expiration time must be a string or number.");return clearTimeout(n.timeout),n.timeout=setTimeout(this.delete.bind(this,n.key),t),n.expires=Number(new Date)+t,this};Fo.clear=function(){for(var r=this.items.length;r--;)this.delete(this.items[r].key);return this};Fo.toJSON=function(){for(var r=new Array(this.items.length),e,t=r.length;t--;)e=this.items[t],r[t]={key:e.key,meta:e.meta,value:e.value,expires:e.expires,refresh:e.refresh};return{id:this.id,max:isFinite(this.max)?this.max:void 0,lastModified:this.lastModified,items:r}}});var dO={};me(dO,{createHelia:()=>lO,libp2pDefaults:()=>Md});function ct(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}function nx(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 Ls=nx;function ox(r){return r[Symbol.asyncIterator]!=null}function G3(r){return r?.then!=null}function sx(r,e){if(ox(r))return async function*(){for await(let a of r){let c=e(a);G3(c)&&await c,yield a}}();let t=Ls(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);G3(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var $o=sx;var pf={};me(pf,{base32:()=>st,base32hex:()=>hx,base32hexpad:()=>mx,base32hexpadupper:()=>gx,base32hexupper:()=>px,base32pad:()=>dx,base32padupper:()=>fx,base32upper:()=>e4,base32z:()=>yx});var yO=new Uint8Array(0);function Y3(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 mn(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 X3(r){return new TextEncoder().encode(r)}function Q3(r){return new TextDecoder().decode(r)}function ix(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),d=Math.log(256)/Math.log(a);function u(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var ax=ix,cx=ax,Z3=cx;var uf=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")}},df=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 J3(this,e)}},ff=class{decoders;constructor(e){this.decoders=e}or(e){return J3(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 J3(r,e){return new ff({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var hf=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 uf(e,t,n),this.decoder=new df(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Bs({name:r,prefix:e,encode:t,decode:n}){return new hf(r,e,t,n)}function Yn({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Z3(t,r);return Bs({prefix:e,name:r,encode:n,decode:s=>mn(o(s))})}function lx(r,e,t,n){let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function ux(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;)s+="=";return s}function We({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Bs({prefix:e,name:r,encode(o){return ux(o,n,t)},decode(o){return lx(o,n,t,r)}})}var st=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),e4=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),dx=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),fx=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),hx=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),px=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),mx=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),gx=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),yx=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var mf={};me(mf,{base58btc:()=>ce,base58flickr:()=>wx});var ce=Yn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),wx=Yn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var sr={};me(sr,{Digest:()=>Ho,create:()=>Ar,decode:()=>Ir,equals:()=>yf});var bx=n4,t4=128,Ex=127,xx=~Ex,vx=Math.pow(2,31);function n4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=vx;)e[t++]=r&255|t4,r/=128;for(;r&xx;)e[t++]=r&255|t4,r>>>=7;return e[t]=r|0,n4.bytes=t-n+1,e}var _x=gf,Sx=128,r4=127;function gf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw gf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&r4)<<o:(i&r4)*Math.pow(2,o),o+=7}while(i>=Sx);return gf.bytes=s-n,t}var Rx=Math.pow(2,7),Ax=Math.pow(2,14),Ix=Math.pow(2,21),Dx=Math.pow(2,28),Tx=Math.pow(2,35),kx=Math.pow(2,42),Cx=Math.pow(2,49),Nx=Math.pow(2,56),Ox=Math.pow(2,63),Px=function(r){return r<Rx?1:r<Ax?2:r<Ix?3:r<Dx?4:r<Tx?5:r<kx?6:r<Cx?7:r<Nx?8:r<Ox?9:10},Lx={encode:bx,decode:_x,encodingLength:Px},Bx=Lx,ra=Bx;function na(r,e=0){return[ra.decode(r,e),ra.decode.bytes]}function Ms(r,e,t=0){return ra.encode(r,e,t),e}function Us(r){return ra.encodingLength(r)}function Ar(r,e){let t=e.byteLength,n=Us(r),o=n+Us(t),s=new Uint8Array(o+t);return Ms(r,s,0),Ms(t,s,n),s.set(e,o),new Ho(r,t,e,s)}function Ir(r){let e=mn(r),[t,n]=na(e),[o,s]=na(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ho(t,o,i,e)}function yf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Y3(r.bytes,t.bytes)}}var Ho=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function o4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Ux(t,wf(r),e??ce.encoder);default:return Fx(t,wf(r),e??st.encoder)}}var s4=new WeakMap;function wf(r){let e=s4.get(r);if(e==null){let t=new Map;return s4.set(r,t),t}return e}var oe=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!==oa)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Vx)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=Ar(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&&yf(e.multihash,n.multihash)}toString(e){return o4(this,e)}toJSON(){return{"/":o4(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??i4(n,o,s.bytes))}else if(t[Kx]===!0){let{version:n,multihash:o,code:s}=t,i=Ir(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!==oa)throw new Error(`Version 0 CID must use dag-pb (code: ${oa}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=i4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,oa,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=mn(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 Ho(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,f]=na(e.subarray(t));return t+=f,u},o=n(),s=oa;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,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=Mx(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 wf(s).set(n,e),s}};function Mx(r,e){switch(r[0]){case"Q":{let t=e??ce;return[ce.prefix,t.decode(`${ce.prefix}${r}`)]}case ce.prefix:{let t=e??ce;return[ce.prefix,t.decode(r)]}case st.prefix:{let t=e??st;return[st.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Ux(r,e,t){let{prefix:n}=t;if(n!==ce.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 Fx(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 oa=112,Vx=18;function i4(r,e,t){let n=Us(r),o=n+Us(e),s=new Uint8Array(o+t.byteLength);return Ms(r,s,0),Ms(e,s,n),s.set(t,o),s}var Kx=Symbol.for("@ipld/js-cid/CID");var bf=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 jr(r){let{name:e,metrics:t}=r,n;return t!=null?n=new bf({name:e,metrics:t}):n=new Map,n}var a4=Symbol.for("@libp2p/connection");var Zr=Symbol.for("@libp2p/content-routing");var qo=Symbol.for("@libp2p/peer-discovery");var Ef=Symbol.for("@libp2p/peer-id");function Fs(r){return r!=null&&!!r[Ef]}var Jr=Symbol.for("@libp2p/peer-routing");var c4="keep-alive";var en=Symbol.for("@libp2p/transport");var Xn;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Xn||(Xn={}));var Dr=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},g=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Dc=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var gn="ERR_TIMEOUT";var l4="ERR_NOT_FOUND",Wo="ERR_INVALID_MESSAGE";var Ce=class extends EventTarget{#e=new Map;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 mt(e,t))}},xf=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},mt=globalThis.CustomEvent??xf;var ve=(r,...e)=>{try{[...e]}catch{}};function Tc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Qn(...r){let e=[];for(let t of r)Tc(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 jn(...r){let e=[];for(let t of r)Tc(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 Rf={};me(Rf,{sha256:()=>Re,sha512:()=>Sf});function _f({name:r,code:e,encode:t}){return new vf(r,e,t)}var vf=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ar(this.code,t):t.then(n=>Ar(this.code,n))}else throw Error("Unknown type, must be binary type")}};function d4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Re=_f({name:"sha2-256",code:18,encode:d4("SHA-256")}),Sf=_f({name:"sha2-512",code:19,encode:d4("SHA-512")});var t8=ke(R4(),1);var zt=ke(Df(),1);var kf={};me(kf,{base64:()=>ir,base64pad:()=>hv,base64url:()=>Tf,base64urlpad:()=>pv});var ir=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),hv=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Tf=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),pv=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});zt.default.formatters.b=r=>r==null?"undefined":ce.baseEncode(r);zt.default.formatters.t=r=>r==null?"undefined":st.baseEncode(r);zt.default.formatters.m=r=>r==null?"undefined":ir.baseEncode(r);zt.default.formatters.p=r=>r==null?"undefined":r.toString();zt.default.formatters.c=r=>r==null?"undefined":r.toString();zt.default.formatters.k=r=>r==null?"undefined":r.toString();zt.default.formatters.a=r=>r==null?"undefined":r.toString();function mv(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 Zn(){return{forComponent(r){return Ct(r)}}}function Ct(r){let e=mv(`${r}:trace`);return zt.default.enabled(`${r}:trace`)&&zt.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,zt.default)(`${r}:trace`)),Object.assign((0,zt.default)(r),{error:(0,zt.default)(`${r}:error`),trace:e})}function j(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Go=class{_refCounter;cid;priority;wantType;constructor(e,t,n){this._refCounter=1,this.cid=e,this.priority=t??1,this.wantType=n}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry <key: ${this.cid.toString(ce)}, priority: ${this.priority}, refs: ${this._refCounter}>`}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority&&this.wantType===e.wantType}};var Jn=class{entry;cancel;sendDontHave;constructor(e,t,n,o,s){this.entry=new Go(e,t,n),this.cancel=!!o,this.sendDontHave=!!s}get cid(){return this.entry.cid}set cid(e){this.entry.cid=e}get priority(){return this.entry.priority}set priority(e){this.entry.priority=e}get wantType(){return this.entry.wantType}set wantType(e){this.entry.wantType=e}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(ce)} <cancel: ${this.cancel}, priority: ${this.priority}>`}equals(e){return this.cancel===e.cancel&&this.sendDontHave===e.sendDontHave&&this.wantType===e.wantType&&this.entry.equals(e.entry)}};var ar=(r,e)=>{let t=["bitswap"];return e!=null&&t.push(e),r!=null&&t.push(`${r.toString().slice(0,8)}`),Ct(t.join(":"))};var Nc=(r,e)=>{if(r.size!==e.size)return!1;for(let[t,n]of r){let o=e.get(t);if(o===void 0||n instanceof Uint8Array&&o instanceof Uint8Array&&!j(n,o)||n instanceof Jn&&o instanceof Jn&&!n.equals(o))return!1}return!0};var sa=ke(U4(),1);function Tv(r){let e=new Uint8Array(r.reduce((n,o)=>n+sa.default.encodingLength(o),0)),t=0;for(let n of r)e=sa.encode(n,e,t),t+=sa.default.encodingLength(n);return e}var F4=Tv;function tn(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Ze(r=0){return globalThis.Buffer?.alloc!=null?tn(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function qe(r=0){return globalThis.Buffer?.allocUnsafe!=null?tn(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var kv=Math.pow(2,7),Cv=Math.pow(2,14),Nv=Math.pow(2,21),Of=Math.pow(2,28),Pf=Math.pow(2,35),Lf=Math.pow(2,42),Bf=Math.pow(2,49),De=128,At=127;function Fe(r){if(r<kv)return 1;if(r<Cv)return 2;if(r<Nv)return 3;if(r<Of)return 4;if(r<Pf)return 5;if(r<Lf)return 6;if(r<Bf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Mf(r,e,t=0){switch(Fe(r)){case 8:e[t++]=r&255|De,r/=128;case 7:e[t++]=r&255|De,r/=128;case 6:e[t++]=r&255|De,r/=128;case 5:e[t++]=r&255|De,r/=128;case 4:e[t++]=r&255|De,r>>>=7;case 3:e[t++]=r&255|De,r>>>=7;case 2:e[t++]=r&255|De,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Ov(r,e,t=0){switch(Fe(r)){case 8:e.set(t++,r&255|De),r/=128;case 7:e.set(t++,r&255|De),r/=128;case 6:e.set(t++,r&255|De),r/=128;case 5:e.set(t++,r&255|De),r/=128;case 4:e.set(t++,r&255|De),r>>>=7;case 3:e.set(t++,r&255|De),r>>>=7;case 2:e.set(t++,r&255|De),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Uf(r,e){let t=r[e],n=0;if(n+=t&At,t<De||(t=r[e+1],n+=(t&At)<<7,t<De)||(t=r[e+2],n+=(t&At)<<14,t<De)||(t=r[e+3],n+=(t&At)<<21,t<De)||(t=r[e+4],n+=(t&At)*Of,t<De)||(t=r[e+5],n+=(t&At)*Pf,t<De)||(t=r[e+6],n+=(t&At)*Lf,t<De)||(t=r[e+7],n+=(t&At)*Bf,t<De))return n;throw new RangeError("Could not decode varint")}function Pv(r,e){let t=r.get(e),n=0;if(n+=t&At,t<De||(t=r.get(e+1),n+=(t&At)<<7,t<De)||(t=r.get(e+2),n+=(t&At)<<14,t<De)||(t=r.get(e+3),n+=(t&At)<<21,t<De)||(t=r.get(e+4),n+=(t&At)*Of,t<De)||(t=r.get(e+5),n+=(t&At)*Pf,t<De)||(t=r.get(e+6),n+=(t&At)*Lf,t<De)||(t=r.get(e+7),n+=(t&At)*Bf,t<De))return n;throw new RangeError("Could not decode varint")}function ze(r,e,t=0){return e==null&&(e=qe(Fe(r))),e instanceof Uint8Array?Mf(r,e,t):Ov(r,e,t)}function Gt(r,e=0){return r instanceof Uint8Array?Uf(r,e):Pv(r,e)}var Ff=new Float32Array([-0]),eo=new Uint8Array(Ff.buffer);function V4(r,e,t){Ff[0]=r,e[t]=eo[0],e[t+1]=eo[1],e[t+2]=eo[2],e[t+3]=eo[3]}function K4(r,e){return eo[0]=r[e],eo[1]=r[e+1],eo[2]=r[e+2],eo[3]=r[e+3],Ff[0]}var Vf=new Float64Array([-0]),It=new Uint8Array(Vf.buffer);function $4(r,e,t){Vf[0]=r,e[t]=It[0],e[t+1]=It[1],e[t+2]=It[2],e[t+3]=It[3],e[t+4]=It[4],e[t+5]=It[5],e[t+6]=It[6],e[t+7]=It[7]}function H4(r,e){return It[0]=r[e],It[1]=r[e+1],It[2]=r[e+2],It[3]=r[e+3],It[4]=r[e+4],It[5]=r[e+5],It[6]=r[e+6],It[7]=r[e+7],Vf[0]}var Lv=BigInt(Number.MAX_SAFE_INTEGER),Bv=BigInt(Number.MIN_SAFE_INTEGER),Yt=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 Yo;if(e<Lv&&e>Bv)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>q4&&(o=0n,++n>q4&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Yo;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):Yo}},Yo=new Yt(0,0);Yo.toBigInt=function(){return 0n};Yo.zzEncode=Yo.zzDecode=function(){return this};Yo.length=function(){return 1};var q4=4294967296n;function W4(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 z4(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 Kf(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 Tr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Oc(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var $f=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,Tr(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 Tr(this,4);return Oc(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Tr(this,4);return Oc(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Tr(this,4);let e=K4(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Tr(this,4);let e=H4(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 Tr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return z4(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Tr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Tr(this);while(this.buf[this.pos++]&128);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 Yt(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 Tr(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 Tr(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 Tr(this,8);let e=Oc(this.buf,this.pos+=4),t=Oc(this.buf,this.pos+=4);return new Yt(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=Uf(this.buf,this.pos);return this.pos+=Fe(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 Hf(r){return new $f(r instanceof Uint8Array?r:r.subarray())}function Z(r,e,t){let n=Hf(r);return e.decode(n,void 0,t)}var qf={};me(qf,{base10:()=>Mv});var Mv=Yn({prefix:"9",name:"base10",alphabet:"0123456789"});var Wf={};me(Wf,{base16:()=>Uv,base16upper:()=>Fv});var Uv=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Fv=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var zf={};me(zf,{base2:()=>Vv});var Vv=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Gf={};me(Gf,{base256emoji:()=>Wv});var Y4=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}"),Kv=Y4.reduce((r,e,t)=>(r[t]=e,r),[]),$v=Y4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Hv(r){return r.reduce((e,t)=>(e+=Kv[t],e),"")}function qv(r){let e=[];for(let t of r){let n=$v[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Wv=Bs({prefix:"\u{1F680}",name:"base256emoji",encode:Hv,decode:qv});var Yf={};me(Yf,{base36:()=>to,base36upper:()=>zv});var to=Yn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),zv=Yn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Xf={};me(Xf,{base8:()=>Gv});var Gv=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Qf={};me(Qf,{identity:()=>Yv});var Yv=Bs({prefix:"\0",name:"identity",encode:r=>Q3(r),decode:r=>X3(r)});var UP=new TextEncoder,FP=new TextDecoder;var X4=512;var Pc=85;var Zf={};me(Zf,{identity:()=>cr});var j4=0,Xv="identity",Z4=mn;function Qv(r){return Ar(j4,Z4(r))}var cr={code:j4,name:Xv,encode:Z4,digest:Qv};var lr={...Qf,...zf,...Xf,...qf,...Wf,...pf,...Yf,...mf,...kf,...Gf},jP={...Rf,...Zf};function e8(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var J4=e8("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Jf=e8("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=qe(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),jv={utf8:J4,"utf-8":J4,hex:lr.base16,latin1:Jf,ascii:Jf,binary:Jf,...lr},Lc=jv;function L(r,e="utf8"){let t=Lc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?tn(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function eh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return qe(i);o+i>e&&(n=qe(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var Xo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function th(){}var nh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Zv=eh();function Jv(r){return globalThis.Buffer!=null?qe(r):Zv(r)}var aa=class{len;head;tail;states;constructor(){this.len=0,this.head=new Xo(th,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Xo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new oh((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(Bc,10,Yt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Yt.fromBigInt(e);return this._push(Bc,t.length(),t)}uint64Number(e){return this._push(Mf,Fe(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=Yt.fromBigInt(e).zzEncode();return this._push(Bc,t.length(),t)}sint64Number(e){let t=Yt.fromNumber(e).zzEncode();return this._push(Bc,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(rh,1,e?1:0)}fixed32(e){return this._push(ia,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Yt.fromBigInt(e);return this._push(ia,4,t.lo)._push(ia,4,t.hi)}fixed64Number(e){let t=Yt.fromNumber(e);return this._push(ia,4,t.lo)._push(ia,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(V4,4,e)}double(e){return this._push($4,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(rh,1,0):this.uint32(t)._push(t_,t,e)}string(e){let t=W4(e);return t!==0?this.uint32(t)._push(Kf,t,e):this._push(rh,1,0)}fork(){return this.states=new nh(this),this.head=this.tail=new Xo(th,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 Xo(th,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=Jv(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function rh(r,e,t){e[t]=r&255}function e_(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var oh=class extends Xo{next;constructor(e,t){super(e_,e,t),this.next=void 0}};function Bc(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 ia(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 t_(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(aa.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(r_,e,r),this},aa.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(n_,e,r),this});function r_(r,e,t){e.set(r,t)}function n_(r,e,t){r.length<40?Kf(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(L(r),t)}function sh(){return new aa}function J(r,e){let t=sh();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Hs;(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"})(Hs||(Hs={}));function Mc(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Ve(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 Mc("enum",Hs.VARINT,t,n)}function ee(r,e){return Mc("message",Hs.LENGTH_DELIMITED,r,e)}var ca=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var Lt;(function(r){let e;(function(a){let c;(function(f){f.Block="Block",f.Have="Have"})(c=a.WantType||(a.WantType={}));let l;(function(f){f[f.Block=0]="Block",f[f.Have=1]="Have"})(l||(l={})),function(f){f.codec=()=>Ve(l)}(c=a.WantType||(a.WantType={}));let d;(function(f){let m;f.codec=()=>(m==null&&(m=ee((h,p,y={})=>{y.lengthDelimited!==!1&&p.fork(),h.block!=null&&h.block.byteLength>0&&(p.uint32(10),p.bytes(h.block)),h.priority!=null&&h.priority!==0&&(p.uint32(16),p.int32(h.priority)),h.cancel!=null&&h.cancel!==!1&&(p.uint32(24),p.bool(h.cancel)),h.wantType!=null&&l[h.wantType]!==0&&(p.uint32(32),r.Wantlist.WantType.codec().encode(h.wantType,p)),h.sendDontHave!=null&&h.sendDontHave!==!1&&(p.uint32(40),p.bool(h.sendDontHave)),y.lengthDelimited!==!1&&p.ldelim()},(h,p)=>{let y={block:new Uint8Array(0),priority:0,cancel:!1,wantType:c.Block,sendDontHave:!1},w=p==null?h.len:h.pos+p;for(;h.pos<w;){let E=h.uint32();switch(E>>>3){case 1:y.block=h.bytes();break;case 2:y.priority=h.int32();break;case 3:y.cancel=h.bool();break;case 4:y.wantType=r.Wantlist.WantType.codec().decode(h);break;case 5:y.sendDontHave=h.bool();break;default:h.skipType(E&7);break}}return y})),m),f.encode=h=>J(h,f.codec()),f.decode=h=>Z(h,f.codec())})(d=a.Entry||(a.Entry={}));let u;a.codec=()=>(u==null&&(u=ee((f,m,h={})=>{if(h.lengthDelimited!==!1&&m.fork(),f.entries!=null)for(let p of f.entries)m.uint32(10),r.Wantlist.Entry.codec().encode(p,m);f.full!=null&&f.full!==!1&&(m.uint32(16),m.bool(f.full)),h.lengthDelimited!==!1&&m.ldelim()},(f,m)=>{let h={entries:[],full:!1},p=m==null?f.len:f.pos+m;for(;f.pos<p;){let y=f.uint32();switch(y>>>3){case 1:h.entries.push(r.Wantlist.Entry.codec().decode(f,f.uint32()));break;case 2:h.full=f.bool();break;default:f.skipType(y&7);break}}return h})),u),a.encode=f=>J(f,a.codec()),a.decode=f=>Z(f,a.codec())})(e=r.Wantlist||(r.Wantlist={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=ee((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.prefix!=null&&l.prefix.byteLength>0&&(d.uint32(10),d.bytes(l.prefix)),l.data!=null&&l.data.byteLength>0&&(d.uint32(18),d.bytes(l.data)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={prefix:new Uint8Array(0),data:new Uint8Array(0)},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.prefix=l.bytes();break;case 2:u.data=l.bytes();break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>J(l,a.codec()),a.decode=l=>Z(l,a.codec())})(t=r.Block||(r.Block={}));let n;(function(a){a.Have="Have",a.DontHave="DontHave"})(n=r.BlockPresenceType||(r.BlockPresenceType={}));let o;(function(a){a[a.Have=0]="Have",a[a.DontHave=1]="DontHave"})(o||(o={})),function(a){a.codec=()=>Ve(o)}(n=r.BlockPresenceType||(r.BlockPresenceType={}));let s;(function(a){let c;a.codec=()=>(c==null&&(c=ee((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.cid!=null&&l.cid.byteLength>0&&(d.uint32(10),d.bytes(l.cid)),l.type!=null&&o[l.type]!==0&&(d.uint32(16),r.BlockPresenceType.codec().encode(l.type,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={cid:new Uint8Array(0),type:n.Have},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.cid=l.bytes();break;case 2:u.type=r.BlockPresenceType.codec().decode(l);break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>J(l,a.codec()),a.decode=l=>Z(l,a.codec())})(s=r.BlockPresence||(r.BlockPresence={}));let i;r.codec=()=>(i==null&&(i=ee((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.wantlist!=null&&(c.uint32(10),r.Wantlist.codec().encode(a.wantlist,c)),a.blocks!=null)for(let d of a.blocks)c.uint32(18),c.bytes(d);if(a.payload!=null)for(let d of a.payload)c.uint32(26),r.Block.codec().encode(d,c);if(a.blockPresences!=null)for(let d of a.blockPresences)c.uint32(34),r.BlockPresence.codec().encode(d,c);a.pendingBytes!=null&&a.pendingBytes!==0&&(c.uint32(40),c.int32(a.pendingBytes)),l.lengthDelimited!==!1&&c.ldelim()},(a,c)=>{let l={blocks:[],payload:[],blockPresences:[],pendingBytes:0},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let u=a.uint32();switch(u>>>3){case 1:l.wantlist=r.Wantlist.codec().decode(a,a.uint32());break;case 2:l.blocks.push(a.bytes());break;case 3:l.payload.push(r.Block.codec().decode(a,a.uint32()));break;case 4:l.blockPresences.push(r.BlockPresence.codec().decode(a,a.uint32()));break;case 5:l.pendingBytes=a.int32();break;default:a.skipType(u&7);break}}return l})),i),r.encode=a=>J(a,r.codec()),r.decode=a=>Z(a,r.codec())})(Lt||(Lt={}));var Dt=class r{static Entry=Jn;static WantType={Block:Lt.Wantlist.WantType.Block,Have:Lt.Wantlist.WantType.Have};static BlockPresenceType={Have:Lt.BlockPresenceType.Have,DontHave:Lt.BlockPresenceType.DontHave};static deserialize=async(e,t)=>{let n=Lt.decode(e),o=n.wantlist?.full===!0,s=new r(o);return n.wantlist?.entries.forEach(i=>{if(i.block==null)return;let a=oe.decode(i.block);s.addEntry(a,i.priority??0,i.wantType,!!i.cancel,!!i.sendDontHave)}),n.blockPresences.forEach(i=>{if(i.cid==null)return;let a=oe.decode(i.cid);i.type===r.BlockPresenceType.Have?s.addHave(a):s.addDontHave(a)}),n.blocks.length>0?(await Promise.all(n.blocks.map(async i=>{let a=await Re.digest(i),c=oe.createV0(a);s.addBlock(c,i)})),s):(n.payload.length>0&&(await Promise.all(n.payload.map(async i=>{if(i.prefix==null||i.data==null)return;let a=(0,t8.default)(i.prefix),c=a[0],l=a[1],d=a[2],u=d===Re.code?Re:await t?.getHasher(d);if(u==null)throw new g("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");let f=await u.digest(i.data),m=oe.create(c,l,f);s.addBlock(m,i.data)})),s.setPendingBytes(n.pendingBytes)),s)};static blockPresenceSize=e=>e.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(e,t,n,o,s){n==null&&(n=r.WantType.Block);let i=e.toString(ce),a=this.wantlist.get(i);a!=null?(a.wantType===n&&(a.priority=t),o===!0&&(a.cancel=!!o),s===!0&&(a.sendDontHave=!!s),n===r.WantType.Block&&a.wantType===r.WantType.Have&&(a.wantType=n)):this.wantlist.set(i,new Jn(e,t,n,o,s))}addBlock(e,t){let n=e.toString(ce);this.blocks.set(n,t)}addHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.Have)}addDontHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.DontHave)}cancel(e){let t=e.toString(ce);this.wantlist.delete(t),this.addEntry(e,0,r.WantType.Block,!0,!1)}setPendingBytes(e){this.pendingBytes=e}serializeToBitswap100(){return Lt.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.bytes,priority:Number(e.priority),cancel:!!e.cancel,wantType:Lt.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){let e={wantlist:{entries:Array.from(this.wantlist.values()).map(t=>({block:t.cid.bytes,priority:Number(t.priority),wantType:t.wantType,cancel:!!t.cancel,sendDontHave:!!t.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(let[t,n]of this.blocks.entries()){let o=oe.parse(t),s=o.version,i=o.code,a=o.multihash.code,c=o.multihash.digest.length,l=F4([s,i,a,c]);e.payload.push({prefix:l,data:n})}for(let[t,n]of this.blockPresences)e.blockPresences.push({cid:oe.parse(t).bytes,type:n});return this.pendingBytes>0&&(e.pendingBytes=this.pendingBytes),Lt.encode(e)}equals(e){return!(this.full!==e.full||this.pendingBytes!==e.pendingBytes||!Nc(this.wantlist,e.wantlist)||!Nc(this.blocks,e.blocks)||!Nc(this.blockPresences,e.blockPresences))}get[Symbol.toStringTag](){let e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage <full: ${this.full}, list: ${e}, blocks: ${t}>`}};var r8={Block:Lt.Wantlist.WantType.Block,Have:Lt.Wantlist.WantType.Have},o_=(r,e)=>Array.prototype.slice.call(e,0).sort((t,n)=>{let o=r(t),s=r(n);return o<s?-1:o>s?1:0}),ro=class{static Entry=Go;set;_stats;constructor(e,t){this.set=t!=null?jr({name:"ipfs_bitswap_wantlist",metrics:t.metrics}):new Map,this._stats=e}get length(){return this.set.size}add(e,t,n){let o=e.toString(ce),s=this.set.get(o);s!=null?(s.inc(),s.priority=t,s.wantType===r8.Have&&n===r8.Block&&(s.wantType=n)):(this.set.set(o,new Go(e,t,n)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(e){let t=e.toString(ce),n=this.set.get(t);n!=null&&(n.dec(),!n.hasRefs()&&(this.set.delete(t),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(e){this.set.has(e)&&this.set.delete(e)}forEach(e){this.set.forEach(e)}entries(){return this.set.entries()}sortedEntries(){return new Map(o_(e=>e[1].key,Array.from(this.set.entries())))}contains(e){let t=e.toString(ce);return this.set.has(t)}get(e){let t=e.toString(ce);return this.set.get(t)}};var Uc=class{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(e){this.partner=e,this.wantlist=new ro,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=e}wants(e,t,n){this.wantlist.add(e,t,n)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.get(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}};var la=class extends Map{_cmp;_keys;constructor(e,t){super(),this._cmp=t??this._defaultSort,this._keys=[];for(let[n,o]of e??[])this.set(n,o)}update(e){if(e<0||e>=this._keys.length)return;let t=this._keys[e];this._keys.splice(e,1);let n=this._find(t);this._keys.splice(n,0,t)}set(e,t){if(this.has(e)){let o=this.indexOf(e);this._keys.splice(o,1)}super.set(e,t);let n=this._find(e);return this._keys.splice(n,0,e),this}clear(){super.clear(),this._keys=[]}delete(e){if(!this.has(e))return!1;let t=this.indexOf(e);return this._keys.splice(t,1),super.delete(e)}indexOf(e){if(!this.has(e))return-1;let t=this._find(e);if(this._keys[t]===e)return t;for(let n=1;n<this._keys.length;n++){if(this._keys[t+n]===e)return t+n;if(this._keys[t-n]===e)return t-n}return-1}_find(e){let t=0,n=this._keys.length;for(;t<n;){let o=t+n>>>1,s=this._kCmp(this._keys[o],e);if(s<0)t=o+1;else if(s>0)n=o;else return o}return t}*keys(){for(let e of this._keys)yield e}*values(){for(let e of this._keys)yield this.get(e)}*entries(){for(let e of this._keys)yield[e,this.get(e)]}*[Symbol.iterator](){yield*this.entries()}forEach(e,t=this){if(e!=null)for(let n of this._keys){let o=this.get(n);if(o==null)throw new Error("Value cannot be undefined");e.apply(t,[[n,o]])}}_defaultSort(e,t){return e[0]<t[0]?-1:t[0]<e[0]?1:0}_kCmp(e,t){return this._cmp([e,this.get(e)],[t,this.get(t)])}};var s_={hasNewInfo(){return!1},merge(){}},Fc=class{_taskMerger;_byPeer;constructor(e=s_){this._taskMerger=e,this._byPeer=new la([],Vc.compare)}pushTasks(e,t){let n=this._byPeer.get(e.toString());n==null&&(n=new Vc(e,this._taskMerger)),n.pushTasks(t),this._byPeer.set(e.toString(),n)}popTasks(e){let t=this._head();if(t===void 0)return{tasks:[],pendingSize:0};let{tasks:n,pendingSize:o}=t.popTasks(e);if(n.length===0)return{tasks:n,pendingSize:o};let s=t.peerId;return t.isIdle()?this._byPeer.delete(s.toString()):this._byPeer.update(0),{peerId:s,tasks:n,pendingSize:o}}_head(){if(this._byPeer.size!==0)for(let[,e]of this._byPeer)return e}remove(e,t){this._byPeer.get(t.toString())?.remove(e)}tasksDone(e,t){let n=this._byPeer.get(e.toString());if(n==null)return;let o=this._byPeer.indexOf(e.toString());for(let s of t)n.taskDone(s);this._byPeer.update(o)}},Vc=class{peerId;_taskMerger;_activeTotalSize;_pending;_active;constructor(e,t){this.peerId=e,this._taskMerger=t,this._activeTotalSize=0,this._pending=new ih,this._active=new Set}pushTasks(e){for(let t of e)this._pushTask(t)}_pushTask(e){if(!this._taskHasMoreInfoThanActiveTasks(e))return;let t=this._pending.get(e.topic);if(t!=null){e.priority>t.priority&&this._pending.updatePriority(e.topic,e.priority),this._taskMerger.merge(e,t);return}this._pending.add(e)}_taskHasMoreInfoThanActiveTasks(e){let t=[];for(let n of this._active)n.topic===e.topic&&t.push(n);return t.length===0?!0:this._taskMerger.hasNewInfo(e,t)}popTasks(e){let t=0,n=[],o=this._pending.tasks();for(let s=0;s<o.length&&t<e;s++){let i=o[s];n.push(i),t+=i.size,this._pending.delete(i.topic),this._activeTotalSize+=i.size,this._active.add(i)}return{tasks:n,pendingSize:this._pending.totalSize}}taskDone(e){this._active.has(e)&&(this._activeTotalSize-=e.size,this._active.delete(e))}remove(e){this._pending.delete(e)}isIdle(){return this._pending.length===0&&this._active.size===0}static compare(e,t){return e[1]._pending.length===0?1:t[1]._pending.length===0?-1:e[1]._activeTotalSize===t[1]._activeTotalSize?t[1]._pending.length-e[1]._pending.length:e[1]._activeTotalSize-t[1]._activeTotalSize}},ih=class{_tasks;constructor(){this._tasks=new la([],this._compare)}get length(){return this._tasks.size}get totalSize(){return[...this._tasks.values()].reduce((e,t)=>e+t.task.size,0)}get(e){return this._tasks?.get(e)?.task}add(e){this._tasks.set(e.topic,{created:Date.now(),task:e})}delete(e){this._tasks.delete(e)}tasks(){return[...this._tasks.values()].map(e=>e.task)}updatePriority(e,t){let n=this._tasks.get(e);if(n==null)return;let o=this._tasks.indexOf(e);n.task.priority=t,this._tasks.update(o)}_compare(e,t){return e[1].task.priority===t[1].task.priority?e[1].created-t[1].created:t[1].task.priority-e[1].task.priority}};var n8={hasNewInfo(r,e){let t=!1,n=!1;for(let o of e)o.data.haveBlock&&(t=!0),o.data.isWantBlock&&(n=!0);return!!(!n&&r.data.isWantBlock||!t&&r.data.haveBlock)},merge(r,e){let t=r.data,n=e.data;!n.haveBlock&&t.haveBlock&&(n.haveBlock=t.haveBlock,n.blockSize=t.blockSize),!n.isWantBlock&&t.isWantBlock&&(n.isWantBlock=!0,(!n.haveBlock||t.haveBlock)&&(n.haveBlock=t.haveBlock,e.size=r.size)),n.isWantBlock&&n.haveBlock&&(e.size=n.blockSize)}};var o8=Dt.WantType,i_=16*1024,a_=1024,Kc=class{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(e,t,n,o,s,i={}){this._log=ar(e,"engine"),this.blockstore=t,this.network=n,this._stats=o,this._opts=this._processOpts(i),this.ledgerMap=jr({name:"ipfs_bitswap_ledger_map",metrics:s.metrics}),this._running=!1,this._requestQueue=new Fc(n8)}_processOpts(e){return{maxSizeReplaceHasWithBlock:a_,targetMessageSize:i_,...e}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(e=>{this._log.error("error processing stats",e)})})}async _processTasks(){if(!this._running)return;let{peerId:e,tasks:t,pendingSize:n}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(t.length===0)return;let o=new Dt(!1);o.setPendingBytes(n);let s=[],i=new Map;for(let c of t){let l=oe.parse(c.topic);c.data.haveBlock?c.data.isWantBlock?(s.push(l),i.set(c.topic,c.data)):o.addHave(l):o.addDontHave(l)}let a=await this._getBlocks(s);for(let[c,l]of i){let d=oe.parse(c),u=a.get(c);u!=null?o.addBlock(d,u):l.sendDontHave&&o.addDontHave(d)}if(o.empty){e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks();return}try{e!=null&&await this.network.sendMessage(e,o);for(let[c,l]of a.entries())e!=null&&this.messageSent(e,oe.parse(c),l)}catch(c){this._log.error(c)}e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks()}wantlistForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);return n!=null?n.wantlist.sortedEntries():new Map}ledgerForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return{peer:n.partner,value:n.debtRatio(),sent:n.accounting.bytesSent,recv:n.accounting.bytesRecv,exchanged:n.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.partner)}receivedBlocks(e){if(e.length!==0){for(let t of this.ledgerMap.values())for(let{cid:n,block:o}of e){let s=t.wantlistContains(n);if(s==null)continue;let i=o.length,a=this._sendAsBlock(s.wantType,i),c=i;a||(c=Dt.blockPresenceSize(s.cid)),this._requestQueue.pushTasks(t.partner,[{topic:s.cid.toString(ce),priority:s.priority,size:c,data:{blockSize:i,isWantBlock:a,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(e,t){let n=this._findOrCreate(e);if(t.empty)return;if(t.full&&(n.wantlist=new ro),this._updateBlockAccounting(t.blocks,n),t.wantlist.size===0){this._scheduleProcessTasks();return}let o=[],s=[];t.wantlist.forEach(i=>{i.cancel?(n.cancelWant(i.cid),o.push(i.cid)):(n.wants(i.cid,i.priority,i.wantType),s.push(i))}),this._cancelWants(e,o),await this._addWants(e,s),this._scheduleProcessTasks()}_cancelWants(e,t){for(let n of t)this._requestQueue.remove(n.toString(ce),e)}async _addWants(e,t){let n=await this._getBlockSizes(t.map(s=>s.cid)),o=[];for(let s of t){let i=s.cid.toString(ce),a=n.get(i);if(a==null)s.sendDontHave&&o.push({topic:i,priority:s.priority,size:Dt.blockPresenceSize(s.cid),data:{isWantBlock:s.wantType===o8.Block,blockSize:0,haveBlock:!1,sendDontHave:s.sendDontHave}});else{let c=this._sendAsBlock(s.wantType,a),l=a;c||(l=Dt.blockPresenceSize(s.cid)),o.push({topic:i,priority:s.priority,size:l,data:{isWantBlock:c,blockSize:a,haveBlock:!0,sendDontHave:s.sendDontHave}})}this._requestQueue.pushTasks(e,o)}}_sendAsBlock(e,t){return e===o8.Block||t<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(e){let t=await this._getBlocks(e);return new Map([...t].map(([n,o])=>[n,o.length]))}async _getBlocks(e){let t=new Map;return await Promise.all(e.map(async n=>{try{let o=await this.blockstore.get(n);t.set(n.toString(ce),o)}catch(o){o.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",n,o)}})),t}_updateBlockAccounting(e,t){for(let n of e.values())this._log("got block (%s bytes)",n.length),t.receivedBytes(n.length)}messageSent(e,t,n){let o=this._findOrCreate(e);o.sentBytes(n.length),o.wantlist.remove(t)}numBytesSentTo(e){return this._findOrCreate(e).accounting.bytesSent}numBytesReceivedFrom(e){return this._findOrCreate(e).accounting.bytesRecv}peerDisconnected(e){this.ledgerMap.delete(e.toString())}_findOrCreate(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return n;let o=new Uc(e);return this.ledgerMap.set(t,o),this._stats!=null&&this._stats.push(t,"peerCount",1),o}start(){this._running=!0}stop(){this._running=!1}};function c_(r){return r[Symbol.asyncIterator]!=null}function l_(r){if(c_(r))return(async()=>{for await(let e of r);})();for(let e of r);}var ur=l_;function _e(r,e){if(globalThis.Buffer!=null)return tn(globalThis.Buffer.concat(r,e));e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=qe(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return tn(t)}var i8=Symbol.for("@achingbrain/uint8arraylist");function s8(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 $c(r){return!!r?.[i8]}var de=class r{bufs;length;[i8]=!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($c(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($c(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=s8(this.bufs,e);return t.buf[t.index]}set(e,t){let n=s8(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($c(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 _e(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:_e(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,d=t>a&&t<=c;if(l&&d){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(d){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(!$c(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,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let m=this.get(u+f);if(n[f]!==m){d=Math.max(1,f-a[m]);break}}if(d===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=qe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=qe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!j(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}};function Hc(r){return r[Symbol.asyncIterator]!=null}var qc=r=>{let e=Fe(r),t=qe(e);return ze(r,t),qc.bytes=e,t};qc.bytes=0;function Bt(r,e){e=e??{};let t=e.lengthEncoder??qc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Hc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Bt.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??qc;return new de(t(r.byteLength),r)};var qs=ke(Qo(),1);var d_=8,f_=1024*1024*4,jo;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(jo||(jo={}));var ah=r=>{let e=Gt(r);return ah.bytes=Fe(e),e};ah.bytes=0;function Mt(r,e){let t=new de,n=jo.LENGTH,o=-1,s=e?.lengthDecoder??ah,i=e?.maxLengthLength??d_,a=e?.maxDataLength??f_;function*c(){for(;t.byteLength>0;){if(n===jo.LENGTH)try{if(o=s(t),o<0)throw(0,qs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,qs.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=jo.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,qs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===jo.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=jo.LENGTH}}}return Hc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,qs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,qs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Mt.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 Mt(n,{...e??{},onLength:s=>{t=s}})};function h_(r){return r[Symbol.asyncIterator]!=null}function p_(r,e){if(h_(r))return async function*(){for await(let a of r)yield e(a)}();let t=Ls(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var kr=p_;function se(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var zc=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Ws=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new zc(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 zc(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 ch=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function lt(r={}){return m_(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 m_(r,e){e=e??{};let t=e.onEnd,n=new Ws,o,s,i,a=se(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=E=>{s=null,n.push(E);try{y(r(n))}catch(b){w(b)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=se()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new Ws,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),m=()=>(n=new Ws,f(),{done:!0}),h=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:m,throw:h,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{let w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let E,b;w!=null&&(E=new Promise((S,R)=>{b=()=>{R(new ch)},w.addEventListener("abort",b)}));try{await Promise.race([a.promise,E])}finally{b!=null&&w!=null&&w?.removeEventListener("abort",b)}}},t==null)return o;let p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},o}function g_(r){return r[Symbol.asyncIterator]!=null}function y_(...r){let e=[];for(let t of r)g_(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=lt({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Nt=y_;function Ge(r,...e){if(r==null)throw new Error("Empty pipeline");if(lh(r)){let n=r;r=()=>n.source}else if(u8(r)||l8(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&lh(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)lh(t[n])&&(t[n]=b_(t[n]));return w_(...t)}var w_=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},l8=r=>r?.[Symbol.asyncIterator]!=null,u8=r=>r?.[Symbol.iterator]!=null,lh=r=>r==null?!1:r.sink!=null&&r.source!=null,b_=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=lt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(l8(s))o=async function*(){yield*s,n.end()};else if(u8(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Nt(n,o())}return r.source};function E_(r){return r[Symbol.asyncIterator]!=null}function x_(r,e){return E_(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 no=x_;var Ee=class extends Event{constructor(e,t){super(e),this.detail=t}};var v8=ke(y8(),1);var w8=Math.pow(2,31)-1,b8=1e3,E8=1;var fh="/ipfs/bitswap/1.0.0",hh="/ipfs/bitswap/1.1.0",ph="/ipfs/bitswap/1.2.0",S_=1024,R_=1024,A_=3e4,Yc=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(e,t,n,o={}){this._log=ar(e.peerId,"network"),this._libp2p=e,this._bitswap=t,this._protocols=[fh],o.b100Only!==!0&&(this._protocols.unshift(hh),this._protocols.unshift(ph)),this._stats=n,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=o.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=o.maxInboundStreams??S_,this._maxOutboundStreams=o.maxOutboundStreams??R_,this._incomingStreamTimeout=o.incomingStreamTimeout??A_}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});let e={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(let t of this._protocols)this._registrarIds.push(await this._libp2p.register(t,e));this._libp2p.getConnections().forEach(t=>{this._onPeerConnect(t.remotePeer)})}async stop(){if(this._running=!1,await this._libp2p.unhandle(this._protocols),this._registrarIds!=null){for(let e of this._registrarIds)this._libp2p.unregister(e);this._registrarIds=[]}}_onConnection(e){if(!this._running)return;let{stream:t,connection:n}=e,o=new v8.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new g("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this._incomingStreamTimeout);i.addEventListener("abort",s),await Ge(t,a=>Mt(a),async a=>{for await(let c of a){try{let l=await Dt.deserialize(c.subarray(),this._hashLoader);await this._bitswap._receiveMessage(n.remotePeer,l)}catch(l){this._bitswap._receiveError(l);break}i.removeEventListener("abort",s),i=AbortSignal.timeout(this._incomingStreamTimeout),i.addEventListener("abort",s)}}),await t.close({signal:i})}).catch(s=>{this._log(s),t.abort(s)}).finally(()=>{o.clear()})}_onPeerConnect(e){this._bitswap._onPeerConnected(e)}_onPeerDisconnect(e){this._bitswap._onPeerDisconnected(e)}findProviders(e,t={}){return t.onProgress?.(new Ee("bitswap:network:find-providers",e)),this._libp2p.contentRouting.findProviders(e,t)}async findAndConnect(e,t){await ur(no(kr(this.findProviders(e,t),async n=>this.connectTo(n.id,t).catch(o=>{this._log.error(o)})),3)).catch(n=>{this._log.error(n)})}async provide(e,t={}){t.onProgress?.(new Ee("bitswap:network:provide",e)),await this._libp2p.contentRouting.provide(e,t)}async sendMessage(e,t,n={}){if(!this._running)throw new Error("network isn't running");let o=e.toString();this._log("sendMessage to %s",o,t),n.onProgress?.(new Ee("bitswap:network:send-wantlist",e)),await this._writeMessage(e,t,n),this._updateSentStats(e,t.blocks)}async connectTo(e,t={}){if(!this._running)throw new Error("network isn't running");return t.onProgress?.(new Ee("bitswap:network:dial",e)),this._libp2p.dial(e,t)}_updateSentStats(e,t){let n=e.toString();if(this._stats!=null){for(let o of t.values())this._stats.push(n,"dataSent",o.length);this._stats.push(n,"blocksSent",t.size)}}async _writeMessage(e,t,n={}){let o=await this._libp2p.dialProtocol(e,[ph,hh,fh]);try{let s;switch(o.protocol){case fh:s=t.serializeToBitswap100();break;case hh:case ph:s=t.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${o.protocol}`)}await Ge([s],i=>Bt(i),o),await o.close()}catch(s){n.onProgress?.(new Ee("bitswap:network:send-wantlist:error",{peer:e,error:s})),this._log(s),o.abort(s)}}};var L8=ke(jc(),1);function B(r,e="utf8"){let t=Lc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var O8=r=>`unwant:${B(r.multihash.bytes,"base64")}`,P8=r=>`block:${B(r.multihash.bytes,"base64")}`,Zc=class extends L8.EventEmitter{_log;constructor(e){super(),this.setMaxListeners(b8),this._log=ar(e,"notif")}hasBlock(e,t){let n=P8(e);this._log(n),this.emit(n,t)}async wantBlock(e,t={}){if(e==null)throw new Error("Not a valid cid");let n=P8(e),o=O8(e);return this._log(`wantBlock:${e}`),new Promise((s,i)=>{let a=()=>{this.removeListener(n,c),t.onProgress?.(new Ee("bitswap:want-block:unwant",e)),i(new Error(`Block for ${e} unwanted`))},c=l=>{this.removeListener(o,a),t.onProgress?.(new Ee("bitswap:want-block:block",e)),s(l)};this.once(o,a),this.once(n,c),t.signal?.addEventListener("abort",()=>{this.removeListener(n,c),this.removeListener(o,a),i(new Error(`Want for ${e} aborted`))})})}unwantBlock(e){let t=O8(e);this._log(t),this.emit(t)}};var K8=ke(jc(),1);var F8=ke(jc(),1),gh=ke(U8(),1),ua=class extends F8.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(n=>{this._stats[n]=BigInt(0),this._movingAverages[n]={},this._options.movingAverageIntervals.forEach(o=>{(this._movingAverages[n][o]=(0,gh.default)(o)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){let e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let e;for(;this._queue.length>0;){let t=e=this._queue.shift();t!=null&&this._applyOp(t)}e!=null&&this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){let t=e-this._frequencyLastTime;t>0&&Object.keys(this._stats).forEach(n=>{this._updateFrequencyFor(n,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,n){let o=this._frequencyAccumulators[e]??0;this._frequencyAccumulators[e]=0;let s=o/t*1e3,i=this._movingAverages[e];i==null&&(i=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(a=>{let c=i[a];c==null&&(c=i[a]=(0,gh.default)(a)),c.push(n,s)})}_applyOp(e){let t=e[0],n=e[1];if(typeof n!="number")throw new Error(`invalid increment number: ${n}`);Object.prototype.hasOwnProperty.call(this._stats,t)||(this._stats[t]=BigInt(0)),this._stats[t]=BigInt(this._stats[t])+BigInt(n),this._frequencyAccumulators[t]==null&&(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=n}};var V8={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]},Jc=class extends K8.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(e,t=[],n=V8){super();let o=Object.assign({},V8,n);if(typeof o.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof o.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=t,this._options=o,this._enabled=this._options.enabled,this._global=new ua(t,o),this._global.on("update",s=>this.emit("update",s)),this._peers=jr({name:"ipfs_bitswap_stats_peers",metrics:e.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(let e of this._peers)e[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(e){let t=e.toString();return this._peers.get(t)}push(e,t,n){if(this._enabled&&(this._global.push(t,n),e!=null)){let o=this._peers.get(e);o==null&&(o=new ua(this._initialCounters,this._options),this._peers.set(e,o)),o.push(t,n)}}disconnected(e){let t=e.toString(),n=this._peers.get(t);n!=null&&(n.stop(),this._peers.delete(t))}};var $8=P_;function P_(r,e,t){var n=null,o=null,s=function(){n&&(clearTimeout(n),o=null,n=null)},i=function(){var c=o;s(),c&&c()},a=function(){if(!e)return r.apply(this,arguments);var c=this,l=arguments,d=t&&!n;if(s(),o=function(){r.apply(c,l)},n=setTimeout(function(){if(n=null,!d){var u=o;return o=null,u()}},e),d)return o()};return a.cancel=s,a.flush=i,a}var el=class{peerId;refcnt;network;_entries;_log;constructor(e,t,n){this.peerId=t,this.network=n,this.refcnt=1,this._entries=[],this._log=ar(e,"msgqueue"),this.sendEntries=$8(this.sendEntries.bind(this),E8)}addMessage(e,t={}){e.empty||this.send(e,t)}addEntries(e,t={}){this._entries=this._entries.concat(e),this.sendEntries(t)}sendEntries(e={}){if(this._entries.length===0)return;let t=new Dt(!1);this._entries.forEach(n=>{n.cancel===!0?t.cancel(n.cid):t.addEntry(n.cid,n.priority)}),this._entries=[],this.addMessage(t,e)}async send(e,t={}){try{await this.network.connectTo(this.peerId,t)}catch(n){this._log.error("cant connect to peer %p: %s",this.peerId,n.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,e,t).catch(n=>{this._log.error("send error",n)})}};var tl=class{peers;wantlist;network;_peerId;_log;constructor(e,t,n,o){this.peers=jr({name:"ipfs_bitswap_want_manager_peers",metrics:o.metrics}),this.wantlist=new ro(n,o),this.network=t,this._peerId=e,this._log=ar(e,"want")}_addEntries(e,t,n,o={}){let s=e.map((i,a)=>new Dt.Entry(i,w8-a,Dt.WantType.Block,t));s.forEach(i=>{i.cancel?n===!0?this.wantlist.removeForce(i.cid.toString(ce)):this.wantlist.remove(i.cid):(this._log("adding to wantlist"),this.wantlist.add(i.cid,i.priority))});for(let i of this.peers.values())i.addEntries(s,o)}_startPeerHandler(e){let t=this.peers.get(e.toString());if(t!=null){t.refcnt++;return}t=new el(this._peerId,e,this.network);let n=new Dt(!0);for(let o of this.wantlist.entries())n.addEntry(o[1].cid,o[1].priority);return t.addMessage(n),this.peers.set(e.toString(),t),t}_stopPeerHandler(e){let t=this.peers.get(e.toString());t!=null&&(t.refcnt--,!(t.refcnt>0)&&this.peers.delete(e.toString()))}wantBlocks(e,t={}){this._addEntries(e,!1,!1,t),t.signal?.addEventListener("abort",()=>{this.cancelWants(e)})}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){}stop(){this.peers.forEach(e=>{this.disconnected(e.peerId)})}};var L_={async getHasher(){throw new Error("Not implemented")}},B_={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader:L_,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},M_=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"],rl=class{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(e,t,n={}){this._libp2p=e,this._log=ar(this.peerId),n=Object.assign({},B_,n),this.stats=new Jc(e,M_,{enabled:n.statsEnabled,computeThrottleTimeout:n.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:n.statsComputeThrottleMaxQueueSize}),this.network=new Yc(e,this,this.stats,{hashLoader:n.hashLoader,maxInboundStreams:n.maxInboundStreams,maxOutboundStreams:n.maxOutboundStreams,incomingStreamTimeout:n.incomingStreamTimeout}),this.blockstore=t,this.engine=new Kc(this.peerId,t,this.network,this.stats,e),this.wm=new tl(this.peerId,this.network,this.stats,e),this.notifications=new Zc(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(e,t){try{await this.engine.messageReceived(e,t)}catch{this._log("failed to receive message",t)}if(t.blocks.size===0)return;let n=[];for(let[o,s]of t.blocks.entries()){let i=oe.parse(o);n.push({wasWanted:this.wm.wantlist.contains(i),cid:i,data:s})}this.wm.cancelWants(n.filter(({wasWanted:o})=>o).map(({cid:o})=>o)),await Promise.all(n.map(async({cid:o,wasWanted:s,data:i})=>{await this._handleReceivedBlock(e,o,i,s)}))}async _handleReceivedBlock(e,t,n,o){this._log("received block");let s=await this.blockstore.has(t);this._updateReceiveCounters(e.toString(),t,n,s),o&&await this.put(t,n)}_updateReceiveCounters(e,t,n,o){this.stats.push(e,"blocksReceived",1),this.stats.push(e,"dataReceived",n.length),o&&(this.stats.push(e,"dupBlksReceived",1),this.stats.push(e,"dupDataReceived",n.length))}_receiveError(e){this._log.error("ReceiveError",e)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this.stats.disconnected(e)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(e,t){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async want(e,t={}){let n=async(c,l)=>(this.wm.wantBlocks([c],l),this.notifications.wantBlock(c,l)),o=!1,s=async(c,l)=>{try{return await this.blockstore.get(c,l)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d;return o||(o=!0,this.network.findAndConnect(c,l).catch(u=>{this._log.error(u)})),await n(c,l)}},i=new AbortController,a=ct([i.signal,t.signal]);try{return await Promise.race([this.notifications.wantBlock(e,{...t,signal:a}),s(e,{...t,signal:a})])}finally{i.abort(),a.clear()}}unwant(e){let t=Array.isArray(e)?e:[e];this.wm.unwantBlocks(t),t.forEach(n=>{this.notifications.unwantBlock(n)})}cancelWants(e){this.wm.cancelWants(Array.isArray(e)?e:[e])}async put(e,t,n){await this.blockstore.put(e,t),this.notify(e,t)}async*putMany(e,t){yield*this.blockstore.putMany($o(e,({cid:n,block:o})=>{this.notify(n,o)}),t)}notify(e,t,n={}){this.notifications.hasBlock(e,t),this.engine.receivedBlocks([{cid:e,block:t}]),this.network.provide(e,n).catch(o=>{this._log.error("Failed to provide: %s",o.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}};var H8=(r,e,t={})=>new rl(r,e,t);var yh=class{bitswap;started;constructor(e,t={}){let{libp2p:n,blockstore:o,hashers:s}=e;this.bitswap=H8(n,o,{hashLoader:{getHasher:async i=>{let a;if(typeof i=="string"?a=Object.values(s).find(c=>c.name===i):a=s[i],a!=null)return a;throw new Error(`Could not load hasher for code/name "${i}"`)}},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}announce(e,t,n){this.bitswap.notify(e,t,n)}async retrieve(e,{validateFn:t,...n}={}){return this.bitswap.want(e,n)}};function wh(r={}){return e=>new yh(e,r)}var nl=class{url;#e=0;#t=0;#r=0;#i=0;constructor(e){this.url=e instanceof URL?e:new URL(e)}async getRawBlock(e,t){let n=this.url;if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var ol=class{gateways;log;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(t.gateways??q8).map(n=>new nl(n))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${e} from gateway ${s.url}`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw new AggregateError(o,`unable to fetch raw block for CID ${e} from any gateway`)}};var q8=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function bh(r={}){return e=>new ol(e,r)}var U_=Symbol.for("nodejs.util.inspect.custom"),W8=Object.values(lr).map(r=>r.decoder).reduce((r,e)=>r.or(e),lr.identity.decoder),z8=114,Eh=36,xh=37,da=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ef]=!0;toString(){return this.string==null&&(this.string=ce.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return oe.createV1(z8,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return j(this.multihash.bytes,e);if(typeof e=="string")return ge(e).equals(this);if(e?.multihash?.bytes!=null)return j(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[U_](){return`PeerId(${this.toString()})`}},Zo=class extends da{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Jo=class extends da{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},es=class extends da{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function G8(r){if(r.type==="RSA")return new Zo(r);if(r.type==="Ed25519")return new Jo(r);if(r.type==="secp256k1")return new es(r);throw new g("Not a PeerId","ERR_INVALID_PARAMETERS")}function ge(r,e){if(e=e??W8,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Ir(ce.decode(`z${r}`));return r.startsWith("12D")?new Jo({multihash:t}):r.startsWith("16U")?new es({multihash:t}):new Zo({multihash:t})}return Ye(W8.decode(r))}function Ye(r){try{let e=Ir(r);if(e.code===cr.code){if(e.digest.length===Eh)return new Jo({multihash:e});if(e.digest.length===xh)return new es({multihash:e})}if(e.code===Re.code)return new Zo({multihash:e})}catch{return F_(oe.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function F_(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==z8)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Re.code)return new Zo({multihash:r.multihash});if(e.code===cr.code){if(e.digest.length===Eh)return new Jo({multihash:r.multihash});if(e.digest.length===xh)return new es({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ut(r,e){return r.length===Eh?new Jo({multihash:Ar(cr.code,r),privateKey:e}):r.length===xh?new es({multihash:Ar(cr.code,r),privateKey:e}):new Zo({multihash:await Re.digest(r),publicKey:r,privateKey:e})}var sl=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 d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,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 Y8=45,K_=15,Gs=new sl;function vh(r){if(!(r.length>K_))return Gs.new(r).parseWith(()=>Gs.readIPv4Addr())}function _h(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Y8))return Gs.new(r).parseWith(()=>Gs.readIPv6Addr())}function il(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Y8))return Gs.new(r).parseWith(()=>Gs.readIPAddr())}var cU=parseInt("0xFFFF",16),lU=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Ys(r){return!!vh(r)}function Xs(r){return!!_h(r)}function al(r){return!!il(r)}var j8=Ys,z_=Xs,Sh=function(r){let e=0;if(r=r.toString().trim(),j8(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(z_(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=j8(t[n]),i;s&&(i=Sh(t[n]),t[n]=B(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,B(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let 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++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},Z8=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Qs={},Rh={},Y_=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];Y_.forEach(r=>{let e=X_(...r);Rh[e.code]=e,Qs[e.name]=e});function X_(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function ne(r){if(typeof r=="number"){if(Rh[r]!=null)return Rh[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Qs[r]!=null)return Qs[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var zU=ne("ip4"),GU=ne("ip6"),YU=ne("ipcidr");function Ih(r,e){switch(ne(r).code){case 4:case 41:return j_(e);case 42:return tm(e);case 6:case 273:case 33:case 132:return nm(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return tm(e);case 421:return tS(e);case 444:return rm(e);case 445:return rm(e);case 466:return eS(e);default:return B(e,"base16")}}function Dh(r,e){switch(ne(r).code){case 4:return J8(e);case 41:return J8(e);case 42:return em(e);case 6:case 273:case 33:case 132:return Th(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return em(e);case 421:return Z_(e);case 444:return rS(e);case 445:return nS(e);case 466:return J_(e);default:return L(e,"base16")}}var Ah=Object.values(lr).map(r=>r.decoder),Q_=function(){let r=Ah[0].or(Ah[1]);return Ah.slice(2).forEach(e=>r=r.or(e)),r}();function J8(r){if(!al(r))throw new Error("invalid ip address");return Sh(r)}function j_(r){let e=Z8(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!al(e))throw new Error("invalid ip address");return e}function Th(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function nm(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function em(r){let e=L(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function tm(r){let e=Gt(r);if(r=r.slice(Fe(e)),r.length!==e)throw new Error("inconsistent lengths");return B(r)}function Z_(r){let e;r[0]==="Q"||r[0]==="1"?e=Ir(ce.decode(`z${r}`)).bytes:e=oe.parse(r).multihash.bytes;let t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function J_(r){let e=Q_.decode(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function eS(r){let e=Gt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+B(t,"base64url")}function tS(r){let e=Gt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return B(t,"base58btc")}function rS(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=st.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=Th(n);return _e([t,o],t.length+o.length)}function nS(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=st.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=Th(n);return _e([t,o],t.length+o.length)}function rm(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=B(e,"base32"),o=nm(t);return`${n}:${o}`}function om(r){r=kh(r);let e=[],t=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=ne(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw im("invalid address: "+r);if(a.path===!0){n=kh(o.slice(s).join("/")),e.push([a.code,Dh(a.code,n)]),t.push([a.code,n]);break}let c=Dh(a.code,o[s]);e.push([a.code,c]),t.push([a.code,Ih(a.code,c)])}return{string:sm(t),bytes:Nh(e),tuples:e,stringTuples:t,path:n}}function Ch(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Gt(r,o),i=Fe(s),a=ne(s),c=oS(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw im("Invalid address Uint8Array: "+B(r,"base16"));e.push([s,l]);let d=Ih(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:sm(t),tuples:e,stringTuples:t,path:n}}function sm(r){let e=[];return r.map(t=>{let n=ne(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),kh(e.join("/"))}function Nh(r){return _e(r.map(e=>{let t=ne(e[0]),n=Uint8Array.from(ze(t.code));return e.length>1&&e[1]!=null&&(n=_e([n,e[1]])),n}))}function oS(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Gt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Fe(t)}}function kh(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function im(r){return new Error("Error parsing address: "+r)}var sS=Symbol.for("nodejs.util.inspect.custom"),Oh=Symbol.for("@multiformats/js-multiaddr/multiaddr"),iS=[ne("dns").code,ne("dns4").code,ne("dns6").code,ne("dnsaddr").code],cl=class r{bytes;#e;#t;#r;#i;[Oh]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Ch(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=om(e)}else if(oo(e))t=Ch(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=ne("tcp"),a=ne("udp"),c=ne("ip4"),l=ne("ip6"),d=ne("dns6"),u=ne("ip6zone");for(let[m,h]of this.stringTuples())m===u.code&&(s=`%${h??""}`),iS.includes(m)&&(t=i.name,o=443,n=`${h??""}${s}`,e=m===d.code?6:4),(m===i.code||m===a.code)&&(t=ne(m).name,o=parseInt(h??"")),(m===c.code||m===l.code)&&(t=ne(m).name,n=`${h??""}${s}`,e=m===l.code?6:4);if(e==null||t==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:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},ne(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ne(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(Nh(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Qs.p2p.code&&e.push([n,o]),n===Qs["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?B(ce.decode(`z${n}`),"base58btc"):B(oe.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return j(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=ll.get(t.name);if(n==null)throw new g(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>new r(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[sS](){return`Multiaddr(${this.#e})`}};var ll=new Map;function oo(r){return!!r?.[Oh]}function Q(r){return new cl(r)}async function*ul(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var hu={};me(hu,{Ed25519PrivateKey:()=>Rn,Ed25519PublicKey:()=>is,MAX_RSA_KEY_SIZE:()=>ls,RsaPrivateKey:()=>yo,RsaPublicKey:()=>cs,Secp256k1PrivateKey:()=>fs,Secp256k1PublicKey:()=>ds,generateEphemeralKeyPair:()=>Fm,generateKeyPair:()=>Aa,generateKeyPairFromSeed:()=>aA,importKey:()=>li,keyStretcher:()=>qm,keysPBM:()=>ni,marshalPrivateKey:()=>x0,marshalPublicKey:()=>E0,supportedKeys:()=>On,unmarshalPrivateKey:()=>mr,unmarshalPublicKey:()=>Kr});var e0={};me(e0,{Ed25519PrivateKey:()=>Rn,Ed25519PublicKey:()=>is,generateKeyPair:()=>pR,generateKeyPairFromSeed:()=>Jh,unmarshalEd25519PrivateKey:()=>fR,unmarshalEd25519PublicKey:()=>hR});function Ph(r,e){let t=L(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=_e([new Uint8Array(e-t.length),t])}return t}function dr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function so(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function aS(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Lh(r,...e){if(!aS(r))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function ts(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");so(r.outputLen),so(r.blockLen)}function js(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 am(r,e){Lh(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var dl=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function cm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var rs=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Cr=(r,e)=>r<<32-e|r>>>e,cS=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!cS)throw new Error("Non little-endian hardware is not supported");var lS=async()=>{};async function lm(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await lS(),n+=s)}}function Bh(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Nr(r){if(typeof r=="string"&&(r=Bh(r)),!cm(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function fl(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];if(!cm(o))throw new Error("Uint8Array expected");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 Zs=class{clone(){return this._cloneInto()}},uS={}.toString;function um(r,e){if(e!==void 0&&uS.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function Js(r){let e=n=>r().update(Nr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ns(r=32){if(dl&&typeof dl.getRandomValues=="function")return dl.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function dS(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)}var io=class extends Zs{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=rs(this.buffer)}update(e){js(this);let{view:t,buffer:n,blockLen:o}=this;e=Nr(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=rs(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){js(this),am(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;dS(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=rs(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[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.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var hl=BigInt(4294967295),Mh=BigInt(32);function dm(r,e=!1){return e?{h:Number(r&hl),l:Number(r>>Mh&hl)}:{h:Number(r>>Mh&hl)|0,l:Number(r&hl)|0}}function fS(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=dm(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var hS=(r,e)=>BigInt(r>>>0)<<Mh|BigInt(e>>>0),pS=(r,e,t)=>r>>>t,mS=(r,e,t)=>r<<32-t|e>>>t,gS=(r,e,t)=>r>>>t|e<<32-t,yS=(r,e,t)=>r<<32-t|e>>>t,wS=(r,e,t)=>r<<64-t|e>>>t-32,bS=(r,e,t)=>r>>>t-32|e<<64-t,ES=(r,e)=>e,xS=(r,e)=>r,vS=(r,e,t)=>r<<t|e>>>32-t,_S=(r,e,t)=>e<<t|r>>>32-t,SS=(r,e,t)=>e<<t-32|r>>>64-t,RS=(r,e,t)=>r<<t-32|e>>>64-t;function AS(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var IS=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),DS=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,TS=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),kS=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,CS=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),NS=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var OS={fromBig:dm,split:fS,toBig:hS,shrSH:pS,shrSL:mS,rotrSH:gS,rotrSL:yS,rotrBH:wS,rotrBL:bS,rotr32H:ES,rotr32L:xS,rotlSH:vS,rotlSL:_S,rotlBH:SS,rotlBL:RS,add:AS,add3L:IS,add3H:DS,add4L:TS,add4H:kS,add5H:NS,add5L:CS},fe=OS;var[PS,LS]=fe.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),ao=new Uint32Array(80),co=new Uint32Array(80),Uh=class extends io{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:m,Gl:h,Hh:p,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,y]}set(e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,y){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=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=m|0,this.Gl=h|0,this.Hh=p|0,this.Hl=y|0}process(e,t){for(let b=0;b<16;b++,t+=4)ao[b]=e.getUint32(t),co[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=ao[b-15]|0,R=co[b-15]|0,A=fe.rotrSH(S,R,1)^fe.rotrSH(S,R,8)^fe.shrSH(S,R,7),D=fe.rotrSL(S,R,1)^fe.rotrSL(S,R,8)^fe.shrSL(S,R,7),_=ao[b-2]|0,k=co[b-2]|0,O=fe.rotrSH(_,k,19)^fe.rotrBH(_,k,61)^fe.shrSH(_,k,6),N=fe.rotrSL(_,k,19)^fe.rotrBL(_,k,61)^fe.shrSL(_,k,6),P=fe.add4L(D,N,co[b-7],co[b-16]),F=fe.add4H(P,A,O,ao[b-7],ao[b-16]);ao[b]=F|0,co[b]=P|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:m,Fl:h,Gh:p,Gl:y,Hh:w,Hl:E}=this;for(let b=0;b<80;b++){let S=fe.rotrSH(u,f,14)^fe.rotrSH(u,f,18)^fe.rotrBH(u,f,41),R=fe.rotrSL(u,f,14)^fe.rotrSL(u,f,18)^fe.rotrBL(u,f,41),A=u&m^~u&p,D=f&h^~f&y,_=fe.add5L(E,R,D,LS[b],co[b]),k=fe.add5H(_,w,S,A,PS[b],ao[b]),O=_|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),P=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),F=n&s^n&a^s&a,Y=o&i^o&c^i&c;w=p|0,E=y|0,p=m|0,y=h|0,m=u|0,h=f|0,{h:u,l:f}=fe.add(l|0,d|0,k|0,O|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let I=fe.add3L(O,P,Y);n=fe.add3H(I,k,N,F),o=I|0}({h:n,l:o}=fe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fe.add(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=fe.add(this.Eh|0,this.El|0,u|0,f|0),{h:m,l:h}=fe.add(this.Fh|0,this.Fl|0,m|0,h|0),{h:p,l:y}=fe.add(this.Gh|0,this.Gl|0,p|0,y|0),{h:w,l:E}=fe.add(this.Hh|0,this.Hl|0,w|0,E|0),this.set(n,o,s,i,a,c,l,d,u,f,m,h,p,y,w,E)}roundClean(){ao.fill(0),co.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var lo=Js(()=>new Uh);var ml={};me(ml,{bitGet:()=>$S,bitLen:()=>KS,bitMask:()=>fa,bitSet:()=>HS,bytesToHex:()=>bn,bytesToNumberBE:()=>En,bytesToNumberLE:()=>Pr,concatBytes:()=>vn,createHmacDrbg:()=>Kh,ensureBytes:()=>Be,equalBytes:()=>FS,hexToBytes:()=>os,hexToNumber:()=>Vh,isBytes:()=>Or,numberToBytesBE:()=>uo,numberToBytesLE:()=>xn,numberToHexUnpadded:()=>mm,numberToVarBytesBE:()=>US,utf8ToBytes:()=>VS,validateObject:()=>fr});var pm=BigInt(0),pl=BigInt(1),BS=BigInt(2);function Or(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var MS=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function bn(r){if(!Or(r))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=MS[r[t]];return e}function mm(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function Vh(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var wn={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function fm(r){if(r>=wn._0&&r<=wn._9)return r-wn._0;if(r>=wn._A&&r<=wn._F)return r-(wn._A-10);if(r>=wn._a&&r<=wn._f)return r-(wn._a-10)}function os(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded 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=fm(r.charCodeAt(s)),a=fm(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 En(r){return Vh(bn(r))}function Pr(r){if(!Or(r))throw new Error("Uint8Array expected");return Vh(bn(Uint8Array.from(r).reverse()))}function uo(r,e){return os(r.toString(16).padStart(e*2,"0"))}function xn(r,e){return uo(r,e).reverse()}function US(r){return os(mm(r))}function Be(r,e,t){let n;if(typeof e=="string")try{n=os(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(Or(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} expected ${t} bytes, got ${o}`);return n}function vn(...r){let e=0;for(let o=0;o<r.length;o++){let s=r[o];if(!Or(s))throw new Error("Uint8Array expected");e+=s.length}let t=new Uint8Array(e),n=0;for(let o=0;o<r.length;o++){let s=r[o];t.set(s,n),n+=s.length}return t}function FS(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 VS(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function KS(r){let e;for(e=0;r>pm;r>>=pl,e+=1);return e}function $S(r,e){return r>>BigInt(e)&pl}var HS=(r,e,t)=>r|(t?pl:pm)<<BigInt(e),fa=r=>(BS<<BigInt(r-1))-pl,Fh=r=>new Uint8Array(r),hm=r=>Uint8Array.from(r);function Kh(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=Fh(r),o=Fh(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=Fh())=>{o=a(hm([0]),u),n=a(),u.length!==0&&(o=a(hm([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,f=[];for(;u<e;){n=a();let m=n.slice();f.push(m),u+=n.length}return vn(...f)};return(u,f)=>{i(),c(u);let m;for(;!(m=f(l()));)c();return i(),m}}var qS={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Or(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function fr(r,e,t={}){let n=(o,s,i)=>{let a=qS[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var it=BigInt(0),Ke=BigInt(1),ss=BigInt(2),WS=BigInt(3),$h=BigInt(4),gm=BigInt(5),ym=BigInt(8),zS=BigInt(9),GS=BigInt(16);function Ae(r,e){let t=r%e;return t>=it?t:e+t}function Hh(r,e,t){if(t<=it||e<it)throw new Error("Expected power/modulo > 0");if(t===Ke)return it;let n=Ke;for(;e>it;)e&Ke&&(n=n*r%t),r=r*r%t,e>>=Ke;return n}function Me(r,e,t){let n=r;for(;e-- >it;)n*=n,n%=t;return n}function gl(r,e){if(r===it||e<=it)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Ae(r,e),n=e,o=it,s=Ke,i=Ke,a=it;for(;t!==it;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==Ke)throw new Error("invert: does not exist");return Ae(o,e)}function YS(r){let e=(r-Ke)/ss,t,n,o;for(t=r-Ke,n=0;t%ss===it;t/=ss,n++);for(o=ss;o<r&&Hh(o,e,r)!==r-Ke;o++);if(n===1){let i=(r+Ke)/$h;return function(c,l){let d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}let s=(t+Ke)/ss;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,d=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),f=a.pow(c,t);for(;!a.eql(f,a.ONE);){if(a.eql(f,a.ZERO))return a.ZERO;let m=1;for(let p=a.sqr(f);m<l&&!a.eql(p,a.ONE);m++)p=a.sqr(p);let h=a.pow(d,Ke<<BigInt(l-m-1));d=a.sqr(h),u=a.mul(u,h),f=a.mul(f,d),l=m}return u}}function XS(r){if(r%$h===WS){let e=(r+Ke)/$h;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%ym===gm){let e=(r-gm)/ym;return function(n,o){let s=n.mul(o,ss),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,ss),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%GS,YS(r)}var wm=(r,e)=>(Ae(r,e)&Ke)===Ke,QS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function qh(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=QS.reduce((n,o)=>(n[o]="function",n),e);return fr(r,t)}function jS(r,e,t){if(t<it)throw new Error("Expected power > 0");if(t===it)return r.ONE;if(t===Ke)return e;let n=r.ONE,o=e;for(;t>it;)t&Ke&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Ke;return n}function ZS(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function Wh(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function yl(r,e,t=!1,n={}){if(r<=it)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=Wh(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=XS(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:fa(o),ZERO:it,ONE:Ke,create:c=>Ae(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return it<=c&&c<r},is0:c=>c===it,isOdd:c=>(c&Ke)===Ke,neg:c=>Ae(-c,r),eql:(c,l)=>c===l,sqr:c=>Ae(c*c,r),add:(c,l)=>Ae(c+l,r),sub:(c,l)=>Ae(c-l,r),mul:(c,l)=>Ae(c*l,r),pow:(c,l)=>jS(a,c,l),div:(c,l)=>Ae(c*gl(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>gl(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>ZS(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?xn(c,s):uo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Pr(c):En(c)}});return Object.freeze(a)}function bm(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function Em(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 zh(r){let e=Em(r);return e+Math.ceil(e/2)}function xm(r,e,t=!1){let n=r.length,o=Em(e),s=zh(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?En(r):Pr(r),a=Ae(i,e-Ke)+Ke;return t?xn(a,o):uo(a,o)}var eR=BigInt(0),Gh=BigInt(1);function wl(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>eR;)s&Gh&&(i=i.add(a)),a=a.double(),s>>=Gh;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let f=1;f<a;f++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,d=r.BASE,u=BigInt(2**o-1),f=2**o,m=BigInt(o);for(let h=0;h<a;h++){let p=h*c,y=Number(i&u);i>>=m,y>c&&(y-=f,i+=Gh);let w=p,E=p+Math.abs(y)-1,b=h%2!==0,S=y<0;y===0?d=d.add(t(b,s[w])):l=l.add(t(S,s[E]))}return{p:l,f:d}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function ha(r){return qh(r.Fp),fr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Wh(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Lr=BigInt(0),Xt=BigInt(1),bl=BigInt(2),tR=BigInt(8),rR={zip215:!0};function nR(r){let e=ha(r);return fr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function El(r){let e=nR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=bl<<BigInt(a*8)-Xt,d=t.create,u=e.uvRatio||((T,v)=>{try{return{isValid:!0,value:t.sqrt(T*t.inv(v))}}catch{return{isValid:!1,value:Lr}}}),f=e.adjustScalarBytes||(T=>T),m=e.domain||((T,v,M)=>{if(v.length||M)throw new Error("Contexts/pre-hash are not supported");return T}),h=T=>typeof T=="bigint"&&Lr<T,p=(T,v)=>h(T)&&h(v)&&T<v,y=T=>T===Lr||p(T,l);function w(T,v){if(p(T,v))return T;throw new Error(`Expected valid scalar < ${v}, got ${typeof T} ${T}`)}function E(T){return T===Lr?T:w(T,n)}let b=new Map;function S(T){if(!(T instanceof R))throw new Error("ExtendedPoint expected")}class R{constructor(v,M,V,q){if(this.ex=v,this.ey=M,this.ez=V,this.et=q,!y(v))throw new Error("x required");if(!y(M))throw new Error("y required");if(!y(V))throw new Error("z required");if(!y(q))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(v){if(v instanceof R)throw new Error("extended point not allowed");let{x:M,y:V}=v||{};if(!y(M)||!y(V))throw new Error("invalid affine point");return new R(M,V,Xt,d(M*V))}static normalizeZ(v){let M=t.invertBatch(v.map(V=>V.ez));return v.map((V,q)=>V.toAffine(M[q])).map(R.fromAffine)}_setWindowSize(v){this._WINDOW_SIZE=v,b.delete(this)}assertValidity(){let{a:v,d:M}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:q,ez:re,et:ie}=this,pe=d(V*V),le=d(q*q),ue=d(re*re),Le=d(ue*ue),Te=d(pe*v),ht=d(ue*d(Te+le)),pt=d(Le+d(M*d(pe*le)));if(ht!==pt)throw new Error("bad point: equation left != right (1)");let ot=d(V*q),Rt=d(re*ie);if(ot!==Rt)throw new Error("bad point: equation left != right (2)")}equals(v){S(v);let{ex:M,ey:V,ez:q}=this,{ex:re,ey:ie,ez:pe}=v,le=d(M*pe),ue=d(re*q),Le=d(V*pe),Te=d(ie*q);return le===ue&&Le===Te}is0(){return this.equals(R.ZERO)}negate(){return new R(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:v}=e,{ex:M,ey:V,ez:q}=this,re=d(M*M),ie=d(V*V),pe=d(bl*d(q*q)),le=d(v*re),ue=M+V,Le=d(d(ue*ue)-re-ie),Te=le+ie,ht=Te-pe,pt=le-ie,ot=d(Le*ht),Rt=d(Te*pt),pn=d(Le*pt),Ko=d(ht*Te);return new R(ot,Rt,Ko,pn)}add(v){S(v);let{a:M,d:V}=e,{ex:q,ey:re,ez:ie,et:pe}=this,{ex:le,ey:ue,ez:Le,et:Te}=v;if(M===BigInt(-1)){let F3=d((re-q)*(ue+le)),V3=d((re+q)*(ue-le)),lf=d(V3-F3);if(lf===Lr)return this.double();let K3=d(ie*bl*Te),$3=d(pe*bl*Le),H3=$3+K3,q3=V3+F3,W3=$3-K3,YE=d(H3*lf),XE=d(q3*W3),QE=d(H3*W3),jE=d(lf*q3);return new R(YE,XE,jE,QE)}let ht=d(q*le),pt=d(re*ue),ot=d(pe*V*Te),Rt=d(ie*Le),pn=d((q+re)*(le+ue)-ht-pt),Ko=Rt-ot,ta=Rt+ot,U3=d(pt-M*ht),qE=d(pn*Ko),WE=d(ta*U3),zE=d(pn*U3),GE=d(Ko*ta);return new R(qE,WE,GE,zE)}subtract(v){return this.add(v.negate())}wNAF(v){return _.wNAFCached(this,b,v,R.normalizeZ)}multiply(v){let{p:M,f:V}=this.wNAF(w(v,n));return R.normalizeZ([M,V])[0]}multiplyUnsafe(v){let M=E(v);return M===Lr?D:this.equals(D)||M===Xt?this:this.equals(A)?this.wNAF(M).p:_.unsafeLadder(this,M)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(v){let{ex:M,ey:V,ez:q}=this,re=this.is0();v==null&&(v=re?tR:t.inv(q));let ie=d(M*v),pe=d(V*v),le=d(q*v);if(re)return{x:Lr,y:Xt};if(le!==Xt)throw new Error("invZ was invalid");return{x:ie,y:pe}}clearCofactor(){let{h:v}=e;return v===Xt?this:this.multiplyUnsafe(v)}static fromHex(v,M=!1){let{d:V,a:q}=e,re=t.BYTES;v=Be("pointHex",v,re);let ie=v.slice(),pe=v[re-1];ie[re-1]=pe&-129;let le=Pr(ie);le===Lr||(M?w(le,l):w(le,t.ORDER));let ue=d(le*le),Le=d(ue-Xt),Te=d(V*ue-q),{isValid:ht,value:pt}=u(Le,Te);if(!ht)throw new Error("Point.fromHex: invalid y coordinate");let ot=(pt&Xt)===Xt,Rt=(pe&128)!==0;if(!M&&pt===Lr&&Rt)throw new Error("Point.fromHex: x=0 and x_0=1");return Rt!==ot&&(pt=d(-pt)),R.fromAffine({x:pt,y:le})}static fromPrivateKey(v){return N(v).point}toRawBytes(){let{x:v,y:M}=this.toAffine(),V=xn(M,t.BYTES);return V[V.length-1]|=v&Xt?128:0,V}toHex(){return bn(this.toRawBytes())}}R.BASE=new R(e.Gx,e.Gy,Xt,d(e.Gx*e.Gy)),R.ZERO=new R(Lr,Xt,Xt,Lr);let{BASE:A,ZERO:D}=R,_=wl(R,a*8);function k(T){return Ae(T,n)}function O(T){return k(Pr(T))}function N(T){let v=a;T=Be("private key",T,v);let M=Be("hashed private key",s(T),2*v),V=f(M.slice(0,v)),q=M.slice(v,2*v),re=O(V),ie=A.multiply(re),pe=ie.toRawBytes();return{head:V,prefix:q,scalar:re,point:ie,pointBytes:pe}}function P(T){return N(T).pointBytes}function F(T=new Uint8Array,...v){let M=vn(...v);return O(s(m(M,Be("context",T),!!o)))}function Y(T,v,M={}){T=Be("message",T),o&&(T=o(T));let{prefix:V,scalar:q,pointBytes:re}=N(v),ie=F(M.context,V,T),pe=A.multiply(ie).toRawBytes(),le=F(M.context,pe,re,T),ue=k(ie+le*q);E(ue);let Le=vn(pe,xn(ue,t.BYTES));return Be("result",Le,a*2)}let I=rR;function C(T,v,M,V=I){let{context:q,zip215:re}=V,ie=t.BYTES;T=Be("signature",T,2*ie),v=Be("message",v),o&&(v=o(v));let pe=Pr(T.slice(ie,2*ie)),le,ue,Le;try{le=R.fromHex(M,re),ue=R.fromHex(T.slice(0,ie),re),Le=A.multiplyUnsafe(pe)}catch{return!1}if(!re&&le.isSmallOrder())return!1;let Te=F(q,ue.toRawBytes(),le.toRawBytes(),v);return ue.add(le.multiplyUnsafe(Te)).subtract(Le).clearCofactor().equals(R.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:P,sign:Y,verify:C,ExtendedPoint:R,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(T=8,v=R.BASE){return v._setWindowSize(T),v.multiply(BigInt(3)),v}}}}var pa=BigInt(0),Yh=BigInt(1);function oR(r){return fr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function vm(r){let e=oR(r),{P:t}=e,n=b=>Ae(b,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(b=>b),c=e.powPminus2||(b=>Hh(b,t-BigInt(2),t));function l(b,S,R){let A=n(b*(S-R));return S=n(S-A),R=n(R+A),[S,R]}function d(b){if(typeof b=="bigint"&&pa<=b&&b<t)return b;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function f(b,S){let R=d(b),A=d(S),D=R,_=Yh,k=pa,O=R,N=Yh,P=pa,F;for(let I=BigInt(o-1);I>=pa;I--){let C=A>>I&Yh;P^=C,F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1],P=C;let $=_+k,T=n($*$),v=_-k,M=n(v*v),V=T-M,q=O+N,re=O-N,ie=n(re*$),pe=n(q*v),le=ie+pe,ue=ie-pe;O=n(le*le),N=n(D*n(ue*ue)),_=n(T*M),k=n(V*(T+n(u*V)))}F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1];let Y=c(k);return n(_*Y)}function m(b){return xn(n(b),s)}function h(b){let S=Be("u coordinate",b,s);return i===32&&(S[31]&=127),Pr(S)}function p(b){let S=Be("scalar",b),R=S.length;if(R!==s&&R!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${R}`);return Pr(a(S))}function y(b,S){let R=h(S),A=p(b),D=f(R,A);if(D===pa)throw new Error("Invalid private or public key received");return m(D)}let w=m(e.Gu);function E(b){return y(b,w)}return{scalarMult:y,scalarMultBase:E,getSharedSecret:(b,S)=>y(b,S),getPublicKey:b=>E(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var ma=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),_m=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),jF=BigInt(0),sR=BigInt(1),Xh=BigInt(2),iR=BigInt(5),Sm=BigInt(10),aR=BigInt(20),cR=BigInt(40),Rm=BigInt(80);function Am(r){let e=ma,n=r*r%e*r%e,o=Me(n,Xh,e)*n%e,s=Me(o,sR,e)*r%e,i=Me(s,iR,e)*s%e,a=Me(i,Sm,e)*i%e,c=Me(a,aR,e)*a%e,l=Me(c,cR,e)*c%e,d=Me(l,Rm,e)*l%e,u=Me(d,Rm,e)*l%e,f=Me(u,Sm,e)*i%e;return{pow_p_5_8:Me(f,Xh,e)*r%e,b2:n}}function Im(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function lR(r,e){let t=ma,n=Ae(e*e*e,t),o=Ae(n*n*e,t),s=Am(r*o).pow_p_5_8,i=Ae(r*n*s,t),a=Ae(e*i*i,t),c=i,l=Ae(i*_m,t),d=a===r,u=a===Ae(-r,t),f=a===Ae(-r*_m,t);return d&&(i=c),(u||f)&&(i=l),wm(i,t)&&(i=Ae(-i,t)),{isValid:d||u,value:i}}var _n=yl(ma,void 0,!0),Qh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:_n,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:lo,randomBytes:ns,adjustScalarBytes:Im,uvRatio:lR},ei=El(Qh);function Dm(r,e,t){if(e.length>255)throw new Error("Context is too big");return fl(Bh("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var ZF=El({...Qh,domain:Dm}),JF=El({...Qh,domain:Dm,prehash:lo}),ga=vm({P:ma,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=ma,{pow_p_5_8:t,b2:n}=Am(r);return Ae(Me(t,BigInt(3),e)*n,e)},adjustScalarBytes:Im,randomBytes:ns});var uR=(_n.ORDER+BigInt(3))/BigInt(8),eV=_n.pow(Xh,uR),tV=_n.sqrt(_n.neg(_n.ONE)),rV=(_n.ORDER-BigInt(5))/BigInt(8),nV=BigInt(486662);var oV=bm(_n,_n.neg(BigInt(486664)));var sV=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),iV=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),aV=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),cV=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var lV=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ti=32,Sn=64,xl=32;function Tm(){let r=ei.utils.randomPrivateKey(),e=ei.getPublicKey(r);return{privateKey:Om(r,e),publicKey:e}}function km(r){if(r.length!==xl)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=ei.getPublicKey(e);return{privateKey:Om(e,t),publicKey:t}}function Cm(r,e){let t=r.subarray(0,xl);return ei.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Nm(r,e,t){return ei.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Om(r,e){let t=new Uint8Array(Sn);for(let n=0;n<xl;n++)t[n]=r[n],t[xl+n]=e[n];return t}var $e={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var jh={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function vl(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=$e.get();t*=8;async function c(u,f){let m=a.getRandomValues(new Uint8Array(s)),h=a.getRandomValues(new Uint8Array(n)),p={name:e,iv:h};typeof f=="string"&&(f=L(f));let y;if(f.length===0){y=await a.subtle.importKey("jwk",jh,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",jh,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(p,y,u);return _e([m,p.iv,new Uint8Array(w)])}async function l(u,f){let m=u.subarray(0,s),h=u.subarray(s,s+n),p=u.subarray(s+n),y={name:e,iv:h};typeof f=="string"&&(f=L(f));let w;if(f.length===0)try{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",jh,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(y,w,p);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function ri(r,e){let n=await vl().encrypt(r,e);return ir.encode(n)}var ni={};me(ni,{KeyType:()=>Ue,PrivateKey:()=>Mr,PublicKey:()=>Br});var Ue;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ue||(Ue={}));var Zh;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Zh||(Zh={}));(function(r){r.codec=()=>Ve(Zh)})(Ue||(Ue={}));var Br;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Br||(Br={}));var Mr;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Mr||(Mr={}));var is=class{_key;constructor(e){this._key=oi(e,ti)}verify(e,t){return Nm(this._key,t,e)}marshal(){return this._key}get bytes(){return Br.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}},Rn=class{_key;_publicKey;constructor(e,t){this._key=oi(e,Sn),this._publicKey=oi(t,ti)}sign(e){return Cm(this._key,e)}get public(){return new is(this._publicKey)}marshal(){return this._key}get bytes(){return Mr.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return dr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=cr.digest(this.public.bytes);return ce.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function fR(r){if(r.length>Sn){r=oi(r,Sn+ti);let n=r.subarray(0,Sn),o=r.subarray(Sn,r.length);return new Rn(n,o)}r=oi(r,Sn);let e=r.subarray(0,Sn),t=r.subarray(ti);return new Rn(e,t)}function hR(r){return r=oi(r,ti),new is(r)}async function pR(){let{privateKey:r,publicKey:e}=Tm();return new Rn(r,e)}async function Jh(r){let{privateKey:e,publicKey:t}=km(r);return new Rn(e,t)}function oi(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new g(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Lm={"P-256":256,"P-384":384,"P-521":521},mR=Object.keys(Lm),t0=mR.join(" / ");async function Bm(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${t0}`,"ERR_INVALID_CURVE");let e=await $e.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await $e.get().subtle.importKey("jwk",yR(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await $e.get().subtle.importKey("jwk",Um(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await $e.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Lm[r]);return new Uint8Array(l,0,l.byteLength)},n=await $e.get().subtle.exportKey("jwk",e.publicKey);return{key:gR(n),genSharedKey:t}}var Mm={"P-256":32,"P-384":48,"P-521":66};function gR(r){if(r.crv==null||r.x==null||r.y==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new g(`Unknown curve: ${r.crv}. Must be ${t0}`,"ERR_INVALID_CURVE");let e=Mm[r.crv];return _e([Uint8Array.from([4]),Ph(r.x,e),Ph(r.y,e)],1+e*2)}function Um(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${t0}`,"ERR_INVALID_CURVE");let t=Mm[r];if(!j(e.subarray(0,1),Uint8Array.from([4])))throw new g("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:B(e.subarray(1,t+1),"base64url"),y:B(e.subarray(1+t),"base64url"),ext:!0}}var yR=(r,e)=>({...Um(r,e.public),d:B(e.private,"base64url")});var Fm=Bm;async function Vm(r,e){let t=ir.decode(r);return vl().decrypt(t,e)}var Km={SHA1:20,SHA256:32,SHA512:64};var wR={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},bR=async(r,e)=>{let t=await $e.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function $m(r,e){let t=wR[r],n=await $e.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return bR(n,o)},length:Km[r]}}var Hm={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function qm(r,e,t){let n=Hm[r];if(n==null){let E=Object.keys(Hm).join(" / ");throw new g(`unknown cipher type '${r}'. Must be ${E}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new g("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=L("key expansion"),c=2*(s+o+i),l=await $m(e,t),d=await l.digest(a),u=[],f=0;for(;f<c;){let E=await l.digest(_e([d,a])),b=E.length;f+b>c&&(b=c-f),u.push(E),f+=b,d=await l.digest(d)}let m=c/2,h=_e(u),p=h.subarray(0,m),y=h.subarray(m,c),w=E=>({iv:E.subarray(0,s),cipherKey:E.subarray(s,s+o),macKey:E.subarray(s+o)});return{k1:w(p),k2:w(y)}}var f0={};me(f0,{MAX_RSA_KEY_SIZE:()=>ls,RsaPrivateKey:()=>yo,RsaPublicKey:()=>cs,fromJwk:()=>qR,generateKeyPair:()=>WR,unmarshalRsaPrivateKey:()=>u0,unmarshalRsaPublicKey:()=>HR});function Ut(r){if(isNaN(r)||r<=0)throw new g("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return ns(r)}var go={};me(go,{exportToPem:()=>FR,importFromPem:()=>l0,jwkToPkcs1:()=>LR,jwkToPkix:()=>MR,pkcs1ToJwk:()=>PR,pkixToJwk:()=>BR});var _l=class extends Zs{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ts(e);let n=Nr(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),s.fill(0)}update(e){return js(this),this.iHash.update(e),this}digestInto(e){js(this),Lh(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}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},fo=(r,e,t)=>new _l(r,e).update(t).digest();fo.create=(r,e)=>new _l(r,e);function Wm(r,e,t,n){ts(r);let o=um({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(so(s),so(i),so(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Nr(e),l=Nr(t),d=new Uint8Array(i),u=fo.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function zm(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function Gm(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Wm(r,e,t,n),l,d=new Uint8Array(4),u=rs(d),f=new Uint8Array(a.outputLen);for(let m=1,h=0;h<s;m++,h+=a.outputLen){let p=i.subarray(h,h+a.outputLen);u.setInt32(0,m,!1),(l=c._cloneInto(l)).update(d).digestInto(f),p.set(f.subarray(0,p.length));for(let y=1;y<o;y++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<p.length;w++)p[w]^=f[w]}}return zm(a,c,i,l,f)}async function r0(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Wm(r,e,t,n),d,u=new Uint8Array(4),f=rs(u),m=new Uint8Array(c.outputLen);for(let h=1,p=0;p<s;h++,p+=c.outputLen){let y=a.subarray(p,p+c.outputLen);f.setInt32(0,h,!1),(d=l._cloneInto(d)).update(u).digestInto(m),y.set(m.subarray(0,y.length)),await lm(o-1,i,()=>{c._cloneInto(d).update(m).digestInto(m);for(let w=0;w<y.length;w++)y[w]^=m[w]})}return zm(c,l,a,d,m)}var we=ke(Ym());function as(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function ho(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let d=a-1;d>=0;d--){let u=Math.pow(2,d*e);l[s-d-1]=Math.floor(o/u),o-=l[s-d-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function Al(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function o0(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=as(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,as(s,8)-n}function Xm(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=ho(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=ho(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function Qm(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function Ft(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var tK=Math.log(2);function Il(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function s0(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function kn(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var wa=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return s0(this.items)}},ya=[new Uint8Array([1])],jm="0123456789";var ai="",Fr=new ArrayBuffer(0),i0=new Uint8Array(0),ba="EndOfContent",Jm="OCTET STRING",e6="BIT STRING";function Cn(r){var e;return e=class extends r{constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?we.BufferSourceConverter.toUint8Array(s.valueHex):i0}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!kn(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Fr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:we.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var In=class{constructor({blockLength:e=0,error:t=ai,warnings:n=[],valueBeforeDecode:o=i0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=we.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:we.Convert.ToHex(this.valueBeforeDecodeView)}}};In.NAME="baseBlock";var Tt=class extends In{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Tt.NAME="valueBlock";var Dl=class extends Cn(In){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?we.BufferSourceConverter.toUint8Array(e.valueHex):i0,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Fr}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=ho(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let m=0;m<l.length;m++)f[m]=l[m];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=as(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};Dl.NAME="identificationBlock";var Tl=class extends In{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=as(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=ho(this.length,8);if(o.byteLength>127)return this.error="Too big length",Fr;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};Tl.NAME="lengthBlock";var W={},gt=class extends In{constructor({name:e=ai,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new Dl(o),this.lenBlock=new Tl(o),this.valueBlock=s?new s(o):new Tt(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new wa;t||t6(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?Fr:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():we.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return Qm(t,n)}};gt.NAME="BaseBlock";function t6(r){if(r instanceof W.Constructed)for(let e of r.valueBlock.value)t6(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var kl=class extends gt{constructor({value:e=ai,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};kl.NAME="BaseStringBlock";var Cl=class extends Cn(Tt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Cl.NAME="PrimitiveValueBlock";var r6,Nl=class extends gt{constructor(e={}){super(e,Cl),this.idBlock.isConstructed=!1}};r6=Nl;W.Primitive=r6;Nl.NAME="PRIMITIVE";function TR(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function du(r,e=0,t=r.length){let n=e,o=new gt({},Tt),s=new In;if(!kn(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=gt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=W.EndOfContent;break;case 1:c=W.Boolean;break;case 2:c=W.Integer;break;case 3:c=W.BitString;break;case 4:c=W.OctetString;break;case 5:c=W.Null;break;case 6:c=W.ObjectIdentifier;break;case 10:c=W.Enumerated;break;case 12:c=W.Utf8String;break;case 13:c=W.RelativeObjectIdentifier;break;case 14:c=W.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=W.Sequence;break;case 17:c=W.Set;break;case 18:c=W.NumericString;break;case 19:c=W.PrintableString;break;case 20:c=W.TeletexString;break;case 21:c=W.VideotexString;break;case 22:c=W.IA5String;break;case 23:c=W.UTCTime;break;case 24:c=W.GeneralizedTime;break;case 25:c=W.GraphicString;break;case 26:c=W.VisibleString;break;case 27:c=W.GeneralString;break;case 28:c=W.UniversalString;break;case 29:c=W.CharacterString;break;case 30:c=W.BmpString;break;case 31:c=W.DATE;break;case 32:c=W.TimeOfDay;break;case 33:c=W.DateTime;break;case 34:c=W.Duration;break;default:{let l=o.idBlock.isConstructed?new W.Constructed:new W.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?W.Constructed:W.Primitive}return o=TR(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function ci(r){if(!r.byteLength){let e=new gt({},Tt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return du(we.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function kR(r,e){return r?1:e}var rn=class extends Tt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;kR(this.isIndefiniteForm,n)>0;){let i=du(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===ba)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===ba?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new wa;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Fr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};rn.NAME="ConstructedValueBlock";var n6,po=class extends gt{constructor(e={}){super(e,rn),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
18
18
|
`).map(o=>` ${o}`).join(`
|
|
19
19
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
|
20
20
|
${e.join(`
|
|
21
|
-
`)}`:`${t} :`}};Vg=fs;Z.Constructed=Vg;fs.NAME="CONSTRUCTED";var ef=class extends Wt{fromBER(e,t,n){return t}toBER(e){return ln}};ef.override="EndOfContentValueBlock";var qg,tf=class extends Nt{constructor(e={}){super(e,ef),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};qg=tf;Z.EndOfContent=qg;tf.NAME=sl;var Hg,Ne=class extends Nt{constructor(e={}){super(e,Wt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Hg=Ne;Z.Null=Hg;Ne.NAME="NULL";var rf=class extends vo(Wt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=ke.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);return xo(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,U0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};rf.NAME="BooleanValueBlock";var $g,nf=class extends Nt{constructor(e={}){super(e,rf),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};$g=nf;Z.Boolean=$g;nf.NAME="BOOLEAN";var of=class extends vo(In){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=In.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===sl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Kg)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?In.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};of.NAME="OctetStringValueBlock";var Gg,Se=class r extends Nt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},of),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=Nf(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?fs.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${ke.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return ke.BufferSourceConverter.concat(e)}};Gg=Se;Z.OctetString=Gg;Se.NAME=Kg;var sf=class extends vo(In){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=In.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===sl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Mg)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=Nf(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return In.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return ln;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};sf.NAME="BitStringValueBlock";var Yg,kt=class extends Nt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},sf),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return fs.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};Yg=kt;Z.BitString=Yg;kt.NAME=Mg;var Wg;function LP(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,f=c<i?i:c,u=0;for(let d=f;d>=0;d--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=W1(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=W1(t,s)),s}function Og(r){if(r>=nl.length)for(let e=nl.length;e<=r;e++){let t=new Uint8Array([0]),n=nl[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=W1(t,n)),nl.push(n)}return nl[r]}function OP(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,f=0;for(let u=c;u>=0;u--,f++)switch(l=s[i-f]-a[c-f]-t,!0){case l<0:t=1,s[i-f]=l+10;break;default:t=0,s[i-f]=l}if(t>0)for(let u=i-c+1;u>=0;u--,f++)if(l=s[i-f]-t,l<0)t=1,s[i-f]=l+10;else{t=0,s[i-f]=l;break}return s.slice()}var il=class extends vo(Wt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=U0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Ng(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=OP(Og(n),t),i="-";break;default:t=LP(t,Og(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Lg.charAt(t[c]));return a===!1&&(i+=Lg.charAt(0)),i}};Wg=il;il.NAME="IntegerValueBlock";Object.defineProperty(Wg.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var zg,B=class r extends Nt{constructor(e={}){super(e,il),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return z1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){z1();let t=BigInt(e),n=new ol,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(ke.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${ke.Convert.ToHex(a)}`)+t,f=ke.BufferSourceConverter.toUint8Array(ke.Convert.FromHex(l.toString(16)));f[0]|=128,n.write(f)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};zg=B;Z.Integer=zg;B.NAME="INTEGER";var jg,af=class extends B{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};jg=af;Z.Enumerated=jg;af.NAME="ENUMERATED";var al=class extends vo(Wt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fi(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){z1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=us(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ln;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=ke.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};al.NAME="sidBlock";var cf=class extends Wt{constructor({value:e=va,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new al;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,ln;t.push(o)}return F0(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new al;if(o>Number.MAX_SAFE_INTEGER){z1();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};cf.NAME="ObjectIdentifierValueBlock";var Xg,ae=class extends Nt{constructor(e={}){super(e,cf),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Xg=ae;Z.ObjectIdentifier=Xg;ae.NAME="OBJECT IDENTIFIER";var cl=class extends vo(wo){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fi(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=us(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ln;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=ke.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};cl.NAME="relativeSidBlock";var lf=class extends Wt{constructor({value:e=va,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new cl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,ln;n.push(s)}return F0(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new cl;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};lf.NAME="RelativeObjectIdentifierValueBlock";var Qg,uf=class extends Nt{constructor(e={}){super(e,lf),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Qg=uf;Z.RelativeObjectIdentifier=Qg;uf.NAME="RelativeObjectIdentifier";var Jg,M=class extends fs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Jg=M;Z.Sequence=Jg;M.NAME="SEQUENCE";var Zg,ff=class extends fs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Zg=ff;Z.Set=Zg;ff.NAME="SET";var df=class extends vo(Wt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=va}toJSON(){return{...super.toJSON(),value:this.value}}};df.NAME="StringValueBlock";var hf=class extends df{};hf.NAME="SimpleStringValueBlock";var Jt=class extends Q1{constructor({...e}={}){super(e,hf)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,ke.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Jt.NAME="SIMPLE STRING";var pf=class extends Jt{fromBuffer(e){this.valueBlock.valueHexView=ke.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=ke.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=ke.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(ke.Convert.FromUtf8String(e)),this.valueBlock.value=e}};pf.NAME="Utf8StringValueBlock";var e7,Eo=class extends pf{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};e7=Eo;Z.Utf8String=e7;Eo.NAME="UTF8String";var mf=class extends Jt{fromBuffer(e){this.valueBlock.value=ke.Convert.ToUtf16String(e),this.valueBlock.valueHexView=ke.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(ke.Convert.FromUtf16String(e))}};mf.NAME="BmpStringValueBlock";var t7,yf=class extends mf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};t7=yf;Z.BmpString=t7;yf.NAME="BMPString";var gf=class extends Jt{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=us(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};gf.NAME="UniversalStringValueBlock";var r7,bf=class extends gf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};r7=bf;Z.UniversalString=r7;bf.NAME="UniversalString";var n7,wf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};n7=wf;Z.NumericString=n7;wf.NAME="NumericString";var o7,Ef=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};o7=Ef;Z.PrintableString=o7;Ef.NAME="PrintableString";var s7,xf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};s7=xf;Z.TeletexString=s7;xf.NAME="TeletexString";var i7,vf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};i7=vf;Z.VideotexString=i7;vf.NAME="VideotexString";var a7,_f=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};a7=_f;Z.IA5String=a7;_f.NAME="IA5String";var c7,Sf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};c7=Sf;Z.GraphicString=c7;Sf.NAME="GraphicString";var l7,ll=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};l7=ll;Z.VisibleString=l7;ll.NAME="VisibleString";var u7,Rf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};u7=Rf;Z.GeneralString=u7;Rf.NAME="GeneralString";var f7,Af=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};f7=Af;Z.CharacterString=f7;Af.NAME="CharacterString";var d7,ul=class extends ll{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,ke.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=lr(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=lr(this.month,2),t[2]=lr(this.day,2),t[3]=lr(this.hour,2),t[4]=lr(this.minute,2),t[5]=lr(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};d7=ul;Z.UTCTime=d7;ul.NAME="UTCTime";var h7,If=class extends ul{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,d=n.indexOf("+"),y="";if(d===-1&&(d=n.indexOf("-"),u=-1),d!==-1){if(y=n.substring(d+1),n=n.substring(0,d),y.length!==2&&y.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(y.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,y.length===4){if(p=parseInt(y.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=i.exec(o);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(lr(this.year,4)),t.push(lr(this.month,2)),t.push(lr(this.day,2)),t.push(lr(this.hour,2)),t.push(lr(this.minute,2)),t.push(lr(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(lr(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};h7=If;Z.GeneralizedTime=h7;If.NAME="GeneralizedTime";var p7,kf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};p7=kf;Z.DATE=p7;kf.NAME="DATE";var m7,Tf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};m7=Tf;Z.TimeOfDay=m7;Tf.NAME="TimeOfDay";var y7,Df=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};y7=Df;Z.DateTime=y7;Df.NAME="DateTime";var g7,Pf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};g7=Pf;Z.Duration=g7;Pf.NAME="Duration";var b7,Cf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};b7=Cf;Z.TIME=b7;Cf.NAME="TIME";function KP(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(kn(t[1].toBigInt()),"base64url"),e:v(kn(t[2].toBigInt()),"base64url"),d:v(kn(t[3].toBigInt()),"base64url"),p:v(kn(t[4].toBigInt()),"base64url"),q:v(kn(t[5].toBigInt()),"base64url"),dp:v(kn(t[6].toBigInt()),"base64url"),dq:v(kn(t[7].toBigInt()),"base64url"),qi:v(kn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function MP(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Tn(x(r.n,"base64url"))),B.fromBigInt(Tn(x(r.e,"base64url"))),B.fromBigInt(Tn(x(r.d,"base64url"))),B.fromBigInt(Tn(x(r.p,"base64url"))),B.fromBigInt(Tn(x(r.q,"base64url"))),B.fromBigInt(Tn(x(r.dp,"base64url"))),B.fromBigInt(Tn(x(r.dq,"base64url"))),B.fromBigInt(Tn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function UP(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(kn(t[0].toBigInt()),"base64url"),e:v(kn(t[1].toBigInt()),"base64url")}}function FP(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Tn(x(r.n,"base64url"))),B.fromBigInt(Tn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function kn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Tn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var VP=16,q0=32,H0=1e4;async function qP(r,e){let t=Qt.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=ui(VP),a=await pt(Ye,e,i,{c:H0,dkLen:q0}),c=ui(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:H0}),new B({value:q0}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
-
`)}async function HP(r,e){let t=Qt.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=$P(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=fl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=w7(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=w7(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return $0(n)}function $P(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=fl(s.valueBlock.value[0].getValue()),a=H0,c=q0;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=fl(l.valueBlock.value[1].getValue());return{cipherText:fl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function w7(r){return fl(r.valueBlock.value[2].getValue())}function fl(r){return new Uint8Array(r,0,r.byteLength)}async function E7(r){let e=await Qt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await _7(e);return{privateKey:t[0],publicKey:t[1]}}async function G0(r){let t=[await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await GP(r)],n=await _7({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function x7(r,e){let t=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Qt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function v7(r,e,t){let n=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Qt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function _7(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Qt.get().subtle.exportKey("jwk",r.privateKey),Qt.get().subtle.exportKey("jwk",r.publicKey)])}async function GP(r){return Qt.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Bf(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var hl=8192,dl=class{_key;constructor(e){this._key=e}verify(e,t){return v7(this._key,t,e)}marshal(){return ds.jwkToPkix(this._key)}get bytes(){return An.encode({Type:ht.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}},_a=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ui(16)}sign(e){return x7(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new dl(this._publicKey)}marshal(){return ds.jwkToPkcs1(this._key)}get bytes(){return go.encode({Type:ht.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return ds.exportToPem(this,e);if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function $0(r){let e=ds.pkcs1ToJwk(r);if(Bf(e)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await G0(e);return new _a(t.privateKey,t.publicKey)}function WP(r){let e=ds.pkixToJwk(r);if(Bf(e)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new dl(e)}async function zP(r){if(Bf(r)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await G0(r);return new _a(e.privateKey,e.publicKey)}async function jP(r){if(r>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await E7(r);return new _a(e.privateKey,e.publicKey)}var Q0={};oe(Q0,{Secp256k1PrivateKey:()=>ml,Secp256k1PublicKey:()=>pl,generateKeyPair:()=>uC,unmarshalSecp256k1PrivateKey:()=>cC,unmarshalSecp256k1PublicKey:()=>lC});var XP=(r,e,t)=>r&e^~r&t,QP=(r,e,t)=>r&e^r&t^e&t,JP=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),hs=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ps=new Uint32Array(64),W0=class extends ss{constructor(){super(64,32,8,!1),this.A=hs[0]|0,this.B=hs[1]|0,this.C=hs[2]|0,this.D=hs[3]|0,this.E=hs[4]|0,this.F=hs[5]|0,this.G=hs[6]|0,this.H=hs[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)ps[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let d=ps[u-15],y=ps[u-2],p=nn(d,7)^nn(d,18)^d>>>3,m=nn(y,17)^nn(y,19)^y>>>10;ps[u]=m+ps[u-7]+p+ps[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=nn(a,6)^nn(a,11)^nn(a,25),y=f+d+XP(a,c,l)+JP[u]+ps[u]|0,m=(nn(n,2)^nn(n,13)^nn(n,22))+QP(n,o,s)|0;f=l,l=c,c=a,a=i+y|0,i=s,s=o,o=n,n=y+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(){ps.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ms=ga(()=>new W0);function ZP(r){let e=Jc(r);Nr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:eC,hexToBytes:tC}=O1,hi={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=hi;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:eC(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=hi,t=typeof r=="string"?tC(r):r;if(!sn(t))throw new Error("ui8a expected");let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=hi._parseInt(t.subarray(2)),{d:i,l:a}=hi._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let f=l.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},_o=BigInt(0),Lr=BigInt(1),$j=BigInt(2),S7=BigInt(3),Gj=BigInt(4);function rC(r){let e=ZP(r),{Fp:t}=e,n=e.toBytes||((p,m,g)=>{let b=m.toAffine();return po(Uint8Array.from([4]),t.toBytes(b.x),t.toBytes(b.y))}),o=e.fromBytes||(p=>{let m=p.subarray(1),g=t.fromBytes(m.subarray(0,t.BYTES)),b=t.fromBytes(m.subarray(t.BYTES,2*t.BYTES));return{x:g,y:b}});function s(p){let{a:m,b:g}=e,b=t.sqr(p),E=t.mul(b,p);return t.add(t.add(E,t.mul(p,m)),g)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&_o<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:m,nByteLength:g,wrapPrivateKey:b,n:E}=e;if(m&&typeof p!="bigint"){if(sn(p)&&(p=uo(p)),typeof p!="string"||!m.includes(p.length))throw new Error("Invalid key");p=p.padStart(g*2,"0")}let w;try{w=typeof p=="bigint"?p:fo(We("private key",p,g))}catch{throw new Error(`private key must be ${g} bytes, hex or bigint, not ${typeof p}`)}return b&&(w=Le(w,E)),a(w),w}let l=new Map;function f(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(m,g,b){if(this.px=m,this.py=g,this.pz=b,m==null||!t.isValid(m))throw new Error("x required");if(g==null||!t.isValid(g))throw new Error("y required");if(b==null||!t.isValid(b))throw new Error("z required")}static fromAffine(m){let{x:g,y:b}=m||{};if(!m||!t.isValid(g)||!t.isValid(b))throw new Error("invalid affine point");if(m instanceof u)throw new Error("projective point not allowed");let E=w=>t.eql(w,t.ZERO);return E(g)&&E(b)?u.ZERO:new u(g,b,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(m){let g=t.invertBatch(m.map(b=>b.pz));return m.map((b,E)=>b.toAffine(g[E])).map(u.fromAffine)}static fromHex(m){let g=u.fromAffine(o(We("pointHex",m)));return g.assertValidity(),g}static fromPrivateKey(m){return u.BASE.multiply(c(m))}_setWindowSize(m){this._WINDOW_SIZE=m,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:m,y:g}=this.toAffine();if(!t.isValid(m)||!t.isValid(g))throw new Error("bad point: x or y not FE");let b=t.sqr(g),E=s(m);if(!t.eql(b,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:m}=this.toAffine();if(t.isOdd)return!t.isOdd(m);throw new Error("Field doesn't support isOdd")}equals(m){f(m);let{px:g,py:b,pz:E}=this,{px:w,py:_,pz:I}=m,k=t.eql(t.mul(g,I),t.mul(w,E)),D=t.eql(t.mul(b,I),t.mul(_,E));return k&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:m,b:g}=e,b=t.mul(g,S7),{px:E,py:w,pz:_}=this,I=t.ZERO,k=t.ZERO,D=t.ZERO,A=t.mul(E,E),C=t.mul(w,w),U=t.mul(_,_),L=t.mul(E,w);return L=t.add(L,L),D=t.mul(E,_),D=t.add(D,D),I=t.mul(m,D),k=t.mul(b,U),k=t.add(I,k),I=t.sub(C,k),k=t.add(C,k),k=t.mul(I,k),I=t.mul(L,I),D=t.mul(b,D),U=t.mul(m,U),L=t.sub(A,U),L=t.mul(m,L),L=t.add(L,D),D=t.add(A,A),A=t.add(D,A),A=t.add(A,U),A=t.mul(A,L),k=t.add(k,A),U=t.mul(w,_),U=t.add(U,U),A=t.mul(U,L),I=t.sub(I,A),D=t.mul(U,C),D=t.add(D,D),D=t.add(D,D),new u(I,k,D)}add(m){f(m);let{px:g,py:b,pz:E}=this,{px:w,py:_,pz:I}=m,k=t.ZERO,D=t.ZERO,A=t.ZERO,C=e.a,U=t.mul(e.b,S7),L=t.mul(g,w),F=t.mul(b,_),H=t.mul(E,I),re=t.add(g,b),T=t.add(w,_);re=t.mul(re,T),T=t.add(L,F),re=t.sub(re,T),T=t.add(g,E);let N=t.add(w,I);return T=t.mul(T,N),N=t.add(L,H),T=t.sub(T,N),N=t.add(b,E),k=t.add(_,I),N=t.mul(N,k),k=t.add(F,H),N=t.sub(N,k),A=t.mul(C,T),k=t.mul(U,H),A=t.add(k,A),k=t.sub(F,A),A=t.add(F,A),D=t.mul(k,A),F=t.add(L,L),F=t.add(F,L),H=t.mul(C,H),T=t.mul(U,T),F=t.add(F,H),H=t.sub(L,H),H=t.mul(C,H),T=t.add(T,H),L=t.mul(F,T),D=t.add(D,L),L=t.mul(N,T),k=t.mul(re,k),k=t.sub(k,L),L=t.mul(re,F),A=t.mul(N,A),A=t.add(A,L),new u(k,D,A)}subtract(m){return this.add(m.negate())}is0(){return this.equals(u.ZERO)}wNAF(m){return y.wNAFCached(this,l,m,g=>{let b=t.invertBatch(g.map(E=>E.pz));return g.map((E,w)=>E.toAffine(b[w])).map(u.fromAffine)})}multiplyUnsafe(m){let g=u.ZERO;if(m===_o)return g;if(a(m),m===Lr)return this;let{endo:b}=e;if(!b)return y.unsafeLadder(this,m);let{k1neg:E,k1:w,k2neg:_,k2:I}=b.splitScalar(m),k=g,D=g,A=this;for(;w>_o||I>_o;)w&Lr&&(k=k.add(A)),I&Lr&&(D=D.add(A)),A=A.double(),w>>=Lr,I>>=Lr;return E&&(k=k.negate()),_&&(D=D.negate()),D=new u(t.mul(D.px,b.beta),D.py,D.pz),k.add(D)}multiply(m){a(m);let g=m,b,E,{endo:w}=e;if(w){let{k1neg:_,k1:I,k2neg:k,k2:D}=w.splitScalar(g),{p:A,f:C}=this.wNAF(I),{p:U,f:L}=this.wNAF(D);A=y.constTimeNegate(_,A),U=y.constTimeNegate(k,U),U=new u(t.mul(U.px,w.beta),U.py,U.pz),b=A.add(U),E=C.add(L)}else{let{p:_,f:I}=this.wNAF(g);b=_,E=I}return u.normalizeZ([b,E])[0]}multiplyAndAddUnsafe(m,g,b){let E=u.BASE,w=(I,k)=>k===_o||k===Lr||!I.equals(E)?I.multiplyUnsafe(k):I.multiply(k),_=w(this,g).add(w(m,b));return _.is0()?void 0:_}toAffine(m){let{px:g,py:b,pz:E}=this,w=this.is0();m==null&&(m=w?t.ONE:t.inv(E));let _=t.mul(g,m),I=t.mul(b,m),k=t.mul(E,m);if(w)return{x:t.ZERO,y:t.ZERO};if(!t.eql(k,t.ONE))throw new Error("invZ was invalid");return{x:_,y:I}}isTorsionFree(){let{h:m,isTorsionFree:g}=e;if(m===Lr)return!0;if(g)return g(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:m,clearCofactor:g}=e;return m===Lr?this:g?g(u,this):this.multiplyUnsafe(e.h)}toRawBytes(m=!0){return this.assertValidity(),n(u,this,m)}toHex(m=!0){return uo(this.toRawBytes(m))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let d=e.nBitLength,y=U1(u,e.endo?Math.ceil(d/2):d);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function nC(r){let e=Jc(r);return Nr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function R7(r){let e=nC(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(T){return _o<T&&T<t.ORDER}function a(T){return Le(T,n)}function c(T){return K1(T,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:u,isWithinCurveOrder:d}=rC({...e,toBytes(T,N,Y){let P=N.toAffine(),R=t.toBytes(P.x),V=po;return Y?V(Uint8Array.from([N.hasEvenY()?2:3]),R):V(Uint8Array.from([4]),R,t.toBytes(P.y))},fromBytes(T){let N=T.length,Y=T[0],P=T.subarray(1);if(N===o&&(Y===2||Y===3)){let R=fo(P);if(!i(R))throw new Error("Point is not on curve");let V=u(R),$=t.sqrt(V),j=($&Lr)===Lr;return(Y&1)===1!==j&&($=t.neg($)),{x:R,y:$}}else if(N===s&&Y===4){let R=t.fromBytes(P.subarray(0,t.BYTES)),V=t.fromBytes(P.subarray(t.BYTES,2*t.BYTES));return{x:R,y:V}}else throw new Error(`Point of length ${N} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),y=T=>uo(cs(T,e.nByteLength));function p(T){let N=n>>Lr;return T>N}function m(T){return p(T)?a(-T):T}let g=(T,N,Y)=>fo(T.slice(N,Y));class b{constructor(N,Y,P){this.r=N,this.s=Y,this.recovery=P,this.assertValidity()}static fromCompact(N){let Y=e.nByteLength;return N=We("compactSignature",N,Y*2),new b(g(N,0,Y),g(N,Y,2*Y))}static fromDER(N){let{r:Y,s:P}=hi.toSig(We("DER",N));return new b(Y,P)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(N){return new b(this.r,this.s,N)}recoverPublicKey(N){let{r:Y,s:P,recovery:R}=this,V=D(We("msgHash",N));if(R==null||![0,1,2,3].includes(R))throw new Error("recovery id invalid");let $=R===2||R===3?Y+e.n:Y;if($>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let j=R&1?"03":"02",ue=l.fromHex(j+y($)),pe=c($),_e=a(-V*pe),ye=a(P*pe),ge=l.BASE.multiplyAndAddUnsafe(ue,_e,ye);if(!ge)throw new Error("point at infinify");return ge.assertValidity(),ge}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new b(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return ai(this.toDERHex())}toDERHex(){return hi.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ai(this.toCompactHex())}toCompactHex(){return y(this.r)+y(this.s)}}let E={isValidPrivateKey(T){try{return f(T),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let T=D0(e.n);return pg(e.randomBytes(T),e.n)},precompute(T=8,N=l.BASE){return N._setWindowSize(T),N.multiply(BigInt(3)),N}};function w(T,N=!0){return l.fromPrivateKey(T).toRawBytes(N)}function _(T){let N=sn(T),Y=typeof T=="string",P=(N||Y)&&T.length;return N?P===o||P===s:Y?P===2*o||P===2*s:T instanceof l}function I(T,N,Y=!0){if(_(T))throw new Error("first arg must be private key");if(!_(N))throw new Error("second arg must be public key");return l.fromHex(N).multiply(f(T)).toRawBytes(Y)}let k=e.bits2int||function(T){let N=fo(T),Y=T.length*8-e.nBitLength;return Y>0?N>>BigInt(Y):N},D=e.bits2int_modN||function(T){return a(k(T))},A=Qc(e.nBitLength);function C(T){if(typeof T!="bigint")throw new Error("bigint expected");if(!(_o<=T&&T<A))throw new Error(`bigint expected < 2^${e.nBitLength}`);return cs(T,e.nByteLength)}function U(T,N,Y=L){if(["recovered","canonical"].some(Me=>Me in Y))throw new Error("sign() legacy options not supported");let{hash:P,randomBytes:R}=e,{lowS:V,prehash:$,extraEntropy:j}=Y;V==null&&(V=!0),T=We("msgHash",T),$&&(T=We("prehashed msgHash",P(T)));let ue=D(T),pe=f(N),_e=[C(pe),C(ue)];if(j!=null){let Me=j===!0?R(t.BYTES):j;_e.push(We("extraEntropy",Me))}let ye=po(..._e),ge=ue;function $e(Me){let Dt=k(Me);if(!d(Dt))return;let Pt=c(Dt),xt=l.BASE.multiply(Dt).toAffine(),Ht=a(xt.x);if(Ht===_o)return;let so=a(Pt*a(ge+Ht*pe));if(so===_o)return;let Gs=(xt.x===Ht?0:2)|Number(xt.y&Lr),Uc=so;return V&&p(so)&&(Uc=m(so),Gs^=1),new b(Ht,Uc,Gs)}return{seed:ye,k2sig:$e}}let L={lowS:e.lowS,prehash:!1},F={lowS:e.lowS,prehash:!1};function H(T,N,Y=L){let{seed:P,k2sig:R}=U(T,N,Y),V=e;return R0(V.hash.outputLen,V.nByteLength,V.hmac)(P,R)}l.BASE._setWindowSize(8);function re(T,N,Y,P=F){let R=T;if(N=We("msgHash",N),Y=We("publicKey",Y),"strict"in P)throw new Error("options.strict was renamed to lowS");let{lowS:V,prehash:$}=P,j,ue;try{if(typeof R=="string"||sn(R))try{j=b.fromDER(R)}catch(xt){if(!(xt instanceof hi.Err))throw xt;j=b.fromCompact(R)}else if(typeof R=="object"&&typeof R.r=="bigint"&&typeof R.s=="bigint"){let{r:xt,s:Ht}=R;j=new b(xt,Ht)}else throw new Error("PARSE");ue=l.fromHex(Y)}catch(xt){if(xt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(V&&j.hasHighS())return!1;$&&(N=e.hash(N));let{r:pe,s:_e}=j,ye=D(N),ge=c(_e),$e=a(ye*ge),Me=a(pe*ge),Dt=l.BASE.multiplyAndAddUnsafe(ue,$e,Me)?.toAffine();return Dt?a(Dt.x)===pe:!1}return{CURVE:e,getPublicKey:w,getSharedSecret:I,sign:H,verify:re,ProjectivePoint:l,Signature:b,utils:E}}function oC(r){return{hash:r,hmac:(e,...t)=>ls(r,e,N1(...t)),randomBytes:dt}}function A7(r,e){let t=n=>R7({...r,...oC(n)});return Object.freeze({...t(e),create:t})}var T7=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),I7=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),sC=BigInt(1),z0=BigInt(2),k7=(r,e)=>(r+e/z0)/e;function iC(r){let e=T7,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=ze(f,t,e)*f%e,d=ze(u,t,e)*f%e,y=ze(d,z0,e)*l%e,p=ze(y,o,e)*y%e,m=ze(p,s,e)*p%e,g=ze(m,a,e)*m%e,b=ze(g,c,e)*g%e,E=ze(b,a,e)*m%e,w=ze(E,t,e)*f%e,_=ze(w,i,e)*p%e,I=ze(_,n,e)*l%e,k=ze(I,z0,e);if(!j0.eql(j0.sqr(k),r))throw new Error("Cannot find square root");return k}var j0=M1(T7,void 0,void 0,{sqrt:iC}),W=A7({a:BigInt(0),b:BigInt(7),Fp:j0,n:I7,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=I7,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-sC*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=k7(s*r,e),c=k7(-n*r,e),l=Le(r-a*t-c*o,e),f=Le(-a*n-c*s,e),u=l>i,d=f>i;if(u&&(l=e-l),d&&(f=e-f),l>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:d,k2:f}}}},ms),eX=BigInt(0);var tX=W.ProjectivePoint;function D7(){return W.utils.randomPrivateKey()}function P7(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Cr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function C7(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Cr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function N7(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function B7(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function X0(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function L7(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var pl=class{_key;constructor(e){X0(e),this._key=e}verify(e,t){return C7(this._key,t,e)}marshal(){return N7(this._key)}get bytes(){return An.encode({Type:ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Cr(e)?{bytes:t}=await e:t=e.bytes,t}},ml=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??L7(e),B7(this._key),X0(this._publicKey)}sign(e){return P7(this._key,e)}get public(){return new pl(this._publicKey)}marshal(){return this._key}get bytes(){return go.encode({Type:ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function cC(r){return new ml(r)}function lC(r){return new pl(r)}async function uC(){let r=D7();return new ml(r)}var Lf={rsa:Y0,ed25519:K0,secp256k1:Q0};function fC(r){let e=Object.keys(Lf).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function J0(r){let e=An.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case ht.RSA:return Lf.rsa.unmarshalRsaPublicKey(t);case ht.Ed25519:return Lf.ed25519.unmarshalEd25519PublicKey(t);case ht.Secp256k1:return Lf.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw fC(e.Type??"unknown")}}var GC=Ue(ei(),1);var So="/",O7=new TextEncoder().encode(So),Of=O7[0],qe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=x(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]!==Of)throw new Error("Invalid key")}toString(e="utf8"){return v(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(So))}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=O7),this._buf[0]!==Of){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Of,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Of;)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(So).slice(1)}type(){return dC(this.baseNamespace())}name(){return hC(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(So)||(e+=So),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(So):new r(e.slice(0,-1).join(So))}child(e){return this.toString()===So?e:e.toString()===So?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(),...pC(e.map(t=>t.namespaces()))])}};function dC(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function hC(r){let e=r.split(":");return e[e.length-1]}function pC(r){return[].concat(...r)}var YC=Ue(Kf(),1);var K7="ERR_IPNS_EXPIRED_RECORD",Mf="ERR_UNRECOGNIZED_VALIDITY";var Ro="ERR_SIGNATURE_VERIFICATION";var em="ERR_UNDEFINED_PARAMETER",M7="ERR_INVALID_RECORD_DATA",U7="ERR_INVALID_VALUE",F7="ERR_INVALID_EMBEDDED_KEY";var V7="ERR_RECORD_TOO_LARGE";var ur;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(ur||(ur={}));var mC=["string","number","bigint","symbol"],yC=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function H7(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(mC.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(gC(r))return"Buffer";let t=bC(r);return t||"Object"}function gC(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function bC(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(yC.includes(e))return e}var S=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};S.uint=new S(0,"uint",!0);S.negint=new S(1,"negint",!0);S.bytes=new S(2,"bytes",!0);S.string=new S(3,"string",!0);S.array=new S(4,"array",!1);S.map=new S(5,"map",!1);S.tag=new S(6,"tag",!1);S.float=new S(7,"float",!0);S.false=new S(7,"false",!0);S.true=new S(7,"true",!0);S.null=new S(7,"null",!0);S.undefined=new S(7,"undefined",!0);S.break=new S(7,"break",!0);var q=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Sa=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",wC=new TextDecoder,EC=new TextEncoder;function Uf(r){return Sa&&globalThis.Buffer.isBuffer(r)}function yl(r){return r instanceof Uint8Array?Uf(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var W7=Sa?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):G7(r,e,t):(r,e,t)=>t-e>64?wC.decode(r.subarray(e,t)):G7(r,e,t),Ff=Sa?r=>r.length>64?globalThis.Buffer.from(r):$7(r):r=>r.length>64?EC.encode(r):$7(r),Dn=r=>Uint8Array.from(r),Ra=Sa?(r,e,t)=>Uf(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),z7=Sa?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),yl(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},j7=Sa?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function X7(r,e){if(Uf(r)&&Uf(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function $7(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),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 e}function G7(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,f;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(f=(o&31)<<6|a&63,f>127&&(s=f));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(f=(o&15)<<12|(a&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(f=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,f>65535&&f<1114112&&(s=f))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return tm(n)}var Y7=4096;function tm(r){let e=r.length;if(e<=Y7)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=Y7));return t}var xC=256,gl=class{constructor(e=xC){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=j7(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Ra(n,0,this.cursor)}else t=z7(this.chunks,this.cursor);return e&&this.reset(),t}};var ne="CBOR decode error:",Aa="CBOR encode error:",bl=[];bl[23]=1;bl[24]=2;bl[25]=3;bl[26]=5;bl[27]=9;function Ao(r,e,t){if(r.length-e<t)throw new Error(`${ne} not enough data for type`)}var Tt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function wr(r,e,t){Ao(r,e,1);let n=r[e];if(t.strict===!0&&n<Tt[0])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function Er(r,e,t){Ao(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Tt[1])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function xr(r,e,t){Ao(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Tt[2])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function vr(r,e,t){Ao(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<Tt[3])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${ne} integers outside of the safe integer range are not supported`)}function Q7(r,e,t,n){return new q(S.uint,wr(r,e+1,n),2)}function J7(r,e,t,n){return new q(S.uint,Er(r,e+1,n),3)}function Z7(r,e,t,n){return new q(S.uint,xr(r,e+1,n),5)}function e9(r,e,t,n){return new q(S.uint,vr(r,e+1,n),9)}function Or(r,e){return Bt(r,0,e.value)}function Bt(r,e,t){if(t<Tt[0]){let n=Number(t);r.push([e|n])}else if(t<Tt[1]){let n=Number(t);r.push([e|24,n])}else if(t<Tt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Tt[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<Tt[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${ne} encountered BigInt larger than allowable range`)}}Or.encodedSize=function(e){return Bt.encodedSize(e.value)};Bt.encodedSize=function(e){return e<Tt[0]?1:e<Tt[1]?2:e<Tt[2]?3:e<Tt[3]?5:9};Or.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function t9(r,e,t,n){return new q(S.negint,-1-wr(r,e+1,n),2)}function r9(r,e,t,n){return new q(S.negint,-1-Er(r,e+1,n),3)}function n9(r,e,t,n){return new q(S.negint,-1-xr(r,e+1,n),5)}var rm=BigInt(-1),o9=BigInt(1);function s9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new q(S.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${ne} integers outside of the safe integer range are not supported`);return new q(S.negint,rm-BigInt(o),9)}function Vf(r,e){let t=e.value,n=typeof t=="bigint"?t*rm-o9:t*-1-1;Bt(r,e.type.majorEncoded,n)}Vf.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*rm-o9:t*-1-1;return n<Tt[0]?1:n<Tt[1]?2:n<Tt[2]?3:n<Tt[3]?5:9};Vf.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function wl(r,e,t,n){Ao(r,e,t+n);let o=Ra(r,e+t,e+t+n);return new q(S.bytes,o,t+n)}function i9(r,e,t,n){return wl(r,e,1,t)}function a9(r,e,t,n){return wl(r,e,2,wr(r,e+1,n))}function c9(r,e,t,n){return wl(r,e,3,Er(r,e+1,n))}function l9(r,e,t,n){return wl(r,e,5,xr(r,e+1,n))}function u9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer bytes lengths not supported`);return wl(r,e,9,o)}function qf(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===S.string?Ff(r.value):r.value),r.encodedBytes}function Ia(r,e){let t=qf(e);Bt(r,e.type.majorEncoded,t.length),r.push(t)}Ia.encodedSize=function(e){let t=qf(e);return Bt.encodedSize(t.length)+t.length};Ia.compareTokens=function(e,t){return _C(qf(e),qf(t))};function _C(r,e){return r.length<e.length?-1:r.length>e.length?1:X7(r,e)}function El(r,e,t,n,o){let s=t+n;Ao(r,e,s);let i=new q(S.string,W7(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=Ra(r,e+t,e+s)),i}function f9(r,e,t,n){return El(r,e,1,t,n)}function d9(r,e,t,n){return El(r,e,2,wr(r,e+1,n),n)}function h9(r,e,t,n){return El(r,e,3,Er(r,e+1,n),n)}function p9(r,e,t,n){return El(r,e,5,xr(r,e+1,n),n)}function m9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer string lengths not supported`);return El(r,e,9,o,n)}var y9=Ia;function ka(r,e,t,n){return new q(S.array,n,t)}function g9(r,e,t,n){return ka(r,e,1,t)}function b9(r,e,t,n){return ka(r,e,2,wr(r,e+1,n))}function w9(r,e,t,n){return ka(r,e,3,Er(r,e+1,n))}function E9(r,e,t,n){return ka(r,e,5,xr(r,e+1,n))}function x9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer array lengths not supported`);return ka(r,e,9,o)}function v9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return ka(r,e,1,1/0)}function Hf(r,e){Bt(r,S.array.majorEncoded,e.value)}Hf.compareTokens=Or.compareTokens;Hf.encodedSize=function(e){return Bt.encodedSize(e.value)};function Ta(r,e,t,n){return new q(S.map,n,t)}function _9(r,e,t,n){return Ta(r,e,1,t)}function S9(r,e,t,n){return Ta(r,e,2,wr(r,e+1,n))}function R9(r,e,t,n){return Ta(r,e,3,Er(r,e+1,n))}function A9(r,e,t,n){return Ta(r,e,5,xr(r,e+1,n))}function I9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer map lengths not supported`);return Ta(r,e,9,o)}function k9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return Ta(r,e,1,1/0)}function $f(r,e){Bt(r,S.map.majorEncoded,e.value)}$f.compareTokens=Or.compareTokens;$f.encodedSize=function(e){return Bt.encodedSize(e.value)};function T9(r,e,t,n){return new q(S.tag,t,1)}function D9(r,e,t,n){return new q(S.tag,wr(r,e+1,n),2)}function P9(r,e,t,n){return new q(S.tag,Er(r,e+1,n),3)}function C9(r,e,t,n){return new q(S.tag,xr(r,e+1,n),5)}function N9(r,e,t,n){return new q(S.tag,vr(r,e+1,n),9)}function Gf(r,e){Bt(r,S.tag.majorEncoded,e.value)}Gf.compareTokens=Or.compareTokens;Gf.encodedSize=function(e){return Bt.encodedSize(e.value)};var TC=20,DC=21,PC=22,CC=23;function B9(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${ne} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new q(S.null,null,1):new q(S.undefined,void 0,1)}function L9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return new q(S.break,void 0,1)}function nm(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${ne} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${ne} Infinity values are not supported`)}return new q(S.float,r,e)}function O9(r,e,t,n){return nm(om(r,e+1),3,n)}function K9(r,e,t,n){return nm(sm(r,e+1),5,n)}function M9(r,e,t,n){return nm(q9(r,e+1),9,n)}function Yf(r,e,t){let n=e.value;if(n===!1)r.push([S.float.majorEncoded|TC]);else if(n===!0)r.push([S.float.majorEncoded|DC]);else if(n===null)r.push([S.float.majorEncoded|PC]);else if(n===void 0)r.push([S.float.majorEncoded|CC]);else{let o,s=!1;(!t||t.float64!==!0)&&(F9(n),o=om(un,1),n===o||Number.isNaN(n)?(un[0]=249,r.push(un.slice(0,3)),s=!0):(V9(n),o=sm(un,1),n===o&&(un[0]=250,r.push(un.slice(0,5)),s=!0))),s||(NC(n),o=q9(un,1),un[0]=251,r.push(un.slice(0,9)))}}Yf.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){F9(n);let o=om(un,1);if(n===o||Number.isNaN(n))return 3;if(V9(n),o=sm(un,1),n===o)return 5}return 9};var U9=new ArrayBuffer(9),Kr=new DataView(U9,1),un=new Uint8Array(U9,0);function F9(r){if(r===1/0)Kr.setUint16(0,31744,!1);else if(r===-1/0)Kr.setUint16(0,64512,!1);else if(Number.isNaN(r))Kr.setUint16(0,32256,!1);else{Kr.setFloat32(0,r);let e=Kr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Kr.setUint16(0,31744,!1);else if(t===0)Kr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?Kr.setUint16(0,0):o<-14?Kr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):Kr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function om(r,e){if(r.length-e<2)throw new Error(`${ne} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function V9(r){Kr.setFloat32(0,r,!1)}function sm(r,e){if(r.length-e<4)throw new Error(`${ne} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function NC(r){Kr.setFloat64(0,r,!1)}function q9(r,e){if(r.length-e<8)throw new Error(`${ne} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Yf.compareTokens=Or.compareTokens;function Be(r,e,t){throw new Error(`${ne} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Wf(r){return()=>{throw new Error(`${ne} ${r}`)}}var G=[];for(let r=0;r<=23;r++)G[r]=Be;G[24]=Q7;G[25]=J7;G[26]=Z7;G[27]=e9;G[28]=Be;G[29]=Be;G[30]=Be;G[31]=Be;for(let r=32;r<=55;r++)G[r]=Be;G[56]=t9;G[57]=r9;G[58]=n9;G[59]=s9;G[60]=Be;G[61]=Be;G[62]=Be;G[63]=Be;for(let r=64;r<=87;r++)G[r]=i9;G[88]=a9;G[89]=c9;G[90]=l9;G[91]=u9;G[92]=Be;G[93]=Be;G[94]=Be;G[95]=Wf("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)G[r]=f9;G[120]=d9;G[121]=h9;G[122]=p9;G[123]=m9;G[124]=Be;G[125]=Be;G[126]=Be;G[127]=Wf("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)G[r]=g9;G[152]=b9;G[153]=w9;G[154]=E9;G[155]=x9;G[156]=Be;G[157]=Be;G[158]=Be;G[159]=v9;for(let r=160;r<=183;r++)G[r]=_9;G[184]=S9;G[185]=R9;G[186]=A9;G[187]=I9;G[188]=Be;G[189]=Be;G[190]=Be;G[191]=k9;for(let r=192;r<=215;r++)G[r]=T9;G[216]=D9;G[217]=P9;G[218]=C9;G[219]=N9;G[220]=Be;G[221]=Be;G[222]=Be;G[223]=Be;for(let r=224;r<=243;r++)G[r]=Wf("simple values are not supported");G[244]=Be;G[245]=Be;G[246]=Be;G[247]=B9;G[248]=Wf("simple values are not supported");G[249]=O9;G[250]=K9;G[251]=M9;G[252]=Be;G[253]=Be;G[254]=Be;G[255]=L9;var fn=[];for(let r=0;r<24;r++)fn[r]=new q(S.uint,r,1);for(let r=-1;r>=-24;r--)fn[31-r]=new q(S.negint,r,1);fn[64]=new q(S.bytes,new Uint8Array(0),1);fn[96]=new q(S.string,"",1);fn[128]=new q(S.array,0,1);fn[160]=new q(S.map,0,1);fn[244]=new q(S.false,!1,1);fn[245]=new q(S.true,!0,1);fn[246]=new q(S.null,null,1);function H9(r){switch(r.type){case S.false:return Dn([244]);case S.true:return Dn([245]);case S.null:return Dn([246]);case S.bytes:return r.value.length?void 0:Dn([64]);case S.string:return r.value===""?Dn([96]):void 0;case S.array:return r.value===0?Dn([128]):void 0;case S.map:return r.value===0?Dn([160]):void 0;case S.uint:return r.value<24?Dn([Number(r.value)]):void 0;case S.negint:if(r.value>=-24)return Dn([31-Number(r.value)])}}var LC={float64:!1,mapSorter:MC,quickEncodeToken:H9};function OC(){let r=[];return r[S.uint.major]=Or,r[S.negint.major]=Vf,r[S.bytes.major]=Ia,r[S.string.major]=y9,r[S.array.major]=Hf,r[S.map.major]=$f,r[S.tag.major]=Gf,r[S.float.major]=Yf,r}var $9=OC(),im=new gl,jf=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${Aa} object contains circular references`);return new r(t,e)}},ys={null:new q(S.null,null),undefined:new q(S.undefined,void 0),true:new q(S.true,!0),false:new q(S.false,!1),emptyArray:new q(S.array,0),emptyMap:new q(S.map,0)},gs={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new q(S.float,r):r>=0?new q(S.uint,r):new q(S.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new q(S.uint,r):new q(S.negint,r)},Uint8Array(r,e,t,n){return new q(S.bytes,r)},string(r,e,t,n){return new q(S.string,r)},boolean(r,e,t,n){return r?ys.true:ys.false},null(r,e,t,n){return ys.null},undefined(r,e,t,n){return ys.undefined},ArrayBuffer(r,e,t,n){return new q(S.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new q(S.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[ys.emptyArray,new q(S.break)]:ys.emptyArray;n=jf.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=zf(i,t,n);return t.addBreakTokens?[new q(S.array,r.length),o,new q(S.break)]:[new q(S.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[ys.emptyMap,new q(S.break)]:ys.emptyMap;n=jf.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[zf(l,t,n),zf(o?r.get(l):r[l],t,n)];return KC(a,t),t.addBreakTokens?[new q(S.map,i),a,new q(S.break)]:[new q(S.map,i),a]}};gs.Map=gs.Object;gs.Buffer=gs.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))gs[`${r}Array`]=gs.DataView;function zf(r,e={},t){let n=H7(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||gs[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=gs[n];if(!s)throw new Error(`${Aa} unsupported type: ${n}`);return s(r,n,e,t)}function KC(r,e){e.mapSorter&&r.sort(e.mapSorter)}function MC(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=$9[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function G9(r,e,t,n){if(Array.isArray(e))for(let o of e)G9(r,o,t,n);else t[e.type.major](r,e,n)}function Y9(r,e,t){let n=zf(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new gl(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return yl(a.chunks[0])}}return im.reset(),G9(im,n,e,t),im.toBytes(!0)}function Da(r,e){return e=Object.assign({},LC,e),Y9(r,$9,e)}var UC={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},am=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=fn[e];if(t===void 0){let n=G[e];if(!n)throw new Error(`${ne} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},xl=Symbol.for("DONE"),Xf=Symbol.for("BREAK");function FC(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=vl(e,t);if(s===Xf){if(r.value===1/0)break;throw new Error(`${ne} got unexpected break to lengthed array`)}if(s===xl)throw new Error(`${ne} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function VC(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=vl(e,t);if(a===Xf){if(r.value===1/0)break;throw new Error(`${ne} got unexpected break to lengthed map`)}if(a===xl)throw new Error(`${ne} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${ne} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${ne} found repeat map key "${a}"`);let c=vl(e,t);if(c===xl)throw new Error(`${ne} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function vl(r,e){if(r.done())return xl;let t=r.next();if(t.type===S.break)return Xf;if(t.type.terminal)return t.value;if(t.type===S.array)return FC(t,r,e);if(t.type===S.map)return VC(t,r,e);if(t.type===S.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=vl(r,e);return e.tags[t.value](n)}throw new Error(`${ne} tag not supported (${t.value})`)}throw new Error("unsupported")}function cm(r,e){if(!(r instanceof Uint8Array))throw new Error(`${ne} data to decode must be a Uint8Array`);e=Object.assign({},UC,e);let t=e.tokenizer||new am(r,e),n=vl(t,e);if(n===xl)throw new Error(`${ne} did not find any content to decode`);if(n===Xf)throw new Error(`${ne} got unexpected break`);return[n,r.subarray(t.pos())]}function Mr(r,e){let[t,n]=cm(r,e);if(n.length>0)throw new Error(`${ne} too many terminals, data makes no sense`);return t}var _r=Ue(ei(),1);var W9=jt("ipns:utils"),z9=x("/ipns/"),qC=114,j9=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw W9.error(n),(0,_r.default)(n,em)}let t;if(e.pubKey!=null){try{t=J0(e.pubKey)}catch(o){throw W9.error(o),o}if(!(await It(e.pubKey)).equals(r))throw(0,_r.default)(new Error("Embedded public key did not match PeerID"),F7)}else r.publicKey!=null&&(t=J0(r.publicKey));if(t!=null)return t;throw(0,_r.default)(new Error("no public key is available"),em)};var X9=r=>{let e=x("ipns-signature:");return le([e,r])},_l=r=>"signatureV1"in r?ur.encode({value:x(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:x(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):ur.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function Pn(r){let e=ur.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,_r.default)(new Error("missing data or signatureV2"),Ro);let t=J9(e.data),n=HC(t.Value),o=v(t.Validity);if(e.value!=null&&e.signatureV1!=null)return $C(e),{value:n,validityType:ur.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:ur.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var lm=r=>le([z9,r.toBytes()]),Q9=r=>at(r.slice(z9.length));var J9=r=>{let e=Mr(r);if(e.ValidityType===0)e.ValidityType=ur.ValidityType.EOL;else throw(0,_r.default)(new Error("Unknown validity type"),Mf);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},HC=r=>{if(r!=null){if(na(r))return`/ipns/${r.toCID().toString(es)}`;if(r instanceof Uint8Array){let n=v(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=de.asCID(r);if(t!=null)return t.code===qC?`/ipns/${t.toString(es)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${de.decode(r).toV1().toString()}`:`/ipfs/${de.parse(e).toV1().toString()}`}catch{}}throw(0,_r.default)(new Error("Value must be a valid content path starting with /"),U7)},$C=r=>{if(r.data==null)throw(0,_r.default)(new Error("Record data is missing"),M7);let e=J9(r.data);if(!O(e.Value,r.value??new Uint8Array(0)))throw(0,_r.default)(new Error('Field "value" did not match between protobuf and CBOR'),Ro);if(!O(e.Validity,r.validity??new Uint8Array(0)))throw(0,_r.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Ro);if(e.ValidityType!==r.validityType)throw(0,_r.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Ro);if(e.Sequence!==r.sequence)throw(0,_r.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Ro);if(e.TTL!==r.ttl)throw(0,_r.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Ro)};var KQ=jt("ipns"),MQ=Xe.code,WC="/ipns/",UQ=WC.length;var Sl=Ue(ei(),1),Z9=Ue(Kf(),1);var Jf=jt("ipns:validator"),zC=1024*10,jC=async(r,e)=>{let t=Pn(e),n;try{let o=X9(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Jf.error("record signature verification failed"),(0,Sl.default)(new Error("record signature verification failed"),Ro);if(t.validityType===ur.ValidityType.EOL){if(Z9.default.fromString(t.validity).toDate().getTime()<Date.now())throw Jf.error("record has expired"),(0,Sl.default)(new Error("record has expired"),K7)}else if(t.validityType!=null)throw Jf.error("unrecognized validity type"),(0,Sl.default)(new Error("unrecognized validity type"),Mf);Jf("ipns record for %s is valid",t.value)};async function Zf(r,e){if(e.byteLength>zC)throw(0,Sl.default)(new Error("record too large"),V7);let t=Q9(r),n=Pn(e),o=await j9(t,n);await jC(o,e)}async function*Rl(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}var fm=Ue(tb(),1);var bs=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},dm=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},rb=r=>globalThis.DOMException===void 0?new dm(r):new DOMException(r),nb=r=>{let e=r.reason===void 0?rb("This operation was aborted."):r.reason;return e instanceof Error?e:rb(e)};function dn(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(nb(d)),d.addEventListener("abort",()=>{f(nb(d))})}if(t===Number.POSITIVE_INFINITY){r.then(l,f);return}let u=new bs;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?f(o):(u.message=o??`Promise timed out after ${t} milliseconds`,f(u))},t),(async()=>{try{l(await r)}catch(d){f(d)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function hm(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 Il=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=hm(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}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 Ur=class extends fm.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#y;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Il,...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.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#c=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#y=e.throwOnTimeout===!0,this.#a=e.autoStart===!1}get#w(){return this.#t||this.#r<this.#i}get#E(){return this.#s<this.#u}#x(){this.#s--,this.#f(),this.emit("next")}#v(){this.#b(),this.#g(),this.#l=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!0}return!1}#f(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#a){let e=!this.#_;if(this.#w&&this.#E){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#g(),!0):!1}}return!1}#g(){this.#t||this.#o!==void 0||(this.#o=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#e?this.#s:0,this.#d()}#d(){for(;this.#f(););}get concurrency(){return this.#u}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.#u=e,this.#d()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#y,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=dn(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof bs&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#d(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#a}};function JC(r){return r[Symbol.asyncIterator]!=null}function ZC(r){if(JC(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var mi=ZC;var pm=x("/ipns/");function ob(r){return O(r.subarray(0,pm.byteLength),pm)}var sb=r=>at(r.slice(pm.length)),td=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*rn(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!ob(e))return;let o=sb(e),s=Pn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!ob(e))throw new h("Not found","ERR_NOT_FOUND");let n=sb(e);try{let o=await this.client.getIPNS(n,t);return _l(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new h("Not found","ERR_NOT_FOUND"):o}}},rd=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await mi(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new h("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var fr=jt("delegated-routing-v1-http-api-client"),ib={concurrentRequests:4,timeout:3e4},nd=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal),this.httpQueue=new Ur({concurrency:t.concurrentRequests??ib.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??ib.timeout,this.contentRouting=new td(this),this.peerRouting=new rd(this)}get[vn](){return this.contentRouting}get[_n](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){fr("getProviders starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let f=await c.json();for(let u of f.Providers){let d=this.#e(u);d!=null&&(yield d)}}else for await(let f of Rl(P1(c.body))){let u=this.#e(f);u!=null&&(yield u)}}catch(i){fr.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),fr("getProviders finished: %c",e)}}async*getPeers(e,t={}){fr("getPeers starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let f=await c.json();for(let u of f.Peers){let d=this.#e(u);d!=null&&(yield d)}}else for await(let f of Rl(P1(c.body))){let u=this.#e(f);u!=null&&(yield u)}}catch(i){fr.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),fr("getPeers finished: %c",e)}}async getIPNS(e,t={}){fr("getIPNS starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(fr("getIPNS GET %s %d",i,c.status),c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),f=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await Zf(lm(e),f),Pn(f)}catch(a){throw fr.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),fr("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){fr("putIPNS starts: %c",e);let o=Rt([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),s=he(),i=he();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let c=_l(t),f=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(fr("putIPNS PUT %s %d",a,f.status),f.status!==200)throw new h("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw fr.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),fr("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(se)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:Ae(e.ID),Addrs:n,Protocols:t}}};function ab(r,e={}){return new nd(new URL(r),e)}var mm=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function ym(r){return new mm(r)}var Pa={};oe(Pa,{abortedError:()=>oN,closeFailedError:()=>tN,deleteFailedError:()=>lb,getFailedError:()=>rN,hasFailedError:()=>nN,notFoundError:()=>kl,openFailedError:()=>eN,putFailedError:()=>cb});var Io=Ue(ei(),1);function eN(r){return r=r??new Error("Open failed"),(0,Io.default)(r,"ERR_OPEN_FAILED")}function tN(r){return r=r??new Error("Close failed"),(0,Io.default)(r,"ERR_CLOSE_FAILED")}function cb(r){return r=r??new Error("Put failed"),(0,Io.default)(r,"ERR_PUT_FAILED")}function rN(r){return r=r??new Error("Get failed"),(0,Io.default)(r,"ERR_GET_FAILED")}function lb(r){return r=r??new Error("Delete failed"),(0,Io.default)(r,"ERR_DELETE_FAILED")}function nN(r){return r=r??new Error("Has failed"),(0,Io.default)(r,"ERR_HAS_FAILED")}function kl(r){return r=r??new Error("Not Found"),(0,Io.default)(r,"ERR_NOT_FOUND")}function oN(r){return r=r??new Error("Aborted"),(0,Io.default)(r,"ERR_ABORTED")}var yi=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await this.get(n,t)}}async delete(e,t){await Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Tl=class extends yi{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(vt.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(vt.encode(e.multihash.bytes));if(t==null)throw kl();return t}has(e){return this.data.has(vt.encode(e.multihash.bytes))}async delete(e){this.data.delete(vt.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:de.createV1(r1,Zr(vt.decode(e))),block:t}}};function sN(r){return r[Symbol.asyncIterator]!=null}function iN(r,e){if(sN(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var hn=iN;var JJ=jt("blockstore:core:tiered");var rZ={...Pa};var ub=Ue(ei(),1);function od(r){return r=r??new Error("Not Found"),(0,ub.default)(r,"ERR_NOT_FOUND")}var fb="SHARDING";function cN(r){return r[Symbol.asyncIterator]!=null}function lN(r){if(cN(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 Pl=lN;function uN(r){return r[Symbol.asyncIterator]!=null}function fN(r,e){return uN(r)?async function*(){yield*(await Pl(r)).sort(e)}():function*(){yield*Pl(r).sort(e)}()}var sd=fN;var ko=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 Pr(this.putMany(e,n)),e=[],await Pr(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=hn(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>hn(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>sd(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=hn(n,()=>o++>=s)}return e.limit!=null&&(n=rs(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=hn(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>hn(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>sd(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=hn(n,()=>s++>=o)}return e.limit!=null&&(n=rs(n,e.limit)),n}};var gi=class extends ko{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw od();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new qe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new qe(e)}};var CZ=new qe(fb);var $Z=jt("datastore:core:tiered");var gm=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function id(r,e,t,n){let o=new gm(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{n?.filter?.(l)!==!1&&(r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l))},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var ad=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function dr(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ad(t?.errorMessage,t?.errorCode));let n,o=new ad(t?.errorMessage,t?.errorCode);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 cd=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=he(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new en)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function pN(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ld=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=pN(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ce(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&this.controller.abort(new en)}async join(e={}){let t=new cd(new Error("where").stack,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 dr(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.signal?.removeEventListener("abort",this.onAbort)})}};function mN(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 To=class extends Fe{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=mN(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new ld(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail:s}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new en)}),this.clear()}async onEmpty(e){this.size!==0&&await id(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await id(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await id(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=At({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)},i=()=>{n()},a=()=>{n(new h("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var yb="/pin/",hb="/pinned-block/",bm=es,pb=1;function mb(r){return r.version===0&&(r=r.toV1()),new qe(`${yb}${r.toString(bm)}`)}var ud=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=mb(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new To({concurrency:pb});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>O(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,Da(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new qe(`${hb}${bm.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=Mr(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,Da(s),n),n.onProgress?.(new De("helia:pin:add",e))}}async*rm(e,t={}){let n=mb(e),o=await this.datastore.get(n,t),s=Mr(o);await this.datastore.delete(n,t);let i=new To({concurrency:pb});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>O(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:yb+(e.cid!=null?`${e.cid.toString(es)}`:"")},e)){let o=de.parse(t.toString().substring(5),es),s=Mr(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new qe(`${hb}${bm.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};function Ca(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}var Lt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ca(this.map.entries(),e=>[Ae(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,Ae(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return Ca(this.map.keys(),e=>Ae(e))}values(){return this.map.values()}get size(){return this.map.size}};var mt=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 Ca(this.set.entries(),e=>{let t=Ae(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Ae(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ca(this.set.values(),e=>Ae(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 fd=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await jo(...this.routers)}async stop(){await Xo(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new h("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new mt;for await(let o of Xt(...Na(this.routers,"findProviders").map(s=>s.findProviders(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new h("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(Na(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(Na(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(Na(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new h("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Xt(...Na(this.routers,"findPeer").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;throw new h("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new h("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new mt;for await(let o of Xt(...Na(this.routers,"getClosestPeers").map(s=>s.getClosestPeers(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}};function Na(r,e){return r.filter(t=>t[e]!=null)}var ws={},Ba=r=>{r.addEventListener("message",e=>{Ba.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Ba.dispatchEvent("message",r,e)})};Ba.addEventListener=(r,e)=>{ws[r]==null&&(ws[r]=[]),ws[r].push(e)};Ba.removeEventListener=(r,e)=>{ws[r]!=null&&(ws[r]=ws[r].filter(t=>t===e))};Ba.dispatchEvent=function(r,e,t){ws[r]!=null&&ws[r].forEach(n=>n(e,t))};var wm=Ba;var Em="lock:worker:request-read",xm="lock:worker:release-read",vm="lock:master:grant-read",_m="lock:worker:request-write",Sm="lock:worker:release-write",Rm="lock:master:grant-write";var gb=(r=21)=>Math.random().toString().substring(2);var bb=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=f=>{if(f==null||f.data==null)return;let u={type:f.data.type,name:f.data.name,identifier:f.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},wb=(r,e,t,n)=>async()=>{let o=gb();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},yN={singleProcess:!1},Eb=r=>{if(r=Object.assign({},yN,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return wm.addEventListener("message",bb(t,"requestReadLock",Em,xm,vm)),wm.addEventListener("message",bb(t,"requestWriteLock",_m,Sm,Rm)),t}return{isWorker:!0,readLock:t=>wb(t,Em,vm,xm),writeLock:t=>wb(t,_m,Rm,Sm)}};var bi={},Es;async function Am(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>dn((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var gN=(r,e)=>{if(Es.isWorker===!0)return{readLock:Es.readLock(r,e),writeLock:Es.writeLock(r,e)};let t=new Ur({concurrency:1}),n;return{async readLock(){if(n!=null)return Am(n,e);n=new Ur({concurrency:e.concurrency,autoStart:!1});let o=n,s=Am(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,Am(t,e)}}},bN={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function Cl(r){let e=Object.assign({},bN,r);return Es==null&&(Es=Eb(e),Es.isWorker!==!0&&(Es.addEventListener("requestReadLock",t=>{bi[t.data.name]!=null&&bi[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Es.addEventListener("requestWriteLock",async t=>{bi[t.data.name]!=null&&bi[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),bi[e.name]==null&&(bi[e.name]=gN(e.name,e)),bi[e.name]}var dd=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=Cl({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await jo(this.child),this.started=!0}async stop(){await Xo(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany(async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Error("CID was pinned");yield s}}(),t)}finally{n()}}async has(e,t={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}};var wN=42;function EN(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return de.decode(r.subarray(1))}var xN={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};xN.tags[wN]=EN;var xb=113;var vb=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===S.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===S.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[S.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[S.negint.major](e,t){this[S.uint.major](e,t)}[S.bytes.major](e,t){throw new Error(`${Aa} unsupported type: Uint8Array`)}[S.string.major](e,t){this.prefix(e);let n=Ff(JSON.stringify(t.value));e.push(n.length>32?yl(n):n)}[S.array.major](e,t){this.prefix(e),this.inRecursive.push({type:S.array,elements:0}),e.push([91])}[S.map.major](e,t){this.prefix(e),this.inRecursive.push({type:S.map,elements:0}),e.push([123])}[S.tag.major](e,t){}[S.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===S.array)e.push([93]);else if(i.type===S.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${Aa} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};var wi=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${ne} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${ne} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new q(S.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${ne} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${ne} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new q(S.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new q(i>=0?S.uint:S.negint,i,this._pos-e):new q(i>=0?S.uint:S.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${ne} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new q(S.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${ne} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${ne} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${ne} unexpected unicode sequence at position ${this._pos}`);let c,l,f,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],f=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(f&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|f&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${ne} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${ne} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new q(S.string,tm(t),this._pos-e);default:if(s<32)throw new Error(`${ne} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${ne} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new q(S.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new q(S.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new q(S.null,null,4);case 102:return this.expect([102,97,108,115,101]),new q(S.false,!1,5);case 116:return this.expect([116,114,117,101]),new q(S.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${ne} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);if(this.ch()!==44)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new q(S.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);if(this.ch()!==44)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${ne} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function hd(r,e){return e=Object.assign({tokenizer:new wi(r,e)},e),Mr(r,e)}var SN={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};SN.tags[42]=de.parse;var Sb=297;var xte=new TextDecoder;var vte=new TextEncoder;var AN=new TextDecoder;function Im(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function pd(r,e){let t;[t,e]=Im(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function Rb(r,e){let t;return[t,e]=Im(r,e),[t&7,t>>3,e]}function IN(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=Rb(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=pd(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=pd(r,n),e.Name=AN.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=Im(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Ab(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=Rb(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=pd(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=pd(r,t),n.push(IN(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var Ste=new TextEncoder,Rte=2**32,Ate=2**31;var Tte=new TextEncoder;var Ib=112;function kb(r){let e=Ab(r),t={};return e.Data&&(t.Data=e.Data),e.Links&&(t.Links=e.Links.map(n=>{let o={};try{o.Hash=de.decode(n.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return n.Name!==void 0&&(o.Name=n.Name),n.Tsize!==void 0&&(o.Tsize=n.Tsize),o})),t}var TN={codec:Ib,*walk(r){yield*kb(r).Links.map(t=>t.Hash)}},DN={codec:r1,*walk(){}},Tb=42,PN={codec:xb,*walk(r){let e=[],t=[];t[Tb]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=de.decode(n.subarray(1));return e.push(o),o},Mr(r,{tags:t}),yield*e}},km=class extends wi{tokenBuffer;constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===S.map){let t=this._next();if(t.type===S.string&&t.value==="/"){let n=this._next();if(n.type===S.string){if(this._next().type!==S.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new q(S.tag,42,0)}if(n.type===S.map){let o=this._next();if(o.type===S.string&&o.value==="bytes"){let s=this._next();if(s.type===S.string){for(let a=0;a<2;a++)if(this._next().type!==S.break)throw new Error("Invalid encoded Bytes form");let i=Ge.decode(`m${s.value}`);return new q(S.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},CN={codec:Sb,*walk(r){let e=[],t=[];t[Tb]=n=>{let o=de.parse(n);return e.push(o),o},hd(r,{tags:t,tokenizer:new km(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},NN={codec:q5,*walk(){}};function Db(r=[]){let e={};return[TN,DN,PN,CN,NN,...r].forEach(t=>{e[t.codec]=t}),e}var Tm=new qe("/version"),Pb=1;async function Cb(r){if(!await r.has(Tm)){await r.put(Tm,x(`${Pb}`));return}let e=await r.get(Tm),t=v(e);if(parseInt(t,10)!==Pb)throw new Error("Unknown datastore version, a datastore migration may be required")}function Nb(r=[]){let e={};return[K,f2,Xe,...r].forEach(t=>{e[t.code]=t}),e}function BN(r){return typeof r.retrieve=="function"}function LN(r){return typeof r.announce=="function"}var md=class{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.child=e.blockstore,this.blockRetrievers=(e.blockBrokers??[]).filter(BN),this.blockAnnouncers=(e.blockBrokers??[]).filter(LN),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await jo(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await Xo(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(n.onProgress?.(new De("blocks:put:duplicate",e)),e):(n.onProgress?.(new De("blocks:put:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,t,n)}),n.onProgress?.(new De("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=hn(e,async({cid:s})=>{let i=await this.child.has(s);return i&&t.onProgress?.(new De("blocks:put-many:duplicate",s)),!i}),o=Ys(n,({cid:s,block:i})=>{t.onProgress?.(new De("blocks:put-many:providers:notify",s)),this.blockAnnouncers.forEach(a=>{a.announce(s,i,t)})});t.onProgress?.(new De("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e)){t.onProgress?.(new De("blocks:get:providers:get",e));let n=await Bb(e,this.blockRetrievers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new De("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new De("blocks:get:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,n,t)}),n}return t.onProgress?.(new De("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new De("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(Ys(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new De("blocks:get-many:providers:get",n));let o=await Bb(n,this.blockRetrievers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new De("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new De("blocks:get-many:providers:notify",n)),this.blockAnnouncers.forEach(s=>{s.announce(n,o,t)})}}))}async delete(e,t={}){t.onProgress?.(new De("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new De("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany(async function*(){for await(let n of e)yield n}(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new De("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},ON=(r,e)=>{if(e==null)throw new h(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!O(n.digest,r.multihash.digest))throw new h("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function Bb(r,e,t,n){let o=ON(r,t),s=new AbortController,i=Rt([s.signal,n.signal]);try{return await Promise.any(e.map(async a=>{try{let c=!1,l=await a.retrieve(r,{...n,signal:i,validateFn:async f=>{await o(f),c=!0}});return c||await o(l),l}catch(c){throw n.log.error("could not retrieve verified block for %c",r,c),c}}))}finally{i.clear()}}var yd=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;log;constructor(e){this.logger=e.logger??Qo(),this.log=this.logger.forComponent("helia"),this.hashers=Nb(e.hashers),this.dagWalkers=Db(e.dagWalkers);let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],...e.components??{}};t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new md(t);this.pins=new ud(e.datastore,n,this.dagWalkers),this.blockstore=new dd(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,this.routing=new fd(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[vn]!=null&&s.push(o[vn]),o[_n]!=null&&s.push(o[_n]),s})})}async start(){await Cb(this.datastore),await jo(this.blockstore,this.datastore,this.routing)}async stop(){await Xo(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Pr(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new De("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new De("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var gd=class extends yd{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var Cm={};oe(Cm,{Ed25519PrivateKey:()=>Ei,Ed25519PublicKey:()=>Nl,generateKeyPair:()=>VN,generateKeyPairFromSeed:()=>Vb,unmarshalEd25519PrivateKey:()=>UN,unmarshalEd25519PublicKey:()=>FN});function Fr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var La=32,Do=64,bd=32;function Lb(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:Ub(r,e),publicKey:e}}function Ob(r){if(r.length!==bd)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:Ub(e,t),publicKey:t}}function Kb(r,e){let t=r.subarray(0,bd);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Mb(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Ub(r,e){let t=new Uint8Array(Do);for(let n=0;n<bd;n++)t[n]=r[n],t[bd+n]=e[n];return t}var er={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Dm={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Fb(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=er.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",Dm,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",Dm,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",Dm,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Oa(r,e){let n=await Fb().encrypt(r,e);return Ge.encode(n)}var Je;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Je||(Je={}));var Pm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Pm||(Pm={}));(function(r){r.codec=()=>Re(Pm)})(Je||(Je={}));var Cn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Cn||(Cn={}));var Nn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Nn||(Nn={}));var Nl=class{_key;constructor(e){this._key=Ka(e,La)}verify(e,t){return Mb(this._key,t,e)}marshal(){return this._key}get bytes(){return Cn.encode({Type:Je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}},Ei=class{_key;_publicKey;constructor(e,t){this._key=Ka(e,Do),this._publicKey=Ka(t,La)}sign(e){return Kb(this._key,e)}get public(){return new Nl(this._publicKey)}marshal(){return this._key}get bytes(){return Nn.encode({Type:Je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Fr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function UN(r){if(r.length>Do){r=Ka(r,Do+La);let n=r.subarray(0,Do),o=r.subarray(Do,r.length);return new Ei(n,o)}r=Ka(r,Do);let e=r.subarray(0,Do),t=r.subarray(La);return new Ei(e,t)}function FN(r){return r=Ka(r,La),new Nl(r)}async function VN(){let{privateKey:r,publicKey:e}=Lb();return new Ei(r,e)}async function Vb(r){let{privateKey:e,publicKey:t}=Ob(r);return new Ei(e,t)}function Ka(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Km={};oe(Km,{MAX_RSA_KEY_SIZE:()=>Ol,RsaPrivateKey:()=>Ma,RsaPublicKey:()=>Ll,fromJwk:()=>ZN,generateKeyPair:()=>eB,unmarshalRsaPrivateKey:()=>Lm,unmarshalRsaPublicKey:()=>JN});function xi(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var xs={};oe(xs,{exportToPem:()=>WN,importFromPem:()=>zN,jwkToPkcs1:()=>HN,jwkToPkix:()=>GN,pkcs1ToJwk:()=>qN,pkixToJwk:()=>$N});function qN(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Bn(t[1].toBigInt()),"base64url"),e:v(Bn(t[2].toBigInt()),"base64url"),d:v(Bn(t[3].toBigInt()),"base64url"),p:v(Bn(t[4].toBigInt()),"base64url"),q:v(Bn(t[5].toBigInt()),"base64url"),dp:v(Bn(t[6].toBigInt()),"base64url"),dq:v(Bn(t[7].toBigInt()),"base64url"),qi:v(Bn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function HN(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Ln(x(r.n,"base64url"))),B.fromBigInt(Ln(x(r.e,"base64url"))),B.fromBigInt(Ln(x(r.d,"base64url"))),B.fromBigInt(Ln(x(r.p,"base64url"))),B.fromBigInt(Ln(x(r.q,"base64url"))),B.fromBigInt(Ln(x(r.dp,"base64url"))),B.fromBigInt(Ln(x(r.dq,"base64url"))),B.fromBigInt(Ln(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function $N(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Bn(t[0].toBigInt()),"base64url"),e:v(Bn(t[1].toBigInt()),"base64url")}}function GN(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Ln(x(r.n,"base64url"))),B.fromBigInt(Ln(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Bn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Ln(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var YN=16,Nm=32,Bm=1e4;async function WN(r,e){let t=er.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=xi(YN),a=await pt(Ye,e,i,{c:Bm,dkLen:Nm}),c=xi(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:Bm}),new B({value:Nm}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
23
|
-
`)}async function zN(r,e){let t=er.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=jN(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Bl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=qb(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=qb(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Lm(n)}function jN(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Bl(s.valueBlock.value[0].getValue()),a=Bm,c=Nm;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Bl(l.valueBlock.value[1].getValue());return{cipherText:Bl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function qb(r){return Bl(r.valueBlock.value[2].getValue())}function Bl(r){return new Uint8Array(r,0,r.byteLength)}async function Hb(r){let e=await er.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Yb(e);return{privateKey:t[0],publicKey:t[1]}}async function Om(r){let t=[await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await XN(r)],n=await Yb({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function $b(r,e){let t=await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await er.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Gb(r,e,t){let n=await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return er.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Yb(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([er.get().subtle.exportKey("jwk",r.privateKey),er.get().subtle.exportKey("jwk",r.publicKey)])}async function XN(r){return er.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ed(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Ol=8192,Ll=class{_key;constructor(e){this._key=e}verify(e,t){return Gb(this._key,t,e)}marshal(){return xs.jwkToPkix(this._key)}get bytes(){return Cn.encode({Type:Je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}},Ma=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return xi(16)}sign(e){return $b(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Ll(this._publicKey)}marshal(){return xs.jwkToPkcs1(this._key)}get bytes(){return Nn.encode({Type:Je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return xs.exportToPem(this,e);if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Lm(r){let e=xs.pkcs1ToJwk(r);if(Ed(e)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Om(e);return new Ma(t.privateKey,t.publicKey)}function JN(r){let e=xs.pkixToJwk(r);if(Ed(e)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Ll(e)}async function ZN(r){if(Ed(r)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Om(r);return new Ma(e.privateKey,e.publicKey)}async function eB(r){if(r>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Hb(r);return new Ma(e.privateKey,e.publicKey)}var Um={};oe(Um,{Secp256k1PrivateKey:()=>Ml,Secp256k1PublicKey:()=>Kl,generateKeyPair:()=>oB,unmarshalSecp256k1PrivateKey:()=>rB,unmarshalSecp256k1PublicKey:()=>nB});function Wb(){return W.utils.randomPrivateKey()}function zb(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Fr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function jb(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Fr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function Xb(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Qb(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Mm(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Jb(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Kl=class{_key;constructor(e){Mm(e),this._key=e}verify(e,t){return jb(this._key,t,e)}marshal(){return Xb(this._key)}get bytes(){return Cn.encode({Type:Je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Fr(e)?{bytes:t}=await e:t=e.bytes,t}},Ml=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Jb(e),Qb(this._key),Mm(this._publicKey)}sign(e){return zb(this._key,e)}get public(){return new Kl(this._publicKey)}marshal(){return this._key}get bytes(){return Nn.encode({Type:Je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function rB(r){return new Ml(r)}function nB(r){return new Kl(r)}async function oB(){let r=Wb();return new Ml(r)}var vi={rsa:Km,ed25519:Cm,secp256k1:Um};function Zb(r){let e=Object.keys(vi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function ew(r){let e=Cn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Je.RSA:return vi.rsa.unmarshalRsaPublicKey(t);case Je.Ed25519:return vi.ed25519.unmarshalEd25519PublicKey(t);case Je.Secp256k1:return vi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Zb(e.Type??"unknown")}}async function Fm(r){let e=Nn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Je.RSA:return vi.rsa.unmarshalRsaPrivateKey(t);case Je.Ed25519:return vi.ed25519.unmarshalEd25519PrivateKey(t);case Je.Secp256k1:return vi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Zb(e.Type??"RSA")}}var Vm=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=he(),this.haveNext=he()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let e=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=he(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=he(),await dr(this.needNext.promise,t?.signal,t)}};function tw(){return new Vm}var xd=class extends Error{code;constructor(e,t){super(e),this.code=t}},qm=class extends xd{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function rw(r,e){let t=tw();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new be;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((f,u)=>{c=()=>{u(new qm("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:d}=await Promise.race([n.next(),l]);return u===!0?new be:d}for(;o.byteLength<i;){let{value:u,done:d}=await Promise.race([n.next(),l]);if(d===!0)throw new xd("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let f=o.sublist(0,i);return o.consume(i),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var vd=class extends Error{code;constructor(e,t){super(e),this.code=t}};function On(r,e={}){let t=rw(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Et(e.maxDataLength));let n=e?.lengthDecoder??gr,o=e?.lengthEncoder??st;return{read:async i=>{let a=-1,c=new be;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new vd("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new vd("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new be(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new be(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Hm(){let r=he(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function nw(){let r=Hm(),e=Hm();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Ua=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Po=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function ow(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var sw=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),sB=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!sB)throw new Error("Non little-endian hardware is not supported");function _d(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Sd(r){if(typeof r=="string")r=_d(r);else if(ow(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var iB=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function iw(r,e){if(e!==void 0&&(typeof e!="object"||!iB(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function _i(r,e){if(!ow(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function aw(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}var $m=(r,e)=>(Object.assign(e,r),e);function Gm(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 Rd(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function Ym(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function aB(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function Fa(r,...e){if(!aB(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Wm(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 cw(r,e){Fa(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Ot=(r,e)=>r[e++]&255|(r[e++]&255)<<8,zm=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=Sd(e),_i(e,32);let t=Ot(e,0),n=Ot(e,2),o=Ot(e,4),s=Ot(e,6),i=Ot(e,8),a=Ot(e,10),c=Ot(e,12),l=Ot(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let f=0;f<8;f++)this.pad[f]=Ot(e,16+2*f)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],f=i[3],u=i[4],d=i[5],y=i[6],p=i[7],m=i[8],g=i[9],b=Ot(e,t+0),E=Ot(e,t+2),w=Ot(e,t+4),_=Ot(e,t+6),I=Ot(e,t+8),k=Ot(e,t+10),D=Ot(e,t+12),A=Ot(e,t+14),C=s[0]+(b&8191),U=s[1]+((b>>>13|E<<3)&8191),L=s[2]+((E>>>10|w<<6)&8191),F=s[3]+((w>>>7|_<<9)&8191),H=s[4]+((_>>>4|I<<12)&8191),re=s[5]+(I>>>1&8191),T=s[6]+((I>>>14|k<<2)&8191),N=s[7]+((k>>>11|D<<5)&8191),Y=s[8]+((D>>>8|A<<8)&8191),P=s[9]+(A>>>5|o),R=0,V=R+C*a+U*(5*g)+L*(5*m)+F*(5*p)+H*(5*y);R=V>>>13,V&=8191,V+=re*(5*d)+T*(5*u)+N*(5*f)+Y*(5*l)+P*(5*c),R+=V>>>13,V&=8191;let $=R+C*c+U*a+L*(5*g)+F*(5*m)+H*(5*p);R=$>>>13,$&=8191,$+=re*(5*y)+T*(5*d)+N*(5*u)+Y*(5*f)+P*(5*l),R+=$>>>13,$&=8191;let j=R+C*l+U*c+L*a+F*(5*g)+H*(5*m);R=j>>>13,j&=8191,j+=re*(5*p)+T*(5*y)+N*(5*d)+Y*(5*u)+P*(5*f),R+=j>>>13,j&=8191;let ue=R+C*f+U*l+L*c+F*a+H*(5*g);R=ue>>>13,ue&=8191,ue+=re*(5*m)+T*(5*p)+N*(5*y)+Y*(5*d)+P*(5*u),R+=ue>>>13,ue&=8191;let pe=R+C*u+U*f+L*l+F*c+H*a;R=pe>>>13,pe&=8191,pe+=re*(5*g)+T*(5*m)+N*(5*p)+Y*(5*y)+P*(5*d),R+=pe>>>13,pe&=8191;let _e=R+C*d+U*u+L*f+F*l+H*c;R=_e>>>13,_e&=8191,_e+=re*a+T*(5*g)+N*(5*m)+Y*(5*p)+P*(5*y),R+=_e>>>13,_e&=8191;let ye=R+C*y+U*d+L*u+F*f+H*l;R=ye>>>13,ye&=8191,ye+=re*c+T*a+N*(5*g)+Y*(5*m)+P*(5*p),R+=ye>>>13,ye&=8191;let ge=R+C*p+U*y+L*d+F*u+H*f;R=ge>>>13,ge&=8191,ge+=re*l+T*c+N*a+Y*(5*g)+P*(5*m),R+=ge>>>13,ge&=8191;let $e=R+C*m+U*p+L*y+F*d+H*u;R=$e>>>13,$e&=8191,$e+=re*f+T*l+N*c+Y*a+P*(5*g),R+=$e>>>13,$e&=8191;let Me=R+C*g+U*m+L*p+F*y+H*d;R=Me>>>13,Me&=8191,Me+=re*u+T*f+N*l+Y*c+P*a,R+=Me>>>13,Me&=8191,R=(R<<2)+R|0,R=R+V|0,V=R&8191,R=R>>>13,$+=R,s[0]=V,s[1]=$,s[2]=j,s[3]=ue,s[4]=pe,s[5]=_e,s[6]=ye,s[7]=ge,s[8]=$e,s[9]=Me}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){Wm(this);let{buffer:t,blockLen:n}=this;e=Sd(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){Wm(this),cw(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function cB(r){let e=(n,o)=>r(o).update(Sd(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var lw=cB(r=>new zm(r));var lB=_d("expand 16-byte k"),uB=_d("expand 32-byte k"),fB=Po(lB),dB=Po(uB);function te(r,e){return r<<e|r>>>32-e}function jm(r){return r.byteOffset%4===0}var Ad=64,hB=16,fw=2**32-1,uw=new Uint32Array;function pB(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(Ad),f=Po(l),u=jm(o)&&jm(s),d=u?Po(o):uw,y=u?Po(s):uw;for(let p=0;p<c;i++){if(r(e,t,n,f,i,a),i>=fw)throw new Error("arx: counter overflow");let m=Math.min(Ad,c-p);if(u&&m===Ad){let g=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let b=0,E;b<hB;b++)E=g+b,y[E]=d[E]^f[b];p+=Ad;continue}for(let g=0,b;g<m;g++)b=p+g,s[b]=o[b]^l[g];p+=m}}function Xm(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=iw({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return Rd(o),Rd(i),Ym(s),Ym(t),(a,c,l,f,u=0)=>{Fa(a),Fa(c),Fa(l);let d=l.length;if(f||(f=new Uint8Array(d)),Fa(f),Rd(u),u<0||u>=fw)throw new Error("arx: counter overflow");if(f.length<d)throw new Error(`arx: output (${f.length}) is shorter than data (${d})`);let y=[],p=a.length,m,g;if(p===32)m=a.slice(),y.push(m),g=dB;else if(p===16&&t)m=new Uint8Array(32),m.set(a),m.set(a,16),g=fB,y.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);jm(c)||(c=c.slice(),y.push(c));let b=Po(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(g,b,Po(c.subarray(0,16)),b),c=c.subarray(16)}let E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){let _=new Uint8Array(12);_.set(c,s?0:12-c.length),c=_,y.push(c)}let w=Po(c);for(pB(r,g,b,w,l,f,u,i);y.length>0;)y.pop().fill(0);return f}}function pw(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],f=e[0],u=e[1],d=e[2],y=e[3],p=e[4],m=e[5],g=e[6],b=e[7],E=o,w=t[0],_=t[1],I=t[2],k=i,D=a,A=c,C=l,U=f,L=u,F=d,H=y,re=p,T=m,N=g,Y=b,P=E,R=w,V=_,$=I;for(let ue=0;ue<s;ue+=2)k=k+U|0,P=te(P^k,16),re=re+P|0,U=te(U^re,12),k=k+U|0,P=te(P^k,8),re=re+P|0,U=te(U^re,7),D=D+L|0,R=te(R^D,16),T=T+R|0,L=te(L^T,12),D=D+L|0,R=te(R^D,8),T=T+R|0,L=te(L^T,7),A=A+F|0,V=te(V^A,16),N=N+V|0,F=te(F^N,12),A=A+F|0,V=te(V^A,8),N=N+V|0,F=te(F^N,7),C=C+H|0,$=te($^C,16),Y=Y+$|0,H=te(H^Y,12),C=C+H|0,$=te($^C,8),Y=Y+$|0,H=te(H^Y,7),k=k+L|0,$=te($^k,16),N=N+$|0,L=te(L^N,12),k=k+L|0,$=te($^k,8),N=N+$|0,L=te(L^N,7),D=D+F|0,P=te(P^D,16),Y=Y+P|0,F=te(F^Y,12),D=D+F|0,P=te(P^D,8),Y=Y+P|0,F=te(F^Y,7),A=A+H|0,R=te(R^A,16),re=re+R|0,H=te(H^re,12),A=A+H|0,R=te(R^A,8),re=re+R|0,H=te(H^re,7),C=C+U|0,V=te(V^C,16),T=T+V|0,U=te(U^T,12),C=C+U|0,V=te(V^C,8),T=T+V|0,U=te(U^T,7);let j=0;n[j++]=i+k|0,n[j++]=a+D|0,n[j++]=c+A|0,n[j++]=l+C|0,n[j++]=f+U|0,n[j++]=u+L|0,n[j++]=d+F|0,n[j++]=y+H|0,n[j++]=p+re|0,n[j++]=m+T|0,n[j++]=g+N|0,n[j++]=b+Y|0,n[j++]=E+P|0,n[j++]=w+R|0,n[j++]=_+V|0,n[j++]=I+$|0}function mB(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],f=e[2],u=e[3],d=e[4],y=e[5],p=e[6],m=e[7],g=t[0],b=t[1],E=t[2],w=t[3];for(let I=0;I<20;I+=2)o=o+c|0,g=te(g^o,16),d=d+g|0,c=te(c^d,12),o=o+c|0,g=te(g^o,8),d=d+g|0,c=te(c^d,7),s=s+l|0,b=te(b^s,16),y=y+b|0,l=te(l^y,12),s=s+l|0,b=te(b^s,8),y=y+b|0,l=te(l^y,7),i=i+f|0,E=te(E^i,16),p=p+E|0,f=te(f^p,12),i=i+f|0,E=te(E^i,8),p=p+E|0,f=te(f^p,7),a=a+u|0,w=te(w^a,16),m=m+w|0,u=te(u^m,12),a=a+u|0,w=te(w^a,8),m=m+w|0,u=te(u^m,7),o=o+l|0,w=te(w^o,16),p=p+w|0,l=te(l^p,12),o=o+l|0,w=te(w^o,8),p=p+w|0,l=te(l^p,7),s=s+f|0,g=te(g^s,16),m=m+g|0,f=te(f^m,12),s=s+f|0,g=te(g^s,8),m=m+g|0,f=te(f^m,7),i=i+u|0,b=te(b^i,16),d=d+b|0,u=te(u^d,12),i=i+u|0,b=te(b^i,8),d=d+b|0,u=te(u^d,7),a=a+c|0,E=te(E^a,16),y=y+E|0,c=te(c^y,12),a=a+c|0,E=te(E^a,8),y=y+E|0,c=te(c^y,7);let _=0;n[_++]=o,n[_++]=s,n[_++]=i,n[_++]=a,n[_++]=g,n[_++]=b,n[_++]=E,n[_++]=w}var yB=Xm(pw,{counterRight:!1,counterLength:4,allowShortKeys:!1}),gB=Xm(pw,{counterRight:!1,counterLength:8,extendNonceFn:mB,allowShortKeys:!1});var bB=new Uint8Array(16),dw=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(bB.subarray(t))},wB=new Uint8Array(32);function hw(r,e,t,n,o){let s=r(e,t,wB),i=lw.create(s);o&&dw(i,o),dw(i,n);let a=new Uint8Array(16),c=sw(a);Gm(c,0,BigInt(o?o.length:0),!0),Gm(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var mw=r=>(e,t,n)=>(_i(e,32),_i(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?_i(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=hw(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?_i(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),f=s.subarray(-16),u=hw(r,e,t,l,n);if(!aw(f,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),Qm=$m({blockSize:64,nonceLength:12,tagLength:16},mw(yB)),Vne=$m({blockSize:64,nonceLength:24,tagLength:16},mw(gB));function gw(r,e,t){return si(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ls(r,on(t),on(e))}var Jm=new Uint8Array([0]),yw=new Uint8Array;function bw(r,e,t,n=32){if(si(r),os(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=yw);let s=new Uint8Array(o*r.outputLen),i=ls.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)Jm[0]=l+1,a.update(l===0?yw:c).update(t).update(Jm).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),Jm.fill(0),s.slice(0,n)}var Zm={hashSHA256(r){return ms(r.subarray())},getHKDF(r,e){let t=gw(ms,e,r),o=bw(ms,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=tl.utils.randomPrivateKey();return{publicKey:tl.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:tl.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return tl.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return Qm(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return Qm(n,e,t).decrypt(r.subarray(),o)}};var ww=Zm;function Ew(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Va=r=>{let e=nt(2);return e[0]=r>>8,e[1]=r,e};Va.bytes=2;var Ul=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};Ul.bytes=2;function xw(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function e3(r,e){!e.enabled||!Ua||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${v(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${v(r.privateKey,"hex")}`)):e("Missing local static keys."))}function t3(r,e){!e.enabled||!Ua||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${v(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${v(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function vw(r,e){!e.enabled||!Ua||e(r?`REMOTE_STATIC_PUBLIC_KEY ${v(r.subarray(),"hex")}`:"Missing remote static public key.")}function r3(r,e){!e.enabled||!Ua||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${v(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function n3(r,e,t){!t.enabled||!Ua||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&v(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&v(e.k,"hex")}`))}function Id(r,e){if(globalThis.Buffer!=null)return globalThis.Buffer.compare(r,e);for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function Co(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=nt(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return Rn(t)}var kd=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},qa=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var EB=0,xB=4294967295,vB="Cipherstate has reached maximum n, a new handshake must be performed",Td=class{n;bytes;view;constructor(e=EB){this.n=e,this.bytes=ft(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>xB)throw new Error(vB)}};var Si=ft(0),Ha=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new Td(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},o3=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=x(t,"utf-8");this.h=_B(e,n),this.ck=this.h,this.cs=new Ha(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Ha(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new be(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,Si);return[new Ha(this.crypto,e),new Ha(this.crypto,t)]}},s3=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new o3(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},Fl=class extends s3{writeMessageA(e){return new be(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new be(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new be(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new qa(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new qa(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new qa(`handshake stage 2 validation fail: ${t.message}`)}}};function _B(r,e){if(e.length<=32){let t=ft(32);return t.set(e),t}else return r.hash(e)}var Dd;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Dd||(Dd={}));var Vl;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),Dd.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:ft(0),identitySig:ft(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=Dd.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Vl||(Vl={}));async function i3(r,e,t){let n=await r.sign(_w(e));return Vl.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function a3(r,e,t){try{let n=Vl.decode(r);if(t){let i=t.subarray();if(!O(i,n.identityKey))throw new Error(`Payload identity key ${v(n.identityKey,"hex")} does not match expected remote identity key ${v(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=_w(e);if(!await ew(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new kd(n.message)}}function _w(r){let e=x("noise-libp2p-static-key:");return r instanceof Uint8Array?le([e,r],e.length+r.length):(r.prepend(e),r)}async function Sw(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await i3(o,i.publicKey,c),f=new Fl({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});e3(f.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(f.writeMessageA(Si)),e.trace("Stage 0 - Initiator finished sending first message."),t3(f.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=f.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),r3(f.re,e),vw(f.rs,e),e.trace("Initiator going to check remote's signature...");let d=await a3(u,f.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(f.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[y,p]=f.ss.split();return n3(y,p,e),{payload:d,encrypt:m=>y.encryptWithAd(Si,m),decrypt:(m,g)=>p.decryptWithAd(Si,m,g)}}async function Rw(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await i3(o,i.publicKey,c),f=new Fl({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});e3(f.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),r3(f.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(f.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),t3(f.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=f.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let d=await a3(u,f.rs,a),[y,p]=f.ss.split();return n3(y,p,e),{payload:d,encrypt:m=>p.encryptWithAd(Si,m),decrypt:(m,g)=>y.decryptWithAd(Si,m,g)}}var Iw=16;function kw(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new be(Va(i.byteLength),i)}}}function Tw(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Iw<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Iw);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var Pd=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??ww;this.crypto=Ew(c),this.extensions=o,this.metrics=a?xw(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??ft(0)}async secureOutbound(e,t,n){let o=On(t,{lengthEncoder:Va,lengthDecoder:Ul,maxDataLength:65535});if(!e.privateKey)throw new h("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Fm(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await It(a.payload.identityKey)}}async secureInbound(e,t,n){let o=On(t,{lengthEncoder:Va,lengthDecoder:Ul,maxDataLength:65535});if(!e.privateKey)throw new h("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Fm(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await It(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Sw({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await Rw({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=nw(),s=e.unwrap();return await it(n,kw(t,this.metrics),s,i=>cr(i,{lengthDecoder:Ul}),Tw(t,this.metrics),n),o}};function $a(r={}){return e=>new Pd(e,r)}function Cd(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Ga="ERR_INVALID_FRAME",c3="ERR_UNREQUESTED_PING",l3="ERR_NOT_MATCHING_PING",u3="ERR_STREAM_ALREADY_EXISTS",f3="ERR_DECODE_INVALID_VERSION",d3="ERR_BOTH_CLIENTS",h3="ERR_RECV_WINDOW_EXCEEDED",Dw=new Set([Ga,c3,l3,u3,f3,d3,h3]),vs="ERR_INVALID_CONFIG",Nd="ERR_MUXER_LOCAL_CLOSED",p3="ERR_MUXER_REMOTE_CLOSED";var Pw="ERR_STREAM_ABORT",Cw="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Nw="ERR_DECODE_IN_PROGRESS",Hl=256*1024,Bw=16*1024*1024;var Lw={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Hl,maxStreamWindowSize:Bw,maxMessageSize:64*1024};function Ow(r){if(r.keepAliveInterval<=0)throw new h("keep-alive interval must be positive",vs);if(r.maxInboundStreams<0)throw new h("max inbound streams must be larger or equal 0",vs);if(r.maxOutboundStreams<0)throw new h("max outbound streams must be larger or equal 0",vs);if(r.initialStreamWindowSize<Hl)throw new h("InitialStreamWindowSize must be larger or equal 256 kB",vs);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new h("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",vs);if(r.maxStreamWindowSize>2**32-1)throw new h("MaxStreamWindowSize must be less than equal MAX_UINT32",vs);if(r.maxMessageSize<1024)throw new h("MaxMessageSize must be greater than a kilobyte",vs)}var ct;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(ct||(ct={}));var Ze;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(Ze||(Ze={}));var gse=Object.values(Ze).filter(r=>typeof r!="string"),Kw=0,Vr;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Vr||(Vr={}));var _s=12;var Mw=2**24;function SB(r){if(r[0]!==Kw)throw new h("Invalid frame version",f3);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Mw+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Mw+(r[9]<<16)+(r[10]<<8)+r[11]}}var Bd=class{source;buffer;frameInProgress;constructor(e){this.source=RB(e),this.buffer=new be,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===ct.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new h("decoding frame already in progress",Nw);if(this.buffer.length<_s)return;let e=SB(this.buffer.subarray(0,_s));return this.buffer.consume(_s),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function RB(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function m3(r){let e=new Uint8Array(_s);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function Uw(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Ld(r,e){let t=Cd(r).return?.();Uw(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var AB="ERR_STREAM_RESET",IB="ERR_SINK_INVALID_STATE",kB=5e3;function y3(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ss=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;constructor(e){this.sinkController=new AbortController,this.sinkEnd=he(),this.closed=he(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??kB,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=At({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new h(`writable end state is "${this.writeStatus}" not "ready"`,IB);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);y3(o)&&await o}let n=()=>{Ld(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new be(o):o;let s=this.sendData(o,t);y3(s)&&await s}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Promise.all([this.closeRead(e),this.closeWrite(e)]),await dr(this.closed.promise,e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await dr(this.sink([]),e.signal)),this.writeStatus==="writing"&&await new Promise((t,n)=>{queueMicrotask(()=>{this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),dr(this.sinkEnd.promise,e.signal).then(t,n)})}),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();y3(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new h("stream reset",AB);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var qr;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(qr||(qr={}));var Od=class extends Ss{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=qr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Hl,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=Ys(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&await this.waitForSendWindowCapacity(t),this.status!=="open")return;let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-_s,e.length),o=this.getSendFlags();this.sendFrame({type:ct.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|Ze.FIN;this.sendFrame({type:ct.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"?n(new h("stream aborted",Pw)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new h("receive window exceeded",h3,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&Ze.ACK)===Ze.ACK&&this.state===qr.SYNSent&&(this.state=qr.Established),(e&Ze.FIN)===Ze.FIN&&this.remoteCloseWrite(),(e&Ze.RST)===Ze.RST&&this.reset()}getSendFlags(){switch(this.state){case qr.Init:return this.state=qr.SYNSent,Ze.SYN;case qr.SYNReceived:return this.state=qr.Established,Ze.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:ct.WindowUpdate,flag:e,streamID:this._id,length:o})}};var Fw="/yamux/1.0.0",TB=500,Kd=class{protocol=Fw;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new g3(this._components,{...this._init,...e})}},g3=class{protocol=Fw;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Lw,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Ow(this.config),this.closeController=new AbortController,Ce(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=At({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=Cd(n);if(a.return!=null){let c=a.return();DB(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new Bd(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=Vr.NormalTermination}catch(a){let c=a.code;Dw.has(c)?(this.log?.error("protocol error in sink",a),s=Vr.ProtocolError):(this.log?.error("internal error in sink",a),s=Vr.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new h("muxer closed remotely",p3);if(this.localGoAway!==void 0)throw new h("muxer closed locally",Nd);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new h("max outbound streams exceeded",Cw);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,qr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new h("muxer closed remotely",p3);if(this.localGoAway!==void 0)throw new h("muxer closed locally",Nd);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new h("muxer closed locally",Nd))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??Vr.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(TB);Ce(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??Vr.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new h("Stream already exists",u3,{id:e});let s=new Od({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case ct.Ping:{this.handlePing(e);return}case ct.GoAway:{this.handleGoAway(s);return}default:throw new h("Invalid frame type",Ga,{header:e})}else switch(e.type){case ct.Data:case ct.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new h("Invalid frame type",Ga,{header:e})}}handlePing(e){if(e.flag===Ze.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,Ze.ACK);else if(e.flag===Ze.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new h("Invalid frame flag",Ga,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new h("ping not requested",c3);if(this.activePing.id!==e)throw new h("ping doesn't match our id",l3);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Vr[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&Ze.SYN)===Ze.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===ct.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case ct.WindowUpdate:{i.handleWindowUpdate(e);return}case ct.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new h("both endpoints are clients",d3);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,qr.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===ct.Data){if(t===void 0)throw new h("invalid frame",Ga);this.source.push(new be(m3(e),t))}else this.source.push(m3(e))}sendPing(e,t=Ze.SYN){t===Ze.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:ct.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Vr.NormalTermination){this.log?.("sending GoAway reason=%s",Vr[e]),this.localGoAway=e,this.sendFrame({type:ct.GoAway,flag:0,streamID:0,length:e})}};function DB(r){return r!=null&&typeof r.then=="function"}function Vw(r={}){return e=>new Kd(e,r)}var x3={};oe(x3,{Ed25519PrivateKey:()=>Ri,Ed25519PublicKey:()=>$l,generateKeyPair:()=>LB,generateKeyPairFromSeed:()=>zw,unmarshalEd25519PrivateKey:()=>NB,unmarshalEd25519PublicKey:()=>BB});function Hr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ya=32,No=64,Md=32;function qw(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:Yw(r,e),publicKey:e}}function Hw(r){if(r.length!==Md)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:Yw(e,t),publicKey:t}}function $w(r,e){let t=r.subarray(0,Md);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Gw(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Yw(r,e){let t=new Uint8Array(No);for(let n=0;n<Md;n++)t[n]=r[n],t[Md+n]=e[n];return t}var tr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var b3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Ww(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=tr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",b3,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",b3,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",b3,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Wa(r,e){let n=await Ww().encrypt(r,e);return Ge.encode(n)}var Kt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Kt||(Kt={}));var w3;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(w3||(w3={}));(function(r){r.codec=()=>Re(w3)})(Kt||(Kt={}));var Rs;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Kt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Kt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Rs||(Rs={}));var As;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Kt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Kt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(As||(As={}));var $l=class{_key;constructor(e){this._key=za(e,Ya)}verify(e,t){return Gw(this._key,t,e)}marshal(){return this._key}get bytes(){return Rs.encode({Type:Kt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}},Ri=class{_key;_publicKey;constructor(e,t){this._key=za(e,No),this._publicKey=za(t,Ya)}sign(e){return $w(this._key,e)}get public(){return new $l(this._publicKey)}marshal(){return this._key}get bytes(){return As.encode({Type:Kt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Hr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function NB(r){if(r.length>No){r=za(r,No+Ya);let n=r.subarray(0,No),o=r.subarray(No,r.length);return new Ri(n,o)}r=za(r,No);let e=r.subarray(0,No),t=r.subarray(Ya);return new Ri(e,t)}function BB(r){return r=za(r,Ya),new $l(r)}async function LB(){let{privateKey:r,publicKey:e}=qw();return new Ri(r,e)}async function zw(r){let{privateKey:e,publicKey:t}=Hw(r);return new Ri(e,t)}function za(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var A3={};oe(A3,{MAX_RSA_KEY_SIZE:()=>Wl,RsaPrivateKey:()=>ja,RsaPublicKey:()=>Yl,fromJwk:()=>WB,generateKeyPair:()=>zB,unmarshalRsaPrivateKey:()=>S3,unmarshalRsaPublicKey:()=>YB});function Ai(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Is={};oe(Is,{exportToPem:()=>VB,importFromPem:()=>qB,jwkToPkcs1:()=>KB,jwkToPkix:()=>UB,pkcs1ToJwk:()=>OB,pkixToJwk:()=>MB});function OB(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Kn(t[1].toBigInt()),"base64url"),e:v(Kn(t[2].toBigInt()),"base64url"),d:v(Kn(t[3].toBigInt()),"base64url"),p:v(Kn(t[4].toBigInt()),"base64url"),q:v(Kn(t[5].toBigInt()),"base64url"),dp:v(Kn(t[6].toBigInt()),"base64url"),dq:v(Kn(t[7].toBigInt()),"base64url"),qi:v(Kn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function KB(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Mn(x(r.n,"base64url"))),B.fromBigInt(Mn(x(r.e,"base64url"))),B.fromBigInt(Mn(x(r.d,"base64url"))),B.fromBigInt(Mn(x(r.p,"base64url"))),B.fromBigInt(Mn(x(r.q,"base64url"))),B.fromBigInt(Mn(x(r.dp,"base64url"))),B.fromBigInt(Mn(x(r.dq,"base64url"))),B.fromBigInt(Mn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function MB(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Kn(t[0].toBigInt()),"base64url"),e:v(Kn(t[1].toBigInt()),"base64url")}}function UB(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Mn(x(r.n,"base64url"))),B.fromBigInt(Mn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Kn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Mn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var FB=16,v3=32,_3=1e4;async function VB(r,e){let t=tr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Ai(FB),a=await pt(Ye,e,i,{c:_3,dkLen:v3}),c=Ai(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:_3}),new B({value:v3}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
24
|
-
`)}async function qB(r,e){let t=tr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=HB(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Gl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=jw(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=jw(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return S3(n)}function HB(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Gl(s.valueBlock.value[0].getValue()),a=_3,c=v3;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Gl(l.valueBlock.value[1].getValue());return{cipherText:Gl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function jw(r){return Gl(r.valueBlock.value[2].getValue())}function Gl(r){return new Uint8Array(r,0,r.byteLength)}async function Xw(r){let e=await tr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Zw(e);return{privateKey:t[0],publicKey:t[1]}}async function R3(r){let t=[await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await $B(r)],n=await Zw({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Qw(r,e){let t=await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await tr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Jw(r,e,t){let n=await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return tr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Zw(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([tr.get().subtle.exportKey("jwk",r.privateKey),tr.get().subtle.exportKey("jwk",r.publicKey)])}async function $B(r){return tr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ud(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Wl=8192,Yl=class{_key;constructor(e){this._key=e}verify(e,t){return Jw(this._key,t,e)}marshal(){return Is.jwkToPkix(this._key)}get bytes(){return Rs.encode({Type:Kt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}},ja=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Ai(16)}sign(e){return Qw(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Yl(this._publicKey)}marshal(){return Is.jwkToPkcs1(this._key)}get bytes(){return As.encode({Type:Kt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Is.exportToPem(this,e);if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function S3(r){let e=Is.pkcs1ToJwk(r);if(Ud(e)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await R3(e);return new ja(t.privateKey,t.publicKey)}function YB(r){let e=Is.pkixToJwk(r);if(Ud(e)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Yl(e)}async function WB(r){if(Ud(r)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await R3(r);return new ja(e.privateKey,e.publicKey)}async function zB(r){if(r>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Xw(r);return new ja(e.privateKey,e.publicKey)}var k3={};oe(k3,{Secp256k1PrivateKey:()=>jl,Secp256k1PublicKey:()=>zl,generateKeyPair:()=>JB,unmarshalSecp256k1PrivateKey:()=>XB,unmarshalSecp256k1PublicKey:()=>QB});function eE(){return W.utils.randomPrivateKey()}function tE(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Hr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function rE(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Hr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function nE(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function oE(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function I3(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function sE(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var zl=class{_key;constructor(e){I3(e),this._key=e}verify(e,t){return rE(this._key,t,e)}marshal(){return nE(this._key)}get bytes(){return Rs.encode({Type:Kt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Hr(e)?{bytes:t}=await e:t=e.bytes,t}},jl=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??sE(e),oE(this._key),I3(this._publicKey)}sign(e){return tE(this._key,e)}get public(){return new zl(this._publicKey)}marshal(){return this._key}get bytes(){return As.encode({Type:Kt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function XB(r){return new jl(r)}function QB(r){return new zl(r)}async function JB(){let r=eE();return new jl(r)}var iE={rsa:A3,ed25519:x3,secp256k1:k3};function ZB(r){let e=Object.keys(iE).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function T3(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return iE[r];throw ZB(r)}async function aE(r,e){return T3(r).generateKeyPair(e??2048)}function cE(r,e){return e=(e??"rsa").toLowerCase(),T3(e),r.bytes}function lE(r,e){return e=(e??"rsa").toLowerCase(),T3(e),r.bytes}var Fd=async()=>{let r=await aE("Ed25519"),e=await eL(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function eL(r){return It(cE(r.public),lE(r))}var fE=Ue(uE(),1),tL=["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"],rL=tL.map(r=>new fE.Netmask(r));function nL(r){for(let e of rL)if(e.contains(r))return!0;return!1}function oL(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 $r(r){return da(r)?nL(r):ha(r)?oL(r):void 0}var Vd=globalThis.CustomEvent??Event;async function*Bo(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=he(),a=he(),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=he(),await i.promise),f)break;let m={done:!1};s.push(m),p().then(g=>{m.done=!0,m.ok=!0,m.value=g,o.dispatchEvent(new Vd("task-complete"))},g=>{m.done=!0,m.err=g,o.dispatchEvent(new Vd("task-complete"))})}c=!0,o.dispatchEvent(new Vd("task-complete"))}catch(p){l=p,o.dispatchEvent(new Vd("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*y(){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=he(),await a.promise),l!=null)throw l;if(n?yield*d():yield*y(),c&&s.length===0)break}}var dE="libp2p",hE="autonat",pE="1.0.0";var ve;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>Re(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>Re(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{if(y.lengthDelimited!==!1&&d.fork(),u.id!=null&&(d.uint32(10),d.bytes(u.id)),u.addrs!=null)for(let p of u.addrs)d.uint32(18),d.bytes(p);y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={addrs:[]},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.id=u.bytes();break;case 2:y.addrs.push(u.bytes());break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{y.lengthDelimited!==!1&&d.fork(),u.peer!=null&&(d.uint32(10),r.PeerInfo.codec().encode(u.peer,d)),y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{y.lengthDelimited!==!1&&d.fork(),u.status!=null&&(d.uint32(8),r.ResponseStatus.codec().encode(u.status,d)),u.statusText!=null&&(d.uint32(18),d.string(u.statusText)),u.addr!=null&&(d.uint32(26),d.bytes(u.addr)),y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.status=r.ResponseStatus.codec().decode(u);break;case 2:y.statusText=u.string();break;case 3:y.addr=u.bytes();break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.type!=null&&(f.uint32(8),r.MessageType.codec().encode(l.type,f)),l.dial!=null&&(f.uint32(18),r.Dial.codec().encode(l.dial,f)),l.dialResponse!=null&&(f.uint32(26),r.DialResponse.codec().encode(l.dialResponse,f)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(y&7);break}}return u})),c),r.encode=l=>Q(l,r.codec()),r.decode=l=>X(l,r.codec())})(ve||(ve={}));var D3=4,qd=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??dE}/${hE}/${pE}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new h("handleIncomingAutonatStream timeout",ao))};t.addEventListener("abort",n,{once:!0}),Ce(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await it(e.stream,i=>cr(i),async function*(i){let a=await mi(i);if(a==null){s.log("no message received"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=ve.decode(a)}catch(m){s.log.error("could not decode message",m),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let f,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{f=at(u.id)}catch(m){s.log.error("invalid PeerId",m),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",f),!e.connection.remotePeer.equals(f)){s.log("target peer %p did not equal sending peer %p",f,e.connection.remotePeer),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let d=u.addrs.map(m=>se(m)).filter(m=>{let g=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,g),g}).filter(m=>{let g=m.toOptions().host,b=!($r(g)??!1);return s.log.trace("host %s was public %s",g,b),b}).filter(m=>{let g=m.toOptions().host,b=!o.includes(g);return s.log.trace("host %s was not our host %s",g,b),b}).filter(m=>{let g=!!s.components.transportManager.transportForMultiaddr(m);return s.log.trace("transport for %a is supported %s",m,g),g}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${f.toString()}`)),m));if(d.length===0){s.log("no valid multiaddrs for %p in message",f),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",d.map(m=>m.toString()).join(", "),f);let y="",p=d[0];for await(let m of d){let g;p=m;try{if(g=await s.components.connectionManager.openConnection(m,{signal:t}),!g.remoteAddr.equals(m))throw s.log.error("tried to dial %a but dialed %a",m,g.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",f),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.OK,addr:g.remoteAddr.decapsulateCode(fe("p2p").code).bytes}});return}catch(b){s.log("could not dial %p",f,b),y=b.message}finally{g!=null&&await g.close()}}yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_DIAL_ERROR,statusText:y,addr:p.bytes}})},i=>ar(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!($r(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);Ce(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=ve.encode({type:ve.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await Fd()).toBytes(),c={},l=[],f=async u=>{let d=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let y=await o.components.connectionManager.openConnection(u.id,{signal:n}),p=await y.newStream(this.protocol,{signal:n});d=()=>{p.abort(new h("verifyAddress timeout",ao))},n.addEventListener("abort",d,{once:!0});let m=await it([s],b=>ar(b),p,b=>cr(b),async b=>mi(b));if(m==null){this.log("no response received from %p",y.remotePeer);return}let g=ve.decode(m);if(g.type!==ve.MessageType.DIAL_RESPONSE||g.dialResponse==null){this.log("invalid autonat response from %p",y.remotePeer);return}if(g.dialResponse.status===ve.ResponseStatus.OK){let b=y.remoteAddr.toOptions(),E;if(b.family===4)E=b.host.split(".")[0];else if(b.family===6)E=b.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',b.host);return}if(l.includes(E)){this.log("already have response from network segment %d - %s",E,b.host);return}l.push(E)}return g.dialResponse}catch(y){this.log.error("error asking remote to verify multiaddr",y)}finally{n.removeEventListener("abort",d)}};for await(let u of Bo(rn(this.components.peerRouting.getClosestPeers(a,{signal:n}),d=>async()=>f(d)),{concurrency:D3}))try{if(u==null)continue;let d=u.addr==null?t[0]:se(u.addr);if(this.log("autonat response for %a is %s",d,u.status),u.status===ve.ResponseStatus.E_BAD_REQUEST||u.status===ve.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(d))){this.log("peer reported %a as %s but it was not in our observed address list",d,u.status);continue}let y=d.toString();if(c[y]==null&&(c[y]={success:0,failure:0}),u.status===ve.ResponseStatus.OK?c[y].success++:u.status===ve.ResponseStatus.E_DIAL_ERROR&&c[y].failure++,c[y].success===D3){this.log("%a is externally dialable",d),e.confirmObservedAddr(d);return}if(c[y].failure===D3){this.log("%a is not externally dialable",d),e.removeObservedAddr(d);return}}catch(d){this.log.error("could not verify external address",d)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function mE(r={}){return e=>new qd(e,r)}var uL=z("dns4"),fL=z("dns6"),dL=z("dnsaddr"),Ts=yt(z("dns"),dL,uL,fL),Hd=yt(z("ip4"),z("ip6")),Xa=yt(ce(Hd,z("tcp")),ce(Ts,z("tcp"))),$d=ce(Hd,z("udp")),hL=ce($d,z("utp")),pL=ce($d,z("quic")),mL=ce($d,z("quic-v1")),P3=yt(ce(Xa,z("ws")),ce(Ts,z("ws"))),Qa=yt(ce(P3,z("p2p")),P3),C3=yt(ce(Xa,z("wss")),ce(Ts,z("wss")),ce(Xa,z("tls"),z("ws")),ce(Ts,z("tls"),z("ws"))),Ii=yt(ce(C3,z("p2p")),C3),N3=yt(ce(Xa,z("http")),ce(Hd,z("http")),ce(Ts,z("http"))),B3=yt(ce(Xa,z("https")),ce(Hd,z("https")),ce(Ts,z("https"))),yE=ce($d,z("webrtc-direct"),z("certhash")),wE=yt(ce(yE,z("p2p")),yE),gE=ce(mL,z("webtransport"),z("certhash"),z("certhash")),EE=yt(ce(gE,z("p2p")),gE),xE=yt(ce(Qa,z("p2p-webrtc-star"),z("p2p")),ce(Ii,z("p2p-webrtc-star"),z("p2p")),ce(Qa,z("p2p-webrtc-star")),ce(Ii,z("p2p-webrtc-star"))),Tae=yt(ce(Qa,z("p2p-websocket-star"),z("p2p")),ce(Ii,z("p2p-websocket-star"),z("p2p")),ce(Qa,z("p2p-websocket-star")),ce(Ii,z("p2p-websocket-star"))),vE=yt(ce(N3,z("p2p-webrtc-direct"),z("p2p")),ce(B3,z("p2p-webrtc-direct"),z("p2p")),ce(N3,z("p2p-webrtc-direct")),ce(B3,z("p2p-webrtc-direct"))),ki=yt(P3,C3,N3,B3,xE,vE,Xa,hL,pL,Ts,wE,EE),Dae=yt(ce(ki,z("p2p-stardust"),z("p2p")),ce(ki,z("p2p-stardust"))),ks=yt(ce(ki,z("p2p")),xE,vE,wE,EE,z("p2p")),bE=yt(ce(ks,z("p2p-circuit"),ks),ce(ks,z("p2p-circuit")),ce(z("p2p-circuit"),ks),ce(ki,z("p2p-circuit")),ce(z("p2p-circuit"),ki),z("p2p-circuit")),_E=()=>yt(ce(bE,_E),bE),pn=_E(),SE=yt(ce(pn,ks,pn),ce(ks,pn),ce(pn,ks),pn,ks);var Pae=yt(ce(pn,z("webrtc"),z("p2p")),ce(pn,z("webrtc")),ce(ki,z("webrtc"),z("p2p")),ce(ki,z("webrtc")),z("webrtc"));function RE(r){function e(t){let n;try{n=se(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function ce(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:RE(e),partialMatch:e}}function yt(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:RE(e),partialMatch:e}}function z(r){let e=r;function t(o){let s;try{s=se(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var yL="bootstrap",gL=50,bL=12e4,wL=1e3,L3=class extends Fe{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??wL,this.list=[];for(let n of t.list){if(!SE.matches(n)){this.log.error("Invalid multiaddr");continue}let o=se(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:Ae(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[zs]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??yL]:{value:this._init.tagValue??gL,ttl:this._init.tagTTL??bL}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function IE(r){return e=>new L3(e,r)}var M3={};oe(M3,{Ed25519PrivateKey:()=>Ti,Ed25519PublicKey:()=>Ql,generateKeyPair:()=>SL,generateKeyPairFromSeed:()=>BE,unmarshalEd25519PrivateKey:()=>vL,unmarshalEd25519PublicKey:()=>_L});function Gr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ja=32,Lo=64,Gd=32;function kE(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:CE(r,e),publicKey:e}}function TE(r){if(r.length!==Gd)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:CE(e,t),publicKey:t}}function DE(r,e){let t=r.subarray(0,Gd);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function PE(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function CE(r,e){let t=new Uint8Array(Lo);for(let n=0;n<Gd;n++)t[n]=r[n],t[Gd+n]=e[n];return t}var rr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var O3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function NE(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=rr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",O3,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",O3,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",O3,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Za(r,e){let n=await NE().encrypt(r,e);return Ge.encode(n)}var et;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(et||(et={}));var K3;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(K3||(K3={}));(function(r){r.codec=()=>Re(K3)})(et||(et={}));var Un;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),et.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=et.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Un||(Un={}));var Fn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),et.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=et.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Fn||(Fn={}));var Ql=class{_key;constructor(e){this._key=ec(e,Ja)}verify(e,t){return PE(this._key,t,e)}marshal(){return this._key}get bytes(){return Un.encode({Type:et.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}},Ti=class{_key;_publicKey;constructor(e,t){this._key=ec(e,Lo),this._publicKey=ec(t,Ja)}sign(e){return DE(this._key,e)}get public(){return new Ql(this._publicKey)}marshal(){return this._key}get bytes(){return Fn.encode({Type:et.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Gr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vL(r){if(r.length>Lo){r=ec(r,Lo+Ja);let n=r.subarray(0,Lo),o=r.subarray(Lo,r.length);return new Ti(n,o)}r=ec(r,Lo);let e=r.subarray(0,Lo),t=r.subarray(Ja);return new Ti(e,t)}function _L(r){return r=ec(r,Ja),new Ql(r)}async function SL(){let{privateKey:r,publicKey:e}=kE();return new Ti(r,e)}async function BE(r){let{privateKey:e,publicKey:t}=TE(r);return new Ti(e,t)}function ec(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var H3={};oe(H3,{MAX_RSA_KEY_SIZE:()=>eu,RsaPrivateKey:()=>tc,RsaPublicKey:()=>Zl,fromJwk:()=>OL,generateKeyPair:()=>KL,unmarshalRsaPrivateKey:()=>V3,unmarshalRsaPublicKey:()=>LL});function Di(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Ds={};oe(Ds,{exportToPem:()=>DL,importFromPem:()=>PL,jwkToPkcs1:()=>AL,jwkToPkix:()=>kL,pkcs1ToJwk:()=>RL,pkixToJwk:()=>IL});function RL(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Vn(t[1].toBigInt()),"base64url"),e:v(Vn(t[2].toBigInt()),"base64url"),d:v(Vn(t[3].toBigInt()),"base64url"),p:v(Vn(t[4].toBigInt()),"base64url"),q:v(Vn(t[5].toBigInt()),"base64url"),dp:v(Vn(t[6].toBigInt()),"base64url"),dq:v(Vn(t[7].toBigInt()),"base64url"),qi:v(Vn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function AL(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(qn(x(r.n,"base64url"))),B.fromBigInt(qn(x(r.e,"base64url"))),B.fromBigInt(qn(x(r.d,"base64url"))),B.fromBigInt(qn(x(r.p,"base64url"))),B.fromBigInt(qn(x(r.q,"base64url"))),B.fromBigInt(qn(x(r.dp,"base64url"))),B.fromBigInt(qn(x(r.dq,"base64url"))),B.fromBigInt(qn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function IL(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Vn(t[0].toBigInt()),"base64url"),e:v(Vn(t[1].toBigInt()),"base64url")}}function kL(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(qn(x(r.n,"base64url"))),B.fromBigInt(qn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Vn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function qn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var TL=16,U3=32,F3=1e4;async function DL(r,e){let t=rr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Di(TL),a=await pt(Ye,e,i,{c:F3,dkLen:U3}),c=Di(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:F3}),new B({value:U3}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
25
|
-
`)}async function PL(r,e){let t=rr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=CL(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Jl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=LE(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=LE(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return V3(n)}function CL(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Jl(s.valueBlock.value[0].getValue()),a=F3,c=U3;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Jl(l.valueBlock.value[1].getValue());return{cipherText:Jl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function LE(r){return Jl(r.valueBlock.value[2].getValue())}function Jl(r){return new Uint8Array(r,0,r.byteLength)}async function OE(r){let e=await rr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await UE(e);return{privateKey:t[0],publicKey:t[1]}}async function q3(r){let t=[await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await NL(r)],n=await UE({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function KE(r,e){let t=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await rr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function ME(r,e,t){let n=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return rr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function UE(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([rr.get().subtle.exportKey("jwk",r.privateKey),rr.get().subtle.exportKey("jwk",r.publicKey)])}async function NL(r){return rr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Wd(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var eu=8192,Zl=class{_key;constructor(e){this._key=e}verify(e,t){return ME(this._key,t,e)}marshal(){return Ds.jwkToPkix(this._key)}get bytes(){return Un.encode({Type:et.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}},tc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Di(16)}sign(e){return KE(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Zl(this._publicKey)}marshal(){return Ds.jwkToPkcs1(this._key)}get bytes(){return Fn.encode({Type:et.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Ds.exportToPem(this,e);if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function V3(r){let e=Ds.pkcs1ToJwk(r);if(Wd(e)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await q3(e);return new tc(t.privateKey,t.publicKey)}function LL(r){let e=Ds.pkixToJwk(r);if(Wd(e)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Zl(e)}async function OL(r){if(Wd(r)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await q3(r);return new tc(e.privateKey,e.publicKey)}async function KL(r){if(r>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await OE(r);return new tc(e.privateKey,e.publicKey)}var G3={};oe(G3,{Secp256k1PrivateKey:()=>ru,Secp256k1PublicKey:()=>tu,generateKeyPair:()=>VL,unmarshalSecp256k1PrivateKey:()=>UL,unmarshalSecp256k1PublicKey:()=>FL});function FE(){return W.utils.randomPrivateKey()}function VE(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Gr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function qE(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Gr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function HE(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function $E(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function $3(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function GE(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var tu=class{_key;constructor(e){$3(e),this._key=e}verify(e,t){return qE(this._key,t,e)}marshal(){return HE(this._key)}get bytes(){return Un.encode({Type:et.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Gr(e)?{bytes:t}=await e:t=e.bytes,t}},ru=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??GE(e),$E(this._key),$3(this._publicKey)}sign(e){return VE(this._key,e)}get public(){return new tu(this._publicKey)}marshal(){return this._key}get bytes(){return Fn.encode({Type:et.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function UL(r){return new ru(r)}function FL(r){return new tu(r)}async function VL(){let r=FE();return new ru(r)}var Pi={rsa:H3,ed25519:M3,secp256k1:G3};function YE(r){let e=Object.keys(Pi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function WE(r){let e=Un.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case et.RSA:return Pi.rsa.unmarshalRsaPublicKey(t);case et.Ed25519:return Pi.ed25519.unmarshalEd25519PublicKey(t);case et.Secp256k1:return Pi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw YE(e.Type??"unknown")}}async function zE(r){let e=Fn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case et.RSA:return Pi.rsa.unmarshalRsaPrivateKey(t);case et.Ed25519:return Pi.ed25519.unmarshalEd25519PrivateKey(t);case et.Secp256k1:return Pi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw YE(e.Type??"RSA")}}var jE={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var nu;(function(r){let e;r.codec=()=>(e==null&&(e=J((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)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(nu||(nu={}));var mn=class r{static createFromProtobuf=async e=>{let t=nu.decode(e),n=await It(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=XE(n,o,s),c=await(await zE(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new h("envelope signature is not valid for the given domain",jE.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=nu.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return O(this.marshal(),e.marshal())}async validate(e){let t=XE(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return WE(this.peerId.publicKey).verify(t.subarray(),this.signature)}},XE=(r,e,t)=>{let n=x(r),o=st(n.byteLength),s=st(e.length),i=st(t.length);return new be(o,n,s,e,i,t)};function QE(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 JE="libp2p-peer-record",ZE=Uint8Array.from([3,1]);var ou;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=J((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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>Q(s,n.codec()),n.decode=s=>X(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=J((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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>Q(n,r.codec()),r.decode=n=>X(n,r.codec())})(ou||(ou={}));var Sr=class r{static createFromProtobuf=e=>{let t=ou.decode(e),n=at(t.peerId),o=(t.addresses??[]).map(i=>se(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=JE;static CODEC=ZE;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=ou.encode({peerId:this.peerId.toBytes(),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||!QE(this.multiaddrs,e.multiaddrs))}};function lt(r,e){let t=On(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var ex="/libp2p/relay";var tx="circuit-relay-relay";var ale=BigInt(131072),Ci="/libp2p/circuit/relay/0.2.0/hop",Y3="/libp2p/circuit/relay/0.2.0/stop",cle=30*1e3,lle=30*1e3,W3=300;var z3="ERR_RELAYED_DIAL",rx="ERR_HOP_REQUEST_FAILED";var Ps;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),rc.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),zd.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),nc.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),Mt.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=rc.codec().decode(o,o.uint32());break;case 3:i.reservation=zd.codec().decode(o,o.uint32());break;case 4:i.limit=nc.codec().decode(o,o.uint32());break;case 5:i.status=Mt.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Ps||(Ps={}));var Hn;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),rc.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),nc.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),Mt.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=rc.codec().decode(o,o.uint32());break;case 3:i.limit=nc.codec().decode(o,o.uint32());break;case 4:i.status=Mt.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Hn||(Hn={}));var rc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(rc||(rc={}));var zd;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(zd||(zd={}));var nc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(nc||(nc={}));var Mt;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(Mt||(Mt={}));var j3;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(j3||(j3={}));(function(r){r.codec=()=>Re(j3)})(Mt||(Mt={}));var nx;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(nx||(nx={}));async function ox(r){let e=new TextEncoder().encode(r),t=await K.digest(e);return de.createV0(t)}function X3(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var jd=class extends Fe{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Ci,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(Ci)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await ox(ex),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var Cs=class extends To{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var HL=60*1e3*10,$L=60*1e3*5,GL=30*1e3,Xd=class extends Fe{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Lt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Cs({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(X3(n.reservation.expire)>HL){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((f,u)=>(u.type==="discovered"&&f++,f),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=X3(i.expire),c=Math.min(Math.max(a-$L,GL),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(f=>{this.log.error("could not refresh reservation to relay %p",e,f)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[tx]:{value:1,ttl:a}}}),await this.transportManager.listen([se(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Ci,t),s=lt(n).pb(Ps);await s.write({type:Ps.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===Mt.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let f of i.reservation.addrs)if(O(l,f)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function Q3(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async d=>{await a(d),u(!0)};let c=e.abort.bind(e);e.abort=d=>{c(d),u(!0)};let l=e.sink.bind(e);e.sink=async d=>{try{await l(d)}catch(y){y.type!=="aborted"&&o.error("%s error in sink",t,y)}finally{i=!0,u()}};let f={log:o,sink:e.sink,source:async function*(){try{for await(let d of e.source)d instanceof Uint8Array?yield d:yield*d}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(d){d===!0&&(s=!0,i=!0),s&&i&&f.timeline.close==null&&(f.timeline.close=Date.now())}return f}var J3=class extends Fe{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new Lt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new h("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>se(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function sx(r){return new J3(r)}var WL=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(se)}catch{return!1}return!0},Z3={maxInboundStopStreams:W3,maxOutboundStopStreams:W3,stopTimeout:3e4},Qd=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??Z3.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Z3.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Z3.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new jd(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new Xd(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(Y3,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(Y3),this.started=!1}[Sn]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw this.log.error(p,e),new h(p,z3)}let n=e.toString().split("/p2p-circuit"),o=se(n[0]),s=se(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(p),new h(p,z3)}let c=Ae(i),l=Ae(a),f=!1,d=this.connectionManager.getConnections(c)[0];d==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),d=await this.connectionManager.openConnection(c,t),f=!0);let y;try{return y=await d.newStream(Ci),await this.connectV2({stream:y,connection:d,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:f})}catch(p){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,p),y?.abort(p),f&&await d.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=lt(e),l=c.pb(Ps);await l.write({type:Ps.Type.CONNECT,peer:{id:n.toBytes(),addrs:[se(o).bytes]}});let f=await l.read();if(f.status!==Mt.OK)throw new h(`failed to connect via relay with status ${f?.status?.toString()??"undefined"}`,rx);let u=Q3({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return sx({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>pn.matches(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let n=AbortSignal.timeout(this.stopTimeout),o=lt(t).pb(Hn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==Hn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!WL(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=at(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=Q3({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function ey(r={}){return e=>new Qd(e,r)}var ix=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},zL=new WeakMap;function jL({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(ix());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(ix())},f=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((d,y)=>{i=()=>{f(),d(n)},a=y,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),zL.set(u,()=>{c(s),s=null,i()}),u}}var XL=jL(),Jd=XL;var yn;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(yn||(yn={}));var QL=r=>r.toString().split("/").slice(1),su=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),gt=r=>({match:e=>su(t=>t===r).match(e),pattern:r}),th=()=>({match:r=>su(e=>typeof e=="string").match(r),pattern:"{string}"}),ax=()=>({match:r=>su(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Yr=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ie.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Zd=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{y2.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),$n=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Gn=(...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},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),bt=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function St(...r){function e(o){let s=QL(o);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{matches:t,exactMatch:n}}var ry=bt(gt("dns4"),th()),ny=bt(gt("dns6"),th()),oy=bt(gt("dnsaddr"),th()),cx=bt(gt("dns"),th()),aue=St(ry),cue=St(ny),lue=St(oy),lx=St(Gn(cx,oy,ry,ny)),ux=bt(gt("ip4"),su(da)),fx=bt(gt("ip6"),su(ha)),dx=Gn(ux,fx),iu=Gn(dx,cx,ry,ny,oy),hx=St(iu),uue=St(ux),fue=St(fx),px=St(dx),rh=bt(iu,gt("tcp"),ax()),au=bt(iu,gt("udp"),ax()),JL=Gn(rh,au),due=St(rh),hue=St(au),sy=bt(au,gt("quic")),nh=bt(au,gt("quic-v1")),ZL=Gn(sy,nh),pue=St(sy),mue=St(nh),ty=Gn(iu,rh,au,sy,nh),mx=Gn(bt(ty,gt("ws"),$n(Yr()))),yue=St(mx),yx=Gn(bt(ty,gt("wss"),$n(Yr())),bt(ty,gt("tls"),gt("ws"),$n(Yr()))),gue=St(yx),gx=bt(JL,gt("webrtc-direct"),Zd(),$n(Zd()),$n(Yr())),bx=St(gx),wx=bt(nh,gt("webtransport"),Zd(),Zd(),$n(Yr())),oh=St(wx),eh=Gn(mx,yx,bt(rh,$n(Yr())),bt(ZL,$n(Yr())),bt(iu,$n(Yr())),gx,wx,Yr()),bue=St(eh),eO=bt(eh,gt("p2p-circuit"),Yr()),cu=St(eO),tO=Gn(bt(eh,gt("p2p-circuit"),gt("webrtc"),Yr()),bt(eh,gt("webrtc"),$n(Yr())),gt("webrtc")),Ex=St(tO);function iy(r,e){return cu.matches(r)||e.transportForMultiaddr(r)==null?!1:lx.matches(r)?!0:px.matches(r)?$r(r.toOptions().host)===!1:!1}var xx=1024*4,vx=100,sh={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},ih=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??sh.timeout,this.retries=t.retries??sh.retries,this.maxInboundStreams=t.maxInboundStreams??sh.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??sh.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(lu,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(lu,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(lu),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([lu],{signal:o.signal,runOnTransientConnection:!0});let s=lt(t,{maxDataLength:xx}).pb(yn);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:yn.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==yn.Type.CONNECT)throw this.log("A sent wrong message type"),new h("DCUtR message type was incorrect",js);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new h("DCUtR connect message had no multiaddrs",js);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:yn.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await Jd(l/2),this.log("B dialing",c);let f=await this.connectionManager.openConnection(c,{signal:o.signal,priority:vx});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,f.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>iy(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=lt(e,{maxDataLength:xx}).pb(yn);this.log("A receiving connect");let s=await o.read(n);if(s.type!==yn.Type.CONNECT)throw this.log("B sent wrong message type"),new h("DCUtR message type was incorrect",js);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new h("DCUtR connect message had no multiaddrs",js);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new h("DCUtR connect message had no dialable multiaddrs",js);if(this.log("A sending connect"),await o.write({type:yn.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==yn.Type.SYNC)throw new h("DCUtR message type was incorrect",js);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:vx,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=se(n);if(!iy(o,this.transportManager))continue;t.push(o)}catch{}return t}};var lu="/libp2p/dcutr";function _x(r={}){return e=>new ih(e,r)}var Sx="0.1.0",Rx="id",Ax="id/push",Ix="1.0.0",kx="1.0.0";var Px=Ue(Dx(),1),ay=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,ah=(0,Px.default)(),ch=ay&&!ah,Cx=ah&&!ay,Nx=ah&&ay,Bx=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!ah,lh=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Oue=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",Lx=typeof navigator<"u"&&navigator.product==="ReactNative";var Ni;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ni||(Ni={}));var cy=1024*8,Wr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},uh=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??Wr.protocolPrefix}/${Rx}/${Ix}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Wr.protocolPrefix}/${Ax}/${kx}`,this.timeout=t.timeout??Wr.timeout,this.maxInboundStreams=t.maxInboundStreams??Wr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Wr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Wr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Wr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Wr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Wr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Wr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Wr.protocolPrefix}/${Sx}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Wr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(Bx||Cx?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(ch||lh||Nx||Lx)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:x(this.host.agentVersion),ProtocolVersion:x(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(f=>f.decapsulateCode(fe("p2p").code)),n=new Sr({peerId:this.peerId,multiaddrs:t}),o=await mn.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=v(i.metadata.get("AgentVersion")??x(this.host.agentVersion)),c=v(i.metadata.get("ProtocolVersion")??x(this.host.protocolVersion)),l=e.map(async f=>{let u,d=AbortSignal.timeout(this.timeout);Ce(1/0,d);try{u=await f.newStream(this.identifyPushProtocolStr,{signal:d,runOnTransientConnection:this.runOnTransientConnection}),await lt(u,{maxDataLength:this.maxIdentifyMessageSize??cy}).pb(Ni).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:d}),await u.close({signal:d})}catch(y){this.log.error("could not push identify update to peer",y),u?.abort(y)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==r5)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);Ce(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await lt(n,{maxDataLength:this.maxIdentifyMessageSize??cy}).pb(Ni).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new h("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await It(o);if(!e.remotePeer.equals(a))throw new h("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new h("identified peer is our own peer id?","ERR_INVALID_PEER");let c=nO(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);Ce(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(fe("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new Sr({peerId:this.peerId,multiaddrs:a});c=(await mn.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;hx.matches(t.remoteAddr)||(l=void 0),await lt(n).pb(Ni).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await lt(n,{maxDataLength:this.maxIdentifyMessageSize??cy}).pb(Ni).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new h("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:se(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await It(t.publicKey)).equals(e.remotePeer)))throw new h("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await mn.openAndCertify(i,Sr.DOMAIN),c=Sr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new h("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new h("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(f){if(f.code!=="ERR_NOT_FOUND")throw f}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let f=await mn.createFromProtobuf(l.peerRecordEnvelope),u=Sr.createFromProtobuf(f.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(f=>({isCertified:!0,multiaddr:f})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=x(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=x(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>se(i)),observedAddr:t.observedAddr==null?void 0:se(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function nO(r){if(r!=null&&r.length>0)try{return se(r)}catch{}}function Ox(r={}){return e=>new uh(e,r)}var Kx="/ipfs/kad/1.0.0",Mx="/dht/record",ly="/dht/provider";var Ux;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ux||(Ux={}));var Ie;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(Ie||(Ie={}));var fh;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(fh||(fh={}));(function(r){r.codec=()=>Re(fh)})(Ie||(Ie={}));var sc;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(sc||(sc={}));var uy;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(uy||(uy={}));(function(r){r.codec=()=>Re(uy)})(sc||(sc={}));var oc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),sc.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:ft(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=sc.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(oc||(oc={}));var zr;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&fh[t.type]!==0&&(n.uint32(8),Ie.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),oc.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),oc.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:Ie.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=Ie.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(oc.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(oc.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(zr||(zr={}));function fy(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:Ie[r.type]};return e.onProgress?.(new Ct("kad-dht:query:send-query",{detail:t})),t}function uu(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new Ct("kad-dht:query:peer-response",{detail:t})),t}function dh(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Ct("kad-dht:query:final-peer",{detail:t})),t}function Rr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Ct("kad-dht:query:query-error",{detail:t})),t}function dy(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Ct("kad-dht:query:provider",{detail:t})),t}function fu(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Ct("kad-dht:query:value",{detail:t})),t}function hy(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Ct("kad-dht:query:dial-peer",{detail:t})),t}var du;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.key=t.bytes();break;case 2:o.value=t.bytes();break;case 5:o.timeReceived=t.string();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(du||(du={}));function Fx(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function Vx(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var Ut=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return du.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:Fx(this.timeReceived)}}static deserialize(e){let t=du.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=Vx(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function qx(r,e,t){if(t.length===0){let i="No records given";throw new h(i,"ERR_NO_RECORDS_RECEIVED")}let o=v(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new h(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new h(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function sO(r,e){return 0}var Hx={pk:sO};async function ic(r,e){let t=e.key,o=v(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new h(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var iO=async(r,e)=>{if(!(r instanceof Uint8Array))throw new h('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new h("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(v(r.subarray(0,4))!=="/pk/")throw new h("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await K.digest(e);if(!O(n,o.bytes))throw new h("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},$x={pk:iO};var aO=x("/pk/");function Gx(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=$r(n);return o==null?!0:!o})}}async function Ns(r){return(await K.digest(r)).digest}async function gn(r){return Ns(r.toBytes())}function Oo(r){return new qe(`${Mx}/${v(r,"base32")}`,!1)}function Yx(r){return le([aO,r.toBytes()])}function Wx(r){return v(r.subarray(0,4))==="/pk/"}function zx(r){return at(r.subarray(4))}function py(r,e){let t=new Date;return new Ut(r,e,t).serialize()}function jx(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var cO=290,lO=54,uO=55,fO=56,dO=4,hO=41;function Xx(r){let e=r.stringTuples();for(let t of e)if(t[0]===cO)return!1;if(e[0][0]===lO||e[0][0]===uO||e[0][0]===fO)return!0;if(e[0][0]===dO||e[0][0]===hO){let t=$r(`${e[0][1]}`);return t==null||!t}return!1}var hh=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async putLocal(e,t){let n=Oo(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=Oo(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=Ut.deserialize(n);return await ic(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=py(e,n);for(let{value:i,from:a}of t){if(O(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let f=Oo(e);this.log(`Storing corrected record for key ${f.toString()}`),await this.components.datastore.put(f,s.subarray())}catch(f){this.log.error("Failed error correcting self",f)}continue}let c=!1,l={type:Ie.PUT_VALUE,key:e,record:s};for await(let f of this.network.sendRequest(a,l,o))f.name==="PEER_RESPONSE"&&f.record!=null&&O(f.record.value,Ut.deserialize(s).value)&&(c=!0),yield f;c||(yield Rr({from:a,error:new h("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=py(e,t),s=Oo(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*it(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>rn(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:Ie.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let f of this.network.sendRequest(a.peer.id,l,n))c.push(f),f.name==="PEER_RESPONSE"&&(f.record!=null&&O(f.record.value,Ut.deserialize(o).value)||c.push(Rr({from:a.peer.id,error:new h("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Bo(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=qx(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new h("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield fu({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield fu({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function Qx(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function hu(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:at(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>se(e))}}var ph=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:Ie.ADD_PROVIDER,key:e.multihash.bytes,providers:[Qx({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(Rr({from:a.peer.id,error:l},n))}return c};yield*it(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>rn(a,c=>i(c)),a=>Bo(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let f of i.slice(0,n))try{let u=await this.components.peerStore.get(f);l.push({id:f,multiaddrs:u.addresses.map(({multiaddr:d})=>d)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",f)}yield uu({from:this.components.peerId,messageType:Ie.GET_PROVIDERS,providers:l},t),yield dy({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:f}){let u={type:Ie.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:f})},c=new mt(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let f=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),f.push(u));if(f.length>0&&(yield dy({from:l.from,providers:f},t)),c.size===n)return}}};var mh=class extends Fe{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Wc("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield hy({peer:e},n),yield fy({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield uu({from:e,messageType:c.type,closer:c.closer.map(hu),providers:c.providers.map(hu),record:c.record==null?void 0:Ut.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield Rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Wc("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield hy({peer:e},n),yield fy({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield uu({from:e,messageType:o},n)}catch(i){yield Rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=lt(e);await o.write(t,zr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=lt(e);await o.write(t,zr,n);let s=await o.read(zr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:hu(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:hu(i)})}),s}};var tt={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Jx={SHA1:20,SHA256:32,SHA512:64};var pO={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},mO=async(r,e)=>{let t=await tt.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function Zx(r,e){let t=pO[r],n=await tt.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return mO(n,o)},length:Jx[r]}}var wh={};oe(wh,{Ed25519PrivateKey:()=>Mo,Ed25519PublicKey:()=>Bi,MAX_RSA_KEY_SIZE:()=>Oi,RsaPrivateKey:()=>Ls,RsaPublicKey:()=>Li,Secp256k1PrivateKey:()=>Mi,Secp256k1PublicKey:()=>Ki,generateEphemeralKeyPair:()=>uv,generateKeyPair:()=>FO,generateKeyPairFromSeed:()=>VO,importKey:()=>GO,keyStretcher:()=>hv,keysPBM:()=>lc,marshalPrivateKey:()=>$O,marshalPublicKey:()=>HO,supportedKeys:()=>Uo,unmarshalPrivateKey:()=>Rv,unmarshalPublicKey:()=>qO});var xy={};oe(xy,{Ed25519PrivateKey:()=>Mo,Ed25519PublicKey:()=>Bi,generateKeyPair:()=>EO,generateKeyPairFromSeed:()=>Ey,unmarshalEd25519PrivateKey:()=>bO,unmarshalEd25519PublicKey:()=>wO});function gy(r,e){let t=x(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=le([new Uint8Array(e-t.length),t])}return t}function jr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ac=32,Ko=64,yh=32;function ev(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:ov(r,e),publicKey:e}}function tv(r){if(r.length!==yh)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:ov(e,t),publicKey:t}}function rv(r,e){let t=r.subarray(0,yh);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function nv(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function ov(r,e){let t=new Uint8Array(Ko);for(let n=0;n<yh;n++)t[n]=r[n],t[yh+n]=e[n];return t}var by={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function gh(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=tt.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",by,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",by,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",by,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function cc(r,e){let n=await gh().encrypt(r,e);return Ge.encode(n)}var lc={};oe(lc,{KeyType:()=>je,PrivateKey:()=>wn,PublicKey:()=>bn});var je;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(je||(je={}));var wy;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(wy||(wy={}));(function(r){r.codec=()=>Re(wy)})(je||(je={}));var bn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(bn||(bn={}));var wn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(wn||(wn={}));var Bi=class{_key;constructor(e){this._key=uc(e,ac)}verify(e,t){return nv(this._key,t,e)}marshal(){return this._key}get bytes(){return bn.encode({Type:je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}},Mo=class{_key;_publicKey;constructor(e,t){this._key=uc(e,Ko),this._publicKey=uc(t,ac)}sign(e){return rv(this._key,e)}get public(){return new Bi(this._publicKey)}marshal(){return this._key}get bytes(){return wn.encode({Type:je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return jr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function bO(r){if(r.length>Ko){r=uc(r,Ko+ac);let n=r.subarray(0,Ko),o=r.subarray(Ko,r.length);return new Mo(n,o)}r=uc(r,Ko);let e=r.subarray(0,Ko),t=r.subarray(ac);return new Mo(e,t)}function wO(r){return r=uc(r,ac),new Bi(r)}async function EO(){let{privateKey:r,publicKey:e}=ev();return new Mo(r,e)}async function Ey(r){let{privateKey:e,publicKey:t}=tv(r);return new Mo(e,t)}function uc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var iv={"P-256":256,"P-384":384,"P-521":521},xO=Object.keys(iv),vy=xO.join(" / ");async function av(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new h(`Unknown curve: ${r}. Must be ${vy}`,"ERR_INVALID_CURVE");let e=await tt.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await tt.get().subtle.importKey("jwk",_O(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await tt.get().subtle.importKey("jwk",lv(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await tt.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,iv[r]);return new Uint8Array(l,0,l.byteLength)},n=await tt.get().subtle.exportKey("jwk",e.publicKey);return{key:vO(n),genSharedKey:t}}var cv={"P-256":32,"P-384":48,"P-521":66};function vO(r){if(r.crv==null||r.x==null||r.y==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new h(`Unknown curve: ${r.crv}. Must be ${vy}`,"ERR_INVALID_CURVE");let e=cv[r.crv];return le([Uint8Array.from([4]),gy(r.x,e),gy(r.y,e)],1+e*2)}function lv(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new h(`Unknown curve: ${r}. Must be ${vy}`,"ERR_INVALID_CURVE");let t=cv[r];if(!O(e.subarray(0,1),Uint8Array.from([4])))throw new h("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:v(e.subarray(1,t+1),"base64url"),y:v(e.subarray(1+t),"base64url"),ext:!0}}var _O=(r,e)=>({...lv(r,e.public),d:v(e.private,"base64url")});var uv=av;async function fv(r,e){let t=Ge.decode(r);return gh().decrypt(t,e)}var dv={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function hv(r,e,t){let n=dv[r];if(n==null){let E=Object.keys(dv).join(" / ");throw new h(`unknown cipher type '${r}'. Must be ${E}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new h("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=x("key expansion"),c=2*(s+o+i),l=await Zx(e,t),f=await l.digest(a),u=[],d=0;for(;d<c;){let E=await l.digest(le([f,a])),w=E.length;d+w>c&&(w=c-d),u.push(E),d+=w,f=await l.digest(f)}let y=c/2,p=le(u),m=p.subarray(0,y),g=p.subarray(y,c),b=E=>({iv:E.subarray(0,s),cipherKey:E.subarray(s,s+o),macKey:E.subarray(s+o)});return{k1:b(m),k2:b(g)}}var ky={};oe(ky,{MAX_RSA_KEY_SIZE:()=>Oi,RsaPrivateKey:()=>Ls,RsaPublicKey:()=>Li,fromJwk:()=>BO,generateKeyPair:()=>LO,unmarshalRsaPrivateKey:()=>Ay,unmarshalRsaPublicKey:()=>NO});function Yn(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Bs={};oe(Bs,{exportToPem:()=>TO,importFromPem:()=>Ry,jwkToPkcs1:()=>RO,jwkToPkix:()=>IO,pkcs1ToJwk:()=>SO,pkixToJwk:()=>AO});function SO(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Wn(t[1].toBigInt()),"base64url"),e:v(Wn(t[2].toBigInt()),"base64url"),d:v(Wn(t[3].toBigInt()),"base64url"),p:v(Wn(t[4].toBigInt()),"base64url"),q:v(Wn(t[5].toBigInt()),"base64url"),dp:v(Wn(t[6].toBigInt()),"base64url"),dq:v(Wn(t[7].toBigInt()),"base64url"),qi:v(Wn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function RO(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(zn(x(r.n,"base64url"))),B.fromBigInt(zn(x(r.e,"base64url"))),B.fromBigInt(zn(x(r.d,"base64url"))),B.fromBigInt(zn(x(r.p,"base64url"))),B.fromBigInt(zn(x(r.q,"base64url"))),B.fromBigInt(zn(x(r.dp,"base64url"))),B.fromBigInt(zn(x(r.dq,"base64url"))),B.fromBigInt(zn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function AO(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Wn(t[0].toBigInt()),"base64url"),e:v(Wn(t[1].toBigInt()),"base64url")}}function IO(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(zn(x(r.n,"base64url"))),B.fromBigInt(zn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Wn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function zn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var kO=16,_y=32,Sy=1e4;async function TO(r,e){let t=tt.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Yn(kO),a=await pt(Ye,e,i,{c:Sy,dkLen:_y}),c=Yn(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:Sy}),new B({value:_y}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
26
|
-
`)}async function Ry(r,e){let t=tt.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=DO(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=pu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=pv(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=pv(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Ay(n)}function DO(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=pu(s.valueBlock.value[0].getValue()),a=Sy,c=_y;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=pu(l.valueBlock.value[1].getValue());return{cipherText:pu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function pv(r){return pu(r.valueBlock.value[2].getValue())}function pu(r){return new Uint8Array(r,0,r.byteLength)}async function mv(r){let e=await tt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await bv(e);return{privateKey:t[0],publicKey:t[1]}}async function Iy(r){let t=[await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await PO(r)],n=await bv({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function yv(r,e){let t=await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await tt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function gv(r,e,t){let n=await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return tt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function bv(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([tt.get().subtle.exportKey("jwk",r.privateKey),tt.get().subtle.exportKey("jwk",r.publicKey)])}async function PO(r){return tt.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function bh(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Oi=8192,Li=class{_key;constructor(e){this._key=e}verify(e,t){return gv(this._key,t,e)}marshal(){return Bs.jwkToPkix(this._key)}get bytes(){return bn.encode({Type:je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}},Ls=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Yn(16)}sign(e){return yv(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Li(this._publicKey)}marshal(){return Bs.jwkToPkcs1(this._key)}get bytes(){return wn.encode({Type:je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Bs.exportToPem(this,e);if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Ay(r){let e=Bs.pkcs1ToJwk(r);if(bh(e)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Iy(e);return new Ls(t.privateKey,t.publicKey)}function NO(r){let e=Bs.pkixToJwk(r);if(bh(e)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Li(e)}async function BO(r){if(bh(r)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Iy(r);return new Ls(e.privateKey,e.publicKey)}async function LO(r){if(r>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await mv(r);return new Ls(e.privateKey,e.publicKey)}var Dy={};oe(Dy,{Secp256k1PrivateKey:()=>Mi,Secp256k1PublicKey:()=>Ki,generateKeyPair:()=>UO,unmarshalSecp256k1PrivateKey:()=>KO,unmarshalSecp256k1PublicKey:()=>MO});function wv(){return W.utils.randomPrivateKey()}function Ev(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(jr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function xv(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(jr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function vv(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function _v(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Ty(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Sv(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Ki=class{_key;constructor(e){Ty(e),this._key=e}verify(e,t){return xv(this._key,t,e)}marshal(){return vv(this._key)}get bytes(){return bn.encode({Type:je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return jr(e)?{bytes:t}=await e:t=e.bytes,t}},Mi=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Sv(e),_v(this._key),Ty(this._publicKey)}sign(e){return Ev(this._key,e)}get public(){return new Ki(this._publicKey)}marshal(){return this._key}get bytes(){return wn.encode({Type:je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function KO(r){return new Mi(r)}function MO(r){return new Ki(r)}async function UO(){let r=wv();return new Mi(r)}var Uo={rsa:ky,ed25519:xy,secp256k1:Dy};function Py(r){let e=Object.keys(Uo).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Cy(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Uo[r];throw Py(r)}async function FO(r,e){return Cy(r).generateKeyPair(e??2048)}async function VO(r,e,t){if(r.toLowerCase()!=="ed25519")throw new h("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return Ey(e)}function qO(r){let e=bn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case je.RSA:return Uo.rsa.unmarshalRsaPublicKey(t);case je.Ed25519:return Uo.ed25519.unmarshalEd25519PublicKey(t);case je.Secp256k1:return Uo.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Py(e.Type??"unknown")}}function HO(r,e){return e=(e??"rsa").toLowerCase(),Cy(e),r.bytes}async function Rv(r){let e=wn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case je.RSA:return Uo.rsa.unmarshalRsaPrivateKey(t);case je.Ed25519:return Uo.ed25519.unmarshalEd25519PrivateKey(t);case je.Secp256k1:return Uo.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Py(e.Type??"RSA")}}function $O(r,e){return e=(e??"rsa").toLowerCase(),Cy(e),r.bytes}async function GO(r,e){try{let t=await fv(r,e);return await Rv(t)}catch{}if(!r.includes("BEGIN"))throw new h("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return Ry(r,e)}var Ny=(r,e)=>r<<e|r>>>32-e>>>0,YO=(r,e,t)=>r&e^~r&t,WO=(r,e,t)=>r&e^r&t^e&t,mu=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Os=new Uint32Array(80),By=class extends ss{constructor(){super(64,20,8,!1),this.A=mu[0]|0,this.B=mu[1]|0,this.C=mu[2]|0,this.D=mu[3]|0,this.E=mu[4]|0}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Os[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Os[c]=Ny(Os[c-3]^Os[c-8]^Os[c-14]^Os[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,f;c<20?(l=YO(o,s,i),f=1518500249):c<40?(l=o^s^i,f=1859775393):c<60?(l=WO(o,s,i),f=2400959708):(l=o^s^i,f=3395469782);let u=Ny(n,5)+l+a+f+Os[c]|0;a=i,i=s,s=Ny(o,30),o=n,n=u}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,this.set(n,o,s,i,a)}roundClean(){Os.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},Av=ga(()=>new By);var Eh=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await gn(e),n={peerId:e,distance:Co(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>Id(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(gn)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Co(this.originDhtKey,o);if(Id(s,n)<0)return!0}return!1}};var xh=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:Ie.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=Yx(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await It(wh.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new h("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new h("public key missing","ERR_PUBLIC_KEY_MISSING");yield fu({from:e,value:s.publicKey},t)}throw new h(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield dh({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:Ie.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(u=>u.id.equals(e));f!=null&&(yield dh({from:l.from,peer:f},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield Rr({from:this.peerId,error:new h("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Ns(e),o=this.routingTable.closestPeers(n),s=this,i=new Eh(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",v(e,"base32"),c);let f={type:Ie.FIND_NODE,key:e};yield*s.network.sendRequest(c,f,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield dh({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:f})=>f)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield Rr({from:o.from,error:new h(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new h("invalid record received","ERR_INVALID_RECORD");await ic(this.validators,new Ut(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Ns(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p",e,t),s}};var Tv=Ue(kv(),1);var vh=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,Tv.default)(n??256),this.syncQueue=new Ur({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:ly});for await(let a of i)try{let{cid:c,peerId:l}=Dv(a.key),f=Pv(a.value).getTime(),u=Date.now(),d=u-f,y=d>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,f,d,this.provideValidity,y?"(expired)":""),y){n++,s.delete(a.key);let p=o.get(c)??new Set;p.add(l),o.set(c,p)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=yu(a),f=this.cache.get(l);if(f!=null){for(let u of c)f.delete(u);f.size===0?this.cache.remove(l):this.cache.set(l,f)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=yu(e),n=this.cache.get(t);return n==null&&(n=await JO(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=yu(e);this.cache.set(s,n),await QO(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>Ae(n))),{throwOnTimeout:!0})}};function yu(r){let e=typeof r=="string"?r:v(r.multihash.bytes,"base32");return`${ly}/${e}`}async function QO(r,e,t,n){let o=[yu(e),"/",t.toString()].join(""),s=new qe(o),i=st(n.getTime());await r.put(s,i)}function Dv(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function JO(r,e){let t=new Map,n=r.query({prefix:yu(e)});for await(let o of n){let{peerId:s}=Dv(o.key);t.set(s,Pv(o.value))}return t}function Pv(r){return new Date(gr(r))}async function*Cv(r,e,t,n){let o=At({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new h("Query aborted","ERR_QUERY_ABORTED"))},f=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",f);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",f)}}var ZO=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*Nv(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:f,log:u,peersSeen:d}=r,y=new Ur({concurrency:i}),p=await Ns(e);function m(g,b){if(g==null)return;d.add(g);let E=BigInt("0x"+v(Co(b,p),"base16"));y.add(async()=>{let w=[o];f!=null&&w.push(AbortSignal.timeout(f));let _=Rt(w);try{for await(let I of s({key:e,peer:g,signal:_,pathIndex:a,numPaths:c})){if(_.aborted)return;if(I.name==="PEER_RESPONSE")for(let k of I.closer){if(d.has(k.id)){u("already seen %p in query",k.id);continue}if(n.equals(k.id)){u("not querying ourselves");continue}let D=await gn(k.id);if(BigInt("0x"+v(Co(D,p),"base16"))>E){u("skipping %p as they are not closer to %b than %p",k.id,e,g);continue}u("querying closer peer %p",k.id),m(k.id,D)}y.emit("completed",I)}}catch(I){if(!o.aborted)return Rr({from:g,error:I},r)}finally{_.clear()}},{priority:ZO-E}).catch(w=>{u.error(w)})}m(t,await gn(t)),yield*Cv(y,o,l,u)}var _h=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);Ce(1/0,u),n={...n,signal:u}}let s=new AbortController;Ce(1/0,s.signal);let i=Rt([this.shutDownController.signal,s.signal,n.signal]);Ce(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+v(e,"base58btc")),c=Date.now(),l=new Fe,f=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await dr(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Ns(e),d=this.routingTable.closestPeers(u),y=d.slice(0,Math.min(this.disjointPaths,d.length));if(d.length===0){a.error("Running query with no peers");return}let p=new mt,m=y.map((g,b)=>Nv({key:e,startingPeer:g,ourPeerId:this.peerId,signal:i,query:t,pathIndex:b,numPaths:y.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let g of Xt(...m))g.name==="QUERY_ERROR"&&a.error("query error",g.error),yield g;f=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{f||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new Ct("cleanup")),a("query:done in %dms",Date.now()-c)}}};function eK(r){return r[Symbol.asyncIterator]!=null}function tK(r){if(eK(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Sh=tK;var rK=r=>{let e=r.on||r.addListener||r.addEventListener,t=r.off||r.removeListener||r.removeEventListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function nK(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}=rK(r),u=(...y)=>{let p=t.multiArgs?y:y[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),s(c)))},d=y=>{n(),i(y)};n=()=>{for(let y of a)f(y,u);for(let y of t.rejectionEvents)f(y,d)};for(let y of a)l(y,u);for(let y of t.rejectionEvents)l(y,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=dn(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function gu(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=nK(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var Rh=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=he(),this.started){this.controller=new AbortController;let e=Rt([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);Ce(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await gu(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await it(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>rs(o,this.count),async o=>Sh(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function Lv(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function Ly(){return{contacts:[],dontSplit:!1,left:null,right:null}}function bu(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Ah=class r extends Fe{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,bu("option.localNodeId as parameter 1",this.localNodeId),this.root=Ly()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){bu("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(bu("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){bu("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(Lv(e.contacts[n].id,t))return n;return-1}remove(e){bu("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=Ly(),e.right=Ly();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!Lv(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var oK="kad-close",sK=50,Ov=20,iK=1e4,aK=10,Ih=class extends Fe{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??Ov,this.pingTimeout=o??iK,this.pingConcurrency=i??aK,this.running=!1,this.protocol=a,this.tagName=c??oK,this.tagValue=l??sK,this.pingQueue=new Cs({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",f=>{this.log.error("error pinging peer",f.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Ah({localNodeId:await gn(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new mt,n=jx(()=>{let o=new mt(e.closest(e.localNodeId,Ov).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=lt(c);await u.write({type:Ie.PING},zr,l);let d=await u.read(zr,l);if(await u.unwrap().close(),d.type!==Ie.PING)throw new h(`Incorrect message type received, expected PING got ${d.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await gn(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await gn(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await gn(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var Kv=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var kh=15,Th=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async start(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await Sh(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>kh&&(e=kh);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=Yn(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return at(o)}async _makePeerId(e,t,n){if(n>kh)throw new Error(`Cannot generate peer ID for common prefix length greater than ${kh}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=Kv[c],f=new ArrayBuffer(34),u=new DataView(f,0,f.byteLength);return u.setUint8(0,K.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Co(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Dh=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new h("Missing key","ERR_MISSING_KEY");let n;try{n=de.decode(t.key)}catch{throw new h("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>se(s).toString())),await this.providers.addProvider(n,at(o.id))}))}};var Ph=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new h("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");O(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(fe("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:Ie.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var Ch=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new h("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=de.decode(t.key)}catch{throw new h("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:Ie.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var Nh=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new h("Invalid key","ERR_INVALID_KEY");let o={type:Ie.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(Wx(n)){this.log("is public key");let a=zx(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new h("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new Ut(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Oo(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=Ut.deserialize(n);if(o==null)throw new h("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var Bh=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Lh=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new h(o,"ERR_EMPTY_RECORD")}try{let o=Ut.deserialize(t.record);await ic(this.validators,o),o.timeReceived=new Date;let s=Oo(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var Oh=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[Ie.GET_VALUE.toString()]:new Nh(e,{peerRouting:o,logPrefix:i}),[Ie.PUT_VALUE.toString()]:new Lh(e,{validators:s,logPrefix:i}),[Ie.FIND_NODE.toString()]:new Ph(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[Ie.ADD_PROVIDER.toString()]:new Dh(e,{providers:n,logPrefix:i}),[Ie.GET_PROVIDERS.toString()]:new Ch(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[Ie.PING.toString()]:new Bh(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await it(t,i=>cr(i),async function*(i){for await(let a of i){let c=zr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield zr.encode(l))}},i=>ar(i),t)}).catch(t=>{this.log.error(t)})}};var Kh=class extends Fe{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Ct("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var Oy=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Pr(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await Pr(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new h("Not found","ERR_NOT_FOUND")}},Ky=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new h("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},cK=32,lK=64,Mh=class extends Fe{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:f,pingConcurrency:u,maxInboundStreams:d,maxOutboundStreams:y,providers:p}=t,m=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(m),this.protocol=c??Kx,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=d??cK,this.maxOutboundStreams=y??lK,this.peerInfoMapper=t.peerInfoMapper??Gx,this.routingTable=new Ih(e,{kBucketSize:n,pingTimeout:f,pingConcurrency:u,protocol:this.protocol,logPrefix:m}),this.providers=new vh(e,p??{}),this.validators={...$x,...s},this.selectors={...Hx,...i},this.network=new mh(e,{protocol:this.protocol,logPrefix:m});let g=he();t.allowQueryWithZeroPeers===!0&&g.resolve(),this.queryManager=new _h(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:m,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.peerRouting=new xh(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:m}),this.contentFetching=new hh(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:m}),this.contentRouting=new ph(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:m}),this.routingTableRefresh=new Th(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:m}),this.rpc=new Oh(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:m,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Kh(e,{protocol:this.protocol,logPrefix:m}),this.querySelf=new Rh(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:m,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.network.addEventListener("peer",b=>{let E=b.detail;this.onPeerConnect(E).catch(w=>{this.log.error("could not add %p to routing table",E.id,w)}),this.dispatchEvent(new Ct("peer",{detail:E}))}),this.topologyListener.addEventListener("peer",b=>{let E=b.detail;Promise.resolve().then(async()=>{let w=await this.components.peerStore.get(E),_={id:E,multiaddrs:w.addresses.map(({multiaddr:I})=>I),protocols:w.protocols};await this.onPeerConnect(_)}).catch(w=>{this.log.error("could not add %p to routing table",E,w)})}),this.dhtPeerRouting=new Ky(this),this.dhtContentRouting=new Oy(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",b=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let E=b.detail.peer.addresses.some(({multiaddr:_})=>Xx(_)),w=this.getMode();E&&w==="client"?await this.setMode("server"):w==="server"&&!E&&await this.setMode("client")}).catch(E=>{this.log.error("error setting dht server mode",E)})})}get[vn](){return this.dhtContentRouting}get[_n](){return this.dhtPeerRouting}get[zs](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),this.querySelf.start(),await Promise.all([this.providers.start(),this.queryManager.start(),this.network.start(),this.routingTable.start(),this.topologyListener.start(),this.routingTableRefresh.start()])}async stop(){this.running=!1,this.querySelf.stop(),await Promise.all([this.providers.stop(),this.queryManager.stop(),this.network.stop(),this.routingTable.stop(),this.routingTableRefresh.stop(),this.topologyListener.stop()])}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var Mv;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(Mv||(Mv={}));var Uv;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(Uv||(Uv={}));function Fv(r){return e=>new Mh(e,r)}var nr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Fy={};oe(Fy,{Ed25519PrivateKey:()=>Ui,Ed25519PublicKey:()=>wu,generateKeyPair:()=>hK,generateKeyPairFromSeed:()=>Wv,unmarshalEd25519PrivateKey:()=>fK,unmarshalEd25519PublicKey:()=>dK});function Xr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var fc=32,Fo=64,Uh=32;function Vv(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:Gv(r,e),publicKey:e}}function qv(r){if(r.length!==Uh)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:Gv(e,t),publicKey:t}}function Hv(r,e){let t=r.subarray(0,Uh);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function $v(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Gv(r,e){let t=new Uint8Array(Fo);for(let n=0;n<Uh;n++)t[n]=r[n],t[Uh+n]=e[n];return t}var My={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Fh(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=nr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",My,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",My,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",My,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function dc(r,e){let n=await Fh().encrypt(r,e);return Ge.encode(n)}var wt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(wt||(wt={}));var Uy;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Uy||(Uy={}));(function(r){r.codec=()=>Re(Uy)})(wt||(wt={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),wt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=wt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Vo||(Vo={}));var jn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),wt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=wt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(jn||(jn={}));var wu=class{_key;constructor(e){this._key=hc(e,fc)}verify(e,t){return $v(this._key,t,e)}marshal(){return this._key}get bytes(){return Vo.encode({Type:wt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}},Ui=class{_key;_publicKey;constructor(e,t){this._key=hc(e,Fo),this._publicKey=hc(t,fc)}sign(e){return Hv(this._key,e)}get public(){return new wu(this._publicKey)}marshal(){return this._key}get bytes(){return jn.encode({Type:wt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Xr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function fK(r){if(r.length>Fo){r=hc(r,Fo+fc);let n=r.subarray(0,Fo),o=r.subarray(Fo,r.length);return new Ui(n,o)}r=hc(r,Fo);let e=r.subarray(0,Fo),t=r.subarray(fc);return new Ui(e,t)}function dK(r){return r=hc(r,fc),new wu(r)}async function hK(){let{privateKey:r,publicKey:e}=Vv();return new Ui(r,e)}async function Wv(r){let{privateKey:e,publicKey:t}=qv(r);return new Ui(e,t)}function hc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}async function zv(r,e){let t=Ge.decode(r);return Fh().decrypt(t,e)}var Yy={};oe(Yy,{MAX_RSA_KEY_SIZE:()=>vu,RsaPrivateKey:()=>pc,RsaPublicKey:()=>xu,fromJwk:()=>SK,generateKeyPair:()=>RK,unmarshalRsaPrivateKey:()=>$y,unmarshalRsaPublicKey:()=>_K});function Xn(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Ks={};oe(Ks,{exportToPem:()=>wK,importFromPem:()=>Hy,jwkToPkcs1:()=>mK,jwkToPkix:()=>gK,pkcs1ToJwk:()=>pK,pkixToJwk:()=>yK});function pK(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Qn(t[1].toBigInt()),"base64url"),e:v(Qn(t[2].toBigInt()),"base64url"),d:v(Qn(t[3].toBigInt()),"base64url"),p:v(Qn(t[4].toBigInt()),"base64url"),q:v(Qn(t[5].toBigInt()),"base64url"),dp:v(Qn(t[6].toBigInt()),"base64url"),dq:v(Qn(t[7].toBigInt()),"base64url"),qi:v(Qn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function mK(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Jn(x(r.n,"base64url"))),B.fromBigInt(Jn(x(r.e,"base64url"))),B.fromBigInt(Jn(x(r.d,"base64url"))),B.fromBigInt(Jn(x(r.p,"base64url"))),B.fromBigInt(Jn(x(r.q,"base64url"))),B.fromBigInt(Jn(x(r.dp,"base64url"))),B.fromBigInt(Jn(x(r.dq,"base64url"))),B.fromBigInt(Jn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function yK(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Qn(t[0].toBigInt()),"base64url"),e:v(Qn(t[1].toBigInt()),"base64url")}}function gK(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Jn(x(r.n,"base64url"))),B.fromBigInt(Jn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Qn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Jn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var bK=16,Vy=32,qy=1e4;async function wK(r,e){let t=nr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Xn(bK),a=await pt(Ye,e,i,{c:qy,dkLen:Vy}),c=Xn(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:qy}),new B({value:Vy}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
27
|
-
`)}async function Hy(r,e){let t=nr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=EK(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Eu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=jv(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=jv(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return $y(n)}function EK(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Eu(s.valueBlock.value[0].getValue()),a=qy,c=Vy;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Eu(l.valueBlock.value[1].getValue());return{cipherText:Eu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function jv(r){return Eu(r.valueBlock.value[2].getValue())}function Eu(r){return new Uint8Array(r,0,r.byteLength)}async function Xv(r){let e=await nr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Zv(e);return{privateKey:t[0],publicKey:t[1]}}async function Gy(r){let t=[await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await xK(r)],n=await Zv({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Qv(r,e){let t=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await nr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Jv(r,e,t){let n=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return nr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Zv(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([nr.get().subtle.exportKey("jwk",r.privateKey),nr.get().subtle.exportKey("jwk",r.publicKey)])}async function xK(r){return nr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function qh(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var vu=8192,xu=class{_key;constructor(e){this._key=e}verify(e,t){return Jv(this._key,t,e)}marshal(){return Ks.jwkToPkix(this._key)}get bytes(){return Vo.encode({Type:wt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}},pc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Xn(16)}sign(e){return Qv(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new xu(this._publicKey)}marshal(){return Ks.jwkToPkcs1(this._key)}get bytes(){return jn.encode({Type:wt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Ks.exportToPem(this,e);if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function $y(r){let e=Ks.pkcs1ToJwk(r);if(qh(e)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Gy(e);return new pc(t.privateKey,t.publicKey)}function _K(r){let e=Ks.pkixToJwk(r);if(qh(e)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new xu(e)}async function SK(r){if(qh(r)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Gy(r);return new pc(e.privateKey,e.publicKey)}async function RK(r){if(r>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Xv(r);return new pc(e.privateKey,e.publicKey)}var zy={};oe(zy,{Secp256k1PrivateKey:()=>Su,Secp256k1PublicKey:()=>_u,generateKeyPair:()=>TK,unmarshalSecp256k1PrivateKey:()=>IK,unmarshalSecp256k1PublicKey:()=>kK});function e_(){return W.utils.randomPrivateKey()}function t_(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Xr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function r_(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Xr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function n_(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function o_(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Wy(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function s_(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var _u=class{_key;constructor(e){Wy(e),this._key=e}verify(e,t){return r_(this._key,t,e)}marshal(){return n_(this._key)}get bytes(){return Vo.encode({Type:wt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Xr(e)?{bytes:t}=await e:t=e.bytes,t}},Su=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??s_(e),o_(this._key),Wy(this._publicKey)}sign(e){return t_(this._key,e)}get public(){return new _u(this._publicKey)}marshal(){return this._key}get bytes(){return jn.encode({Type:wt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function IK(r){return new Su(r)}function kK(r){return new _u(r)}async function TK(){let r=e_();return new Su(r)}var Ru={rsa:Yy,ed25519:Fy,secp256k1:zy};function i_(r){let e=Object.keys(Ru).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function DK(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Ru[r];throw i_(r)}async function a_(r,e){return DK(r).generateKeyPair(e??2048)}async function jy(r){let e=jn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case wt.RSA:return Ru.rsa.unmarshalRsaPrivateKey(t);case wt.Ed25519:return Ru.ed25519.unmarshalEd25519PrivateKey(t);case wt.Secp256k1:return Ru.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw i_(e.Type??"RSA")}}async function Au(r,e){try{let t=await zv(r,e);return await jy(t)}catch{}if(!r.includes("BEGIN"))throw new h("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return Hy(r,e)}var c_={sha1:Av,"sha2-256":ms,"sha2-512":Ye};function Iu(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(c_).join(" / ");throw new h(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=c_[o],i=Pg(s,r,e,{c:t,dkLen:n});return Ge.encode(i).substring(1)}var g_=Ue(y_(),1),gc=g_.default;var I_=Ue(A_(),1);var Pe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(Pe||(Pe={}));var zK="/pkcs8/",k_="/info/",Fi=new WeakMap,Vi={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},Qy={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function qo(r){return r==null||typeof r!="string"?!1:r===(0,I_.default)(r.trim())&&r.length>0}async function He(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function Zn(r){return new qe(zK+r)}function Ms(r){return new qe(k_+r)}var Gh=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=gc(Qy,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<Vi.minKeyLength)throw new Error(`dek.keyLength must be least ${Vi.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Vi.minSaltLength)throw new Error(`dek.saltLength must be least ${Vi.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Vi.minIterationCount)throw new Error(`dek.iterationCount must be least ${Vi.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?Iu(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Fi.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},Qy),t=Math.ceil(Vi.minSaltLength/3)*3;return e.dek.salt=v(Xn(t),"base64"),e}static get options(){return Qy}async createKey(e,t,n=2048){if(!qo(e)||e==="self")throw await He(),new h("Invalid key name",Pe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await He(),new h("Invalid key type",Pe.ERR_INVALID_KEY_TYPE);let o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h("Key name already exists",Pe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await He(),new h("Invalid RSA key size",Pe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await a_(t,n),c=await a.id(),l=Fi.get(this);if(l==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let f=l.dek,u=await a.export(f);i={name:e,id:c};let d=this.components.datastore.batch();d.put(o,x(u)),d.put(Ms(e),x(JSON.stringify(i))),await d.commit()}catch(a){throw await He(),a}return i}async listKeys(){let e={prefix:k_},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(v(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new h(`Key with id '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await He(),t}}async findKeyByName(e){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);let t=Ms(e);try{let n=await this.components.datastore.get(t);return JSON.parse(v(n))}catch(n){throw await He(),this.log.error(n),new h(`Key '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!qo(e)||e==="self")throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);let t=Zn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Ms(e)),await o.commit(),n}async renameKey(e,t){if(!qo(e)||e==="self")throw await He(),new h(`Invalid old key name '${e}'`,Pe.ERR_OLD_KEY_NAME_INVALID);if(!qo(t)||t==="self")throw await He(),new h(`Invalid new key name '${t}'`,Pe.ERR_NEW_KEY_NAME_INVALID);let n=Zn(e),o=Zn(t),s=Ms(e),i=Ms(t);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${t}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),f=JSON.parse(v(l));f.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,x(JSON.stringify(f))),u.delete(n),u.delete(s),await u.commit(),f}catch(c){throw await He(),c}}async exportKey(e,t){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw await He(),new h("Password is required",Pe.ERR_PASSWORD_REQUIRED);let n=Zn(e);try{let o=await this.components.datastore.get(n),s=v(o),i=Fi.get(this);if(i==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await Au(s,a)).export(t)}catch(o){throw await He(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await Au(n,t);return It(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!qo(e)||e==="self")throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw await He(),new h("PEM encoded key is required",Pe.ERR_PEM_REQUIRED);let o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${e}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await Au(t,n)}catch{throw await He(),new h("Cannot read the key, most likely the password is wrong",Pe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let f=Fi.get(this);if(f==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let u=f.dek;t=await i.export(u)}catch(f){throw await He(),f}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,x(t)),l.put(Ms(e),x(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!qo(e))throw new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw new h("PeerId is required",Pe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new h("PeerId.privKey is required",Pe.ERR_MISSING_PRIVATE_KEY);let n=await jy(t.privateKey),o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${e}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);let i=Fi.get(this);if(i==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},f=this.components.datastore.batch();return f.put(o,x(c)),f.put(Ms(e),x(JSON.stringify(l))),await f.commit(),l}catch(n){throw await He(),n}}async getPrivateKey(e){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);try{let t=Zn(e),n=await this.components.datastore.get(t);return v(n)}catch(t){throw await He(),this.log.error(t),new h(`Key '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await He(),new h(`Invalid old pass type '${typeof e}'`,Pe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await He(),new h(`Invalid new pass type '${typeof t}'`,Pe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await He(),new h(`Invalid pass length ${t.length}`,Pe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Fi.get(this);if(n==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?Iu(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Fi.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(Zn(a.name)),l=v(c),f=await Au(l,o),u=s.toString(),d=await f.export(u),y=this.components.datastore.batch(),p={name:a.name,id:a.id};y.put(Zn(a.name),x(d)),y.put(Ms(a.name),x(JSON.stringify(p))),await y.commit()}this.log("keychain reconstructed")}};function Yh(r={}){return e=>new Gh(e,r)}var bc=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Jy}async 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 h("Rate limit exceeded","ERR_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 Jd(a)}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)}},Jy=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 Te;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(Te||(Te={}));var ku=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Zy=Object.freeze({NEW_STREAM:Te.NEW_STREAM,MESSAGE:Te.MESSAGE_INITIATOR,CLOSE:Te.CLOSE_INITIATOR,RESET:Te.RESET_INITIATOR}),T_=Object.freeze({MESSAGE:Te.MESSAGE_RECEIVER,CLOSE:Te.CLOSE_RECEIVER,RESET:Te.RESET_RECEIVER});var e4=1<<20,jK=4<<20,Wh=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=e4,t=jK){this._buffer=new be,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===Te.NEW_STREAM||o===Te.MESSAGE_INITIATOR||o===Te.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=P_(e),{value:o,offset:s}=P_(e,n),i=t&7;if(ku[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},XK=128,D_=127;function P_(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&D_)<<n:(s&D_)*Math.pow(2,n),n+=7}while(s>=XK);return e=o-e,{value:t,offset:e}}var t4=10*1024,r4=class{_pool;_poolOffset;constructor(){this._pool=nt(t4),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;st(e.id<<3|e.type,n,o),o+=Et(e.id<<3|e.type),(e.type===Te.NEW_STREAM||e.type===Te.MESSAGE_INITIATOR||e.type===Te.MESSAGE_RECEIVER)&&e.data!=null?(st(e.data.length,n,o),o+=Et(e.data.length)):(st(0,n,o),o+=Et(0));let s=n.subarray(this._poolOffset,o);t4-o<100?(this._pool=nt(t4),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===Te.NEW_STREAM||e.type===Te.MESSAGE_INITIATOR||e.type===Te.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},QK=new r4;async function*C_(r){for await(let e of r){let t=new be;QK.write(e,t),yield t}}var n4=class extends Ss{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Zy:T_,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:Zy.NEW_STREAM,data:new be(x(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function N_(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=e4}=r;return new n4({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var JK=1024,ZK=1024,eM=1024*1024*4,tM=5,rM=500;function B_(r){let e={...r,type:`${ku[r.type]} (${r.type})`};return r.type===Te.NEW_STREAM&&(e.data=v(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===Te.MESSAGE_INITIATOR||r.type===Te.MESSAGE_RECEIVER)&&(e.data=v(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var zh=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??rM,this.sink=this._createSink(),this._source=At({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=it(this._source,n=>C_(n)),this.closeController=new AbortController,this.rateLimiter=new bc({points:t.disconnectThreshold??tM,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??ZK))throw new h("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=N_({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,B_(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{Ld(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new Wh(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",B_(e)),e.type===Te.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??JK)){this.log("too many inbound streams open"),this._source.push({id:t,type:Te.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:v(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,ku[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??eM;try{switch(n){case Te.MESSAGE_INITIATOR:case Te.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===Te.MESSAGE_INITIATOR?Te.RESET_RECEIVER:Te.RESET_INITIATOR}),new h("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case Te.CLOSE_INITIATOR:case Te.CLOSE_RECEIVER:s.remoteCloseWrite();break;case Te.RESET_INITIATOR:case Te.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var o4=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new zh(this.components,{...e,...this._init})}};function L_(r={}){return e=>new o4(e,r)}function jh(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var O_="1.0.0",K_="ping",M_="ipfs";var s4="ERR_WRONG_PING_ACK";var Xh=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??M_}/${K_}/${O_}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();it(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=jh(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new h("ping timeout",ao))},t.signal?.addEventListener("abort",a,{once:!0});let c=await it([o],i,async f=>mi(f)),l=Date.now()-n;if(c==null)throw new h(`Did not receive a ping ack after ${l}ms`,s4);if(!O(o,c.subarray()))throw new h(`Received wrong ping ack after ${l}ms`,s4);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function U_(r={}){return e=>new Xh(e,r)}var Ar;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(Ar||(Ar={}));var Us=class extends h{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var i4=class extends Us{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,Ar.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function d4(r,e){return new i4(r,e)}var a4=class extends Us{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,Ar.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function Qh(r){return new a4(r)}var c4=class extends Us{constructor(e){super(`There was a problem with a provided argument: ${e}`,Ar.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function Tu(r){return new c4(r)}var l4=class extends Us{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,Ar.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function h4(r,e){return new l4(r,e)}var u4=class extends Us{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,Ar.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function F_(r){return new u4(r)}var f4=class extends Us{constructor(e){super(`unsupported hash algorithm: ${e}`,Ar.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function V_(r){return new f4(r)}var q_=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},aM=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var cM=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var lM=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var uM=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var fM=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var dM=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,hM=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,H_=3,pM=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",dM]],$_=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Y_(r){return r?G_(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new fM:typeof navigator<"u"?G_(navigator.userAgent):gM()}function mM(r){return r!==""&&pM.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function G_(r){var e=mM(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new uM;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<H_&&(o=q_(q_([],o,!0),bM(H_-o.length),!0)):o=[];var s=o.join("."),i=yM(r),a=hM.exec(r);return a&&a[1]?new lM(t,s,i,a[1]):new aM(t,s,i)}function yM(r){for(var e=0,t=$_.length;e<t;e++){var n=$_[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function gM(){var r=typeof process<"u"&&process.version;return r?new cM(process.version.slice(1)):null}function bM(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var W_=Y_(),Du=W_!=null&&W_.name==="firefox",Jh=async function*(){},Zh=async r=>{},wM=30*1e3;function z_(r,e,t=wM,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=he(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await dn(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var qi=class{log;peerConnection;remoteAddr;timeline;metrics;source=Jh();sink=Zh;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var hr;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(hr||(hr={}));var EM=16*1024*1024,xM=30*1e3,vM=5,_M=2,SM=16*1024,RM=5e3,AM=5e3,p4=class extends Ss{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await dn(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=At(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??xM,this.maxBufferedAmount=e.maxBufferedAmount??EM,this.maxMessageSize=(e.maxMessageSize??SM)-vM-_M,this.receiveFinAck=he(),this.finAckTimeout=e.closeTimeout??RM,this.openTimeout=e.openTimeout??AM,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new h("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of cr(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new be(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await gu(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof bs?new h(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new h(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await gu(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=hr.encode({message:n}),s=ar.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(hr.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(hr.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await dr(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(hr.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=hr.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===hr.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(hr.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===hr.Flag.RESET&&this.reset(),t.flag===hr.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===hr.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=hr.encode({flag:e}),n=ar.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function wc(r){let{channel:e,direction:t}=r;return new p4({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var j_="/webrtc",Hi=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??j_,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=wc({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new m4(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},m4=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??j_,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=wc({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),z_(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=Jh();sink=Zh;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=wc({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Ec=globalThis.RTCPeerConnection,ep=globalThis.RTCSessionDescription,X_=globalThis.RTCIceCandidate;var pr;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(pr||(pr={}));var tp=async(r,e,t)=>{try{let n=he();for(kM(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==pr.Type.ICE_CANDIDATE)throw new h("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new X_(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function IM(r){return Du?r.iceConnectionState:r.connectionState}function kM(r,e){r[Du?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(IM(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new h("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function Q_({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=J_(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new h("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(Ae(c)),f,u=!1;l.length===0?(f=await s.dial(a,{signal:e}),u=!0):f=l[0];try{let d=await f.newStream(rp,{signal:e,runOnTransientConnection:!0}),y=lt(d).pb(pr);try{let p=r.createDataChannel("init");r.onicecandidate=({candidate:E})=>{let w=JSON.stringify(E?.toJSON()??null);i.trace("initiator sending ICE candidate %s",w),y.write({type:pr.Type.ICE_CANDIDATE,data:w},{signal:e}).catch(_=>{i.error("error sending ICE candidate",_)})},r.onicecandidateerror=E=>{i.error("initiator ICE candidate error",E)};let m=await r.createOffer().catch(E=>{throw i.error("could not execute createOffer",E),new h("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",m.sdp),await y.write({type:pr.Type.SDP_OFFER,data:m.sdp},{signal:e}),await r.setLocalDescription(m).catch(E=>{throw i.error("could not execute setLocalDescription",E),new h("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let g=await y.read({signal:e});if(g.type!==pr.Type.SDP_ANSWER)throw new h("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",g.data);let b=new ep({type:"answer",sdp:g.data});return await r.setRemoteDescription(b).catch(E=>{throw i.error("could not execute setRemoteDescription",E),new h("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await tp(r,y,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),p.close(),i.trace("initiator closing signalling stream"),await y.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(p){throw r.close(),d.abort(p),p}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await f.close({signal:e})}catch(d){f.abort(d)}}}var np=class extends Fe{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>pn.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function Z_({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=lt(e).pb(pr);try{r.onicecandidate=({candidate:f})=>{let u=JSON.stringify(f?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:pr.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(d=>{o.error("error sending ICE candidate",d)})};let a=await s.read({signal:t});if(a.type!==pr.Type.SDP_OFFER)throw new h(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new ep({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(f=>{throw o.error("could not execute setRemoteDescription",f),new h("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(f=>{throw o.error("could not execute createAnswer",f),new h("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:pr.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(f=>{throw o.error("could not execute setLocalDescription",f),new h("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await tp(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=se(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var TM="/webrtc",DM="/p2p-circuit",rp="/webrtc-signaling/0.0.1",PM=30*1e3,op=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,Ce(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(rp,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(rp),this._started=!1}createListener(e){return new np(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[Sn]=!0;filter(e){return e.filter(Ex.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Ec(this.init.rtcConfiguration),o=new Hi(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await Q_({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new qi(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??PM),o=new Ec(this.init.rtcConfiguration),s=new Hi(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await Z_({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new qi(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function J_(r){let e=r.toString().split(TM+"/");if(e.length!==2)throw new h("webrtc protocol was not present in multiaddr",Ar.ERR_INVALID_MULTIADDR);if(!e[0].includes(DM))throw new h("p2p-circuit protocol was not present in multiaddr",Ar.ERR_INVALID_MULTIADDR);let t=se(e[0]),o=se("/"+e[1]).getPeerId();if(o==null)throw new h("destination peer id was missing",Ar.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new h("invalid multiaddr",Ar.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:Ae(o)}}var TR=Ue(G4(),1);var vR=Ue(G4(),1);var Y4=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function _R(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:MF(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw h4("","no fingerprint on local certificate");return n}var KF=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function MF(r){return r.match(KF)?.groups?.fingerprint}function UF(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function yp(r){let t=r.stringTuples().filter(n=>n[0]===AR).map(n=>n[1])[0];if(t===void 0||t==="")throw Qh(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function W4(r){let e=Y4.decode(r);return vR.decode(e)}function FF(r){let e=W4(yp(r)),t=z4(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw h4(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function z4(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw V_(r)}}function VF(r,e){let{host:t,port:n}=r.toOptions(),o=UF(r),[s]=FF(r);return`v=0
|
|
21
|
+
`)}`:`${t} :`}};n6=po;W.Constructed=n6;po.NAME="CONSTRUCTED";var Ol=class extends Tt{fromBER(e,t,n){return t}toBER(e){return Fr}};Ol.override="EndOfContentValueBlock";var o6,Pl=class extends gt{constructor(e={}){super(e,Ol),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};o6=Pl;W.EndOfContent=o6;Pl.NAME=ba;var s6,mo=class extends gt{constructor(e={}){super(e,Tt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};s6=mo;W.Null=s6;mo.NAME="NULL";var Ll=class extends Cn(Tt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=we.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);return kn(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,o0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Ll.NAME="BooleanValueBlock";var i6,Bl=class extends gt{constructor(e={}){super(e,Ll),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};i6=Bl;W.Boolean=i6;Bl.NAME="BOOLEAN";var Ml=class extends Cn(rn){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=rn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===ba){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Jm)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?rn.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Ml.NAME="OctetStringValueBlock";var a6,Dn=class r extends gt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Ml),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=du(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?po.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return we.BufferSourceConverter.concat(e)}};a6=Dn;W.OctetString=a6;Dn.NAME=Jm;var Ul=class extends Cn(rn){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=rn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===ba){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==e6)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=du(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return rn.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Fr;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};Ul.NAME="BitStringValueBlock";var c6,ii=class extends gt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Ul),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return po.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};c6=ii;W.BitString=c6;ii.NAME=e6;var l6;function CR(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,d=c<i?i:c,u=0;for(let f=d;f>=0;f--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=Al(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=Al(t,s)),s}function Zm(r){if(r>=ya.length)for(let e=ya.length;e<=r;e++){let t=new Uint8Array([0]),n=ya[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=Al(t,n)),ya.push(n)}return ya[r]}function NR(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,d=0;for(let u=c;u>=0;u--,d++)switch(l=s[i-d]-a[c-d]-t,!0){case l<0:t=1,s[i-d]=l+10;break;default:t=0,s[i-d]=l}if(t>0)for(let u=i-c+1;u>=0;u--,d++)if(l=s[i-d]-t,l<0)t=1,s[i-d]=l+10;else{t=0,s[i-d]=l;break}return s.slice()}var Ea=class extends Cn(Tt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=o0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Xm(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=NR(Zm(n),t),i="-";break;default:t=CR(t,Zm(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=jm.charAt(t[c]));return a===!1&&(i+=jm.charAt(0)),i}};l6=Ea;Ea.NAME="IntegerValueBlock";Object.defineProperty(l6.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var u6,nt=class r extends gt{constructor(e={}){super(e,Ea),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Il(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Il();let t=BigInt(e),n=new wa,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(we.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${we.Convert.ToHex(a)}`)+t,d=we.BufferSourceConverter.toUint8Array(we.Convert.FromHex(l.toString(16)));d[0]|=128,n.write(d)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};u6=nt;W.Integer=u6;nt.NAME="INTEGER";var d6,Fl=class extends nt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};d6=Fl;W.Enumerated=d6;Fl.NAME="ENUMERATED";var xa=class extends Cn(Tt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=as(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Il();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=ho(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Fr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=we.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};xa.NAME="sidBlock";var Vl=class extends Tt{constructor({value:e=ai,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new xa;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,Fr;t.push(o)}return s0(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new xa;if(o>Number.MAX_SAFE_INTEGER){Il();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Vl.NAME="ObjectIdentifierValueBlock";var f6,Ur=class extends gt{constructor(e={}){super(e,Vl),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};f6=Ur;W.ObjectIdentifier=f6;Ur.NAME="OBJECT IDENTIFIER";var va=class extends Cn(In){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=as(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=ho(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Fr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=we.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};va.NAME="relativeSidBlock";var Kl=class extends Tt{constructor({value:e=ai,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new va;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,Fr;n.push(s)}return s0(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new va;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Kl.NAME="RelativeObjectIdentifierValueBlock";var h6,$l=class extends gt{constructor(e={}){super(e,Kl),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};h6=$l;W.RelativeObjectIdentifier=h6;$l.NAME="RelativeObjectIdentifier";var p6,dt=class extends po{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};p6=dt;W.Sequence=p6;dt.NAME="SEQUENCE";var m6,Hl=class extends po{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};m6=Hl;W.Set=m6;Hl.NAME="SET";var ql=class extends Cn(Tt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ai}toJSON(){return{...super.toJSON(),value:this.value}}};ql.NAME="StringValueBlock";var Wl=class extends ql{};Wl.NAME="SimpleStringValueBlock";var Ot=class extends kl{constructor({...e}={}){super(e,Wl)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Ot.NAME="SIMPLE STRING";var zl=class extends Ot{fromBuffer(e){this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=we.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=we.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf8String(e)),this.valueBlock.value=e}};zl.NAME="Utf8StringValueBlock";var g6,Tn=class extends zl{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};g6=Tn;W.Utf8String=g6;Tn.NAME="UTF8String";var Gl=class extends Ot{fromBuffer(e){this.valueBlock.value=we.Convert.ToUtf16String(e),this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf16String(e))}};Gl.NAME="BmpStringValueBlock";var y6,Yl=class extends Gl{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};y6=Yl;W.BmpString=y6;Yl.NAME="BMPString";var Xl=class extends Ot{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=ho(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};Xl.NAME="UniversalStringValueBlock";var w6,Ql=class extends Xl{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};w6=Ql;W.UniversalString=w6;Ql.NAME="UniversalString";var b6,jl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};b6=jl;W.NumericString=b6;jl.NAME="NumericString";var E6,Zl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};E6=Zl;W.PrintableString=E6;Zl.NAME="PrintableString";var x6,Jl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};x6=Jl;W.TeletexString=x6;Jl.NAME="TeletexString";var v6,eu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};v6=eu;W.VideotexString=v6;eu.NAME="VideotexString";var _6,tu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};_6=tu;W.IA5String=_6;tu.NAME="IA5String";var S6,ru=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};S6=ru;W.GraphicString=S6;ru.NAME="GraphicString";var R6,_a=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};R6=_a;W.VisibleString=R6;_a.NAME="VisibleString";var A6,nu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};A6=nu;W.GeneralString=A6;nu.NAME="GeneralString";var I6,ou=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};I6=ou;W.CharacterString=I6;ou.NAME="CharacterString";var D6,Sa=class extends _a{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Ft(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Ft(this.month,2),t[2]=Ft(this.day,2),t[3]=Ft(this.hour,2),t[4]=Ft(this.minute,2),t[5]=Ft(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};D6=Sa;W.UTCTime=D6;Sa.NAME="UTCTime";var T6,su=class extends Sa{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,f=n.indexOf("+"),m="";if(f===-1&&(f=n.indexOf("-"),u=-1),f!==-1){if(m=n.substring(f+1),n=n.substring(0,f),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let h=parseInt(m.substring(0,2),10);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*h,m.length===4){if(h=parseInt(m.substring(2,4),10),isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");c=u*h}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let d=i.exec(o);if(d===null)throw new Error("Wrong input string for conversion");for(let u=1;u<d.length;u++)switch(u){case 1:this.year=parseInt(d[u],10);break;case 2:this.month=parseInt(d[u],10);break;case 3:this.day=parseInt(d[u],10);break;case 4:this.hour=parseInt(d[u],10)+a;break;case 5:this.minute=parseInt(d[u],10)+c;break;case 6:this.second=parseInt(d[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Ft(this.year,4)),t.push(Ft(this.month,2)),t.push(Ft(this.day,2)),t.push(Ft(this.hour,2)),t.push(Ft(this.minute,2)),t.push(Ft(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Ft(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};T6=su;W.GeneralizedTime=T6;su.NAME="GeneralizedTime";var k6,iu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};k6=iu;W.DATE=k6;iu.NAME="DATE";var C6,au=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};C6=au;W.TimeOfDay=C6;au.NAME="TimeOfDay";var N6,cu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};N6=cu;W.DateTime=N6;cu.NAME="DateTime";var O6,lu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};O6=lu;W.Duration=O6;lu.NAME="Duration";var P6,uu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};P6=uu;W.TIME=P6;uu.NAME="TIME";function PR(r){let{result:e}=ci(r),t=e.valueBlock.value;return{n:B(nn(t[1].toBigInt()),"base64url"),e:B(nn(t[2].toBigInt()),"base64url"),d:B(nn(t[3].toBigInt()),"base64url"),p:B(nn(t[4].toBigInt()),"base64url"),q:B(nn(t[5].toBigInt()),"base64url"),dp:B(nn(t[6].toBigInt()),"base64url"),dq:B(nn(t[7].toBigInt()),"base64url"),qi:B(nn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function LR(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 g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new dt({value:[new nt({value:0}),nt.fromBigInt(on(L(r.n,"base64url"))),nt.fromBigInt(on(L(r.e,"base64url"))),nt.fromBigInt(on(L(r.d,"base64url"))),nt.fromBigInt(on(L(r.p,"base64url"))),nt.fromBigInt(on(L(r.q,"base64url"))),nt.fromBigInt(on(L(r.dp,"base64url"))),nt.fromBigInt(on(L(r.dq,"base64url"))),nt.fromBigInt(on(L(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function BR(r){let{result:e}=ci(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:B(nn(t[0].toBigInt()),"base64url"),e:B(nn(t[1].toBigInt()),"base64url")}}function MR(r){if(r.n==null||r.e==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new dt({value:[new dt({value:[new Ur({value:"1.2.840.113549.1.1.1"}),new mo]}),new ii({valueHex:new dt({value:[nt.fromBigInt(on(L(r.n,"base64url"))),nt.fromBigInt(on(L(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function nn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function on(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var UR=16,a0=32,c0=1e4;async function FR(r,e){let t=$e.get(),o=new dt({value:[new nt({value:0}),new dt({value:[new Ur({value:"1.2.840.113549.1.1.1"}),new mo]}),new Dn({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Ut(UR),a=await r0(lo,e,i,{c:c0,dkLen:a0}),c=Ut(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),d=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new dt({value:[new Dn({valueHex:i}),new nt({value:c0}),new nt({value:a0}),new dt({value:[new Ur({value:"1.2.840.113549.2.11"}),new mo]})]}),f=new dt({value:[new Ur({value:"1.2.840.113549.1.5.13"}),new dt({value:[new dt({value:[new Ur({value:"1.2.840.113549.1.5.12"}),u]}),new dt({value:[new Ur({value:"2.16.840.1.101.3.4.1.42"}),new Dn({valueHex:c})]})]})]}),h=new dt({value:[f,new Dn({valueHex:d})]}).toBER(),p=new Uint8Array(h,0,h.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...B(p,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
+
`)}async function l0(r,e){let t=$e.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ci(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=VR(s),u=await r0(lo,e,a,{c,dkLen:l}),f=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Ra(await t.subtle.decrypt({name:"AES-CBC",iv:i},f,d)),{result:h}=ci(m);n=L6(h)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ci(o);n=L6(s)}else throw new g("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return u0(n)}function VR(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new g("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new g("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Ra(s.valueBlock.value[0].getValue()),a=c0,c=a0;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new g("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],d=l.valueBlock.value[0].toString();if(d!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(d!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new g("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Ra(l.valueBlock.value[1].getValue());return{cipherText:Ra(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function L6(r){return Ra(r.valueBlock.value[2].getValue())}function Ra(r){return new Uint8Array(r,0,r.byteLength)}async function B6(r){let e=await $e.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await F6(e);return{privateKey:t[0],publicKey:t[1]}}async function d0(r){let t=[await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await KR(r)],n=await F6({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function M6(r,e){let t=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await $e.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function U6(r,e,t){let n=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return $e.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function F6(r){if(r.privateKey==null||r.publicKey==null)throw new g("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([$e.get().subtle.exportKey("jwk",r.privateKey),$e.get().subtle.exportKey("jwk",r.publicKey)])}async function KR(r){return $e.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function fu(r){if(r.kty!=="RSA")throw new g("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new g("invalid key modulus","ERR_INVALID_KEY_MODULUS");return L(r.n,"base64url").length*8}var ls=8192,cs=class{_key;constructor(e){this._key=e}verify(e,t){return U6(this._key,t,e)}marshal(){return go.jwkToPkix(this._key)}get bytes(){return Br.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}},yo=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Ut(16)}sign(e){return M6(this._key,e)}get public(){if(this._publicKey==null)throw new g("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new cs(this._publicKey)}marshal(){return go.jwkToPkcs1(this._key)}get bytes(){return Mr.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return go.exportToPem(this,e);if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function u0(r){let e=go.pkcs1ToJwk(r);if(fu(e)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await d0(e);return new yo(t.privateKey,t.publicKey)}function HR(r){let e=go.pkixToJwk(r);if(fu(e)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new cs(e)}async function qR(r){if(fu(r)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await d0(r);return new yo(e.privateKey,e.publicKey)}async function WR(r){if(r>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await B6(r);return new yo(e.privateKey,e.publicKey)}var y0={};me(y0,{Secp256k1PrivateKey:()=>fs,Secp256k1PublicKey:()=>ds,generateKeyPair:()=>iA,unmarshalSecp256k1PrivateKey:()=>oA,unmarshalSecp256k1PublicKey:()=>sA});var zR=(r,e,t)=>r&e^~r&t,GR=(r,e,t)=>r&e^r&t^e&t,YR=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),wo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),bo=new Uint32Array(64),h0=class extends io{constructor(){super(64,32,8,!1),this.A=wo[0]|0,this.B=wo[1]|0,this.C=wo[2]|0,this.D=wo[3]|0,this.E=wo[4]|0,this.F=wo[5]|0,this.G=wo[6]|0,this.H=wo[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)bo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=bo[u-15],m=bo[u-2],h=Cr(f,7)^Cr(f,18)^f>>>3,p=Cr(m,17)^Cr(m,19)^m>>>10;bo[u]=p+bo[u-7]+h+bo[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Cr(a,6)^Cr(a,11)^Cr(a,25),m=d+f+zR(a,c,l)+YR[u]+bo[u]|0,p=(Cr(n,2)^Cr(n,13)^Cr(n,22))+GR(n,o,s)|0;d=l,l=c,c=a,a=i+m|0,i=s,s=o,o=n,n=m+p|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,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){bo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Eo=Js(()=>new h0);function XR(r){let e=ha(r);fr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:QR,hexToBytes:jR}=ml,us={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=us;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:QR(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=us,t=typeof r=="string"?jR(r):r;if(!Or(t))throw new Error("ui8a expected");let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=us._parseInt(t.subarray(2)),{d:i,l:a}=us._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let d=l.toString(16);return d.length&1?`0${d}`:d},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},Nn=BigInt(0),pr=BigInt(1),IK=BigInt(2),V6=BigInt(3),DK=BigInt(4);function ZR(r){let e=XR(r),{Fp:t}=e,n=e.toBytes||((h,p,y)=>{let w=p.toAffine();return vn(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(h=>{let p=h.subarray(1),y=t.fromBytes(p.subarray(0,t.BYTES)),w=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(h){let{a:p,b:y}=e,w=t.sqr(h),E=t.mul(w,h);return t.add(t.add(E,t.mul(h,p)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(h){return typeof h=="bigint"&&Nn<h&&h<e.n}function a(h){if(!i(h))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(h){let{allowedPrivateKeyLengths:p,nByteLength:y,wrapPrivateKey:w,n:E}=e;if(p&&typeof h!="bigint"){if(Or(h)&&(h=bn(h)),typeof h!="string"||!p.includes(h.length))throw new Error("Invalid key");h=h.padStart(y*2,"0")}let b;try{b=typeof h=="bigint"?h:En(Be("private key",h,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof h}`)}return w&&(b=Ae(b,E)),a(b),b}let l=new Map;function d(h){if(!(h instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(p,y,w){if(this.px=p,this.py=y,this.pz=w,p==null||!t.isValid(p))throw new Error("x required");if(y==null||!t.isValid(y))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required")}static fromAffine(p){let{x:y,y:w}=p||{};if(!p||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(p instanceof u)throw new Error("projective point not allowed");let E=b=>t.eql(b,t.ZERO);return E(y)&&E(w)?u.ZERO:new u(y,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let y=t.invertBatch(p.map(w=>w.pz));return p.map((w,E)=>w.toAffine(y[E])).map(u.fromAffine)}static fromHex(p){let y=u.fromAffine(o(Be("pointHex",p)));return y.assertValidity(),y}static fromPrivateKey(p){return u.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y}=this.toAffine();if(!t.isValid(p)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),E=s(p);if(!t.eql(w,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.eql(t.mul(y,R),t.mul(b,E)),D=t.eql(t.mul(w,R),t.mul(S,E));return A&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b:y}=e,w=t.mul(y,V6),{px:E,py:b,pz:S}=this,R=t.ZERO,A=t.ZERO,D=t.ZERO,_=t.mul(E,E),k=t.mul(b,b),O=t.mul(S,S),N=t.mul(E,b);return N=t.add(N,N),D=t.mul(E,S),D=t.add(D,D),R=t.mul(p,D),A=t.mul(w,O),A=t.add(R,A),R=t.sub(k,A),A=t.add(k,A),A=t.mul(R,A),R=t.mul(N,R),D=t.mul(w,D),O=t.mul(p,O),N=t.sub(_,O),N=t.mul(p,N),N=t.add(N,D),D=t.add(_,_),_=t.add(D,_),_=t.add(_,O),_=t.mul(_,N),A=t.add(A,_),O=t.mul(b,S),O=t.add(O,O),_=t.mul(O,N),R=t.sub(R,_),D=t.mul(O,k),D=t.add(D,D),D=t.add(D,D),new u(R,A,D)}add(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.ZERO,D=t.ZERO,_=t.ZERO,k=e.a,O=t.mul(e.b,V6),N=t.mul(y,b),P=t.mul(w,S),F=t.mul(E,R),Y=t.add(y,w),I=t.add(b,S);Y=t.mul(Y,I),I=t.add(N,P),Y=t.sub(Y,I),I=t.add(y,E);let C=t.add(b,R);return I=t.mul(I,C),C=t.add(N,F),I=t.sub(I,C),C=t.add(w,E),A=t.add(S,R),C=t.mul(C,A),A=t.add(P,F),C=t.sub(C,A),_=t.mul(k,I),A=t.mul(O,F),_=t.add(A,_),A=t.sub(P,_),_=t.add(P,_),D=t.mul(A,_),P=t.add(N,N),P=t.add(P,N),F=t.mul(k,F),I=t.mul(O,I),P=t.add(P,F),F=t.sub(N,F),F=t.mul(k,F),I=t.add(I,F),N=t.mul(P,I),D=t.add(D,N),N=t.mul(C,I),A=t.mul(Y,A),A=t.sub(A,N),N=t.mul(Y,P),_=t.mul(C,_),_=t.add(_,N),new u(A,D,_)}subtract(p){return this.add(p.negate())}is0(){return this.equals(u.ZERO)}wNAF(p){return m.wNAFCached(this,l,p,y=>{let w=t.invertBatch(y.map(E=>E.pz));return y.map((E,b)=>E.toAffine(w[b])).map(u.fromAffine)})}multiplyUnsafe(p){let y=u.ZERO;if(p===Nn)return y;if(a(p),p===pr)return this;let{endo:w}=e;if(!w)return m.unsafeLadder(this,p);let{k1neg:E,k1:b,k2neg:S,k2:R}=w.splitScalar(p),A=y,D=y,_=this;for(;b>Nn||R>Nn;)b&pr&&(A=A.add(_)),R&pr&&(D=D.add(_)),_=_.double(),b>>=pr,R>>=pr;return E&&(A=A.negate()),S&&(D=D.negate()),D=new u(t.mul(D.px,w.beta),D.py,D.pz),A.add(D)}multiply(p){a(p);let y=p,w,E,{endo:b}=e;if(b){let{k1neg:S,k1:R,k2neg:A,k2:D}=b.splitScalar(y),{p:_,f:k}=this.wNAF(R),{p:O,f:N}=this.wNAF(D);_=m.constTimeNegate(S,_),O=m.constTimeNegate(A,O),O=new u(t.mul(O.px,b.beta),O.py,O.pz),w=_.add(O),E=k.add(N)}else{let{p:S,f:R}=this.wNAF(y);w=S,E=R}return u.normalizeZ([w,E])[0]}multiplyAndAddUnsafe(p,y,w){let E=u.BASE,b=(R,A)=>A===Nn||A===pr||!R.equals(E)?R.multiplyUnsafe(A):R.multiply(A),S=b(this,y).add(b(p,w));return S.is0()?void 0:S}toAffine(p){let{px:y,py:w,pz:E}=this,b=this.is0();p==null&&(p=b?t.ONE:t.inv(E));let S=t.mul(y,p),R=t.mul(w,p),A=t.mul(E,p);if(b)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:S,y:R}}isTorsionFree(){let{h:p,isTorsionFree:y}=e;if(p===pr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:y}=e;return p===pr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(u,this,p)}toHex(p=!0){return bn(this.toRawBytes(p))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let f=e.nBitLength,m=wl(u,e.endo?Math.ceil(f/2):f);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function JR(r){let e=ha(r);return fr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function K6(r){let e=JR(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(I){return Nn<I&&I<t.ORDER}function a(I){return Ae(I,n)}function c(I){return gl(I,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:f}=ZR({...e,toBytes(I,C,$){let T=C.toAffine(),v=t.toBytes(T.x),M=vn;return $?M(Uint8Array.from([C.hasEvenY()?2:3]),v):M(Uint8Array.from([4]),v,t.toBytes(T.y))},fromBytes(I){let C=I.length,$=I[0],T=I.subarray(1);if(C===o&&($===2||$===3)){let v=En(T);if(!i(v))throw new Error("Point is not on curve");let M=u(v),V=t.sqrt(M),q=(V&pr)===pr;return($&1)===1!==q&&(V=t.neg(V)),{x:v,y:V}}else if(C===s&&$===4){let v=t.fromBytes(T.subarray(0,t.BYTES)),M=t.fromBytes(T.subarray(t.BYTES,2*t.BYTES));return{x:v,y:M}}else throw new Error(`Point of length ${C} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),m=I=>bn(uo(I,e.nByteLength));function h(I){let C=n>>pr;return I>C}function p(I){return h(I)?a(-I):I}let y=(I,C,$)=>En(I.slice(C,$));class w{constructor(C,$,T){this.r=C,this.s=$,this.recovery=T,this.assertValidity()}static fromCompact(C){let $=e.nByteLength;return C=Be("compactSignature",C,$*2),new w(y(C,0,$),y(C,$,2*$))}static fromDER(C){let{r:$,s:T}=us.toSig(Be("DER",C));return new w($,T)}assertValidity(){if(!f(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!f(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(C){return new w(this.r,this.s,C)}recoverPublicKey(C){let{r:$,s:T,recovery:v}=this,M=D(Be("msgHash",C));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let V=v===2||v===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let q=v&1?"03":"02",re=l.fromHex(q+m(V)),ie=c(V),pe=a(-M*ie),le=a(T*ie),ue=l.BASE.multiplyAndAddUnsafe(re,pe,le);if(!ue)throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return os(this.toDERHex())}toDERHex(){return us.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return os(this.toCompactHex())}toCompactHex(){return m(this.r)+m(this.s)}}let E={isValidPrivateKey(I){try{return d(I),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let I=zh(e.n);return xm(e.randomBytes(I),e.n)},precompute(I=8,C=l.BASE){return C._setWindowSize(I),C.multiply(BigInt(3)),C}};function b(I,C=!0){return l.fromPrivateKey(I).toRawBytes(C)}function S(I){let C=Or(I),$=typeof I=="string",T=(C||$)&&I.length;return C?T===o||T===s:$?T===2*o||T===2*s:I instanceof l}function R(I,C,$=!0){if(S(I))throw new Error("first arg must be private key");if(!S(C))throw new Error("second arg must be public key");return l.fromHex(C).multiply(d(I)).toRawBytes($)}let A=e.bits2int||function(I){let C=En(I),$=I.length*8-e.nBitLength;return $>0?C>>BigInt($):C},D=e.bits2int_modN||function(I){return a(A(I))},_=fa(e.nBitLength);function k(I){if(typeof I!="bigint")throw new Error("bigint expected");if(!(Nn<=I&&I<_))throw new Error(`bigint expected < 2^${e.nBitLength}`);return uo(I,e.nByteLength)}function O(I,C,$=N){if(["recovered","canonical"].some(Te=>Te in $))throw new Error("sign() legacy options not supported");let{hash:T,randomBytes:v}=e,{lowS:M,prehash:V,extraEntropy:q}=$;M==null&&(M=!0),I=Be("msgHash",I),V&&(I=Be("prehashed msgHash",T(I)));let re=D(I),ie=d(C),pe=[k(ie),k(re)];if(q!=null){let Te=q===!0?v(t.BYTES):q;pe.push(Be("extraEntropy",Te))}let le=vn(...pe),ue=re;function Le(Te){let ht=A(Te);if(!f(ht))return;let pt=c(ht),ot=l.BASE.multiply(ht).toAffine(),Rt=a(ot.x);if(Rt===Nn)return;let pn=a(pt*a(ue+Rt*ie));if(pn===Nn)return;let Ko=(ot.x===Rt?0:2)|Number(ot.y&pr),ta=pn;return M&&h(pn)&&(ta=p(pn),Ko^=1),new w(Rt,ta,Ko)}return{seed:le,k2sig:Le}}let N={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};function F(I,C,$=N){let{seed:T,k2sig:v}=O(I,C,$),M=e;return Kh(M.hash.outputLen,M.nByteLength,M.hmac)(T,v)}l.BASE._setWindowSize(8);function Y(I,C,$,T=P){let v=I;if(C=Be("msgHash",C),$=Be("publicKey",$),"strict"in T)throw new Error("options.strict was renamed to lowS");let{lowS:M,prehash:V}=T,q,re;try{if(typeof v=="string"||Or(v))try{q=w.fromDER(v)}catch(ot){if(!(ot instanceof us.Err))throw ot;q=w.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:ot,s:Rt}=v;q=new w(ot,Rt)}else throw new Error("PARSE");re=l.fromHex($)}catch(ot){if(ot.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(M&&q.hasHighS())return!1;V&&(C=e.hash(C));let{r:ie,s:pe}=q,le=D(C),ue=c(pe),Le=a(le*ue),Te=a(ie*ue),ht=l.BASE.multiplyAndAddUnsafe(re,Le,Te)?.toAffine();return ht?a(ht.x)===ie:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:R,sign:F,verify:Y,ProjectivePoint:l,Signature:w,utils:E}}function eA(r){return{hash:r,hmac:(e,...t)=>fo(r,e,fl(...t)),randomBytes:ns}}function $6(r,e){let t=n=>K6({...r,...eA(n)});return Object.freeze({...t(e),create:t})}var W6=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),H6=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),tA=BigInt(1),p0=BigInt(2),q6=(r,e)=>(r+e/p0)/e;function rA(r){let e=W6,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,d=l*l*r%e,u=Me(d,t,e)*d%e,f=Me(u,t,e)*d%e,m=Me(f,p0,e)*l%e,h=Me(m,o,e)*m%e,p=Me(h,s,e)*h%e,y=Me(p,a,e)*p%e,w=Me(y,c,e)*y%e,E=Me(w,a,e)*p%e,b=Me(E,t,e)*d%e,S=Me(b,i,e)*h%e,R=Me(S,n,e)*l%e,A=Me(R,p0,e);if(!m0.eql(m0.sqr(A),r))throw new Error("Cannot find square root");return A}var m0=yl(W6,void 0,void 0,{sqrt:rA}),Vr=$6({a:BigInt(0),b:BigInt(7),Fp:m0,n:H6,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=H6,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-tA*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=q6(s*r,e),c=q6(-n*r,e),l=Ae(r-a*t-c*o,e),d=Ae(-a*n-c*s,e),u=l>i,f=d>i;if(u&&(l=e-l),f&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}}},Eo),MK=BigInt(0);var UK=Vr.ProjectivePoint;function z6(){return Vr.utils.randomPrivateKey()}function G6(r,e){let t=Re.digest(e instanceof Uint8Array?e:e.subarray());if(dr(t))return t.then(({digest:n})=>Vr.sign(n,r).toDERRawBytes()).catch(n=>{throw new g(String(n),"ERR_INVALID_INPUT")});try{return Vr.sign(t.digest,r).toDERRawBytes()}catch(n){throw new g(String(n),"ERR_INVALID_INPUT")}}function Y6(r,e,t){let n=Re.digest(t instanceof Uint8Array?t:t.subarray());if(dr(n))return n.then(({digest:o})=>Vr.verify(e,o,r)).catch(o=>{throw new g(String(o),"ERR_INVALID_INPUT")});try{return Vr.verify(e,n.digest,r)}catch(o){throw new g(String(o),"ERR_INVALID_INPUT")}}function X6(r){return Vr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Q6(r){try{Vr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}function g0(r){try{Vr.ProjectivePoint.fromHex(r)}catch(e){throw new g(String(e),"ERR_INVALID_PUBLIC_KEY")}}function j6(r){try{return Vr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}var ds=class{_key;constructor(e){g0(e),this._key=e}verify(e,t){return Y6(this._key,t,e)}marshal(){return X6(this._key)}get bytes(){return Br.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return dr(e)?{bytes:t}=await e:t=e.bytes,t}},fs=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??j6(e),Q6(this._key),g0(this._publicKey)}sign(e){return G6(this._key,e)}get public(){return new ds(this._publicKey)}marshal(){return this._key}get bytes(){return Mr.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function oA(r){return new fs(r)}function sA(r){return new ds(r)}async function iA(){let r=z6();return new fs(r)}var On={rsa:f0,ed25519:e0,secp256k1:y0};function w0(r){let e=Object.keys(On).join(" / ");return new g(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function b0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return On[r];throw w0(r)}async function Aa(r,e){return b0(r).generateKeyPair(e??2048)}async function aA(r,e,t){if(r.toLowerCase()!=="ed25519")throw new g("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return Jh(e)}function Kr(r){let e=Br.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return On.rsa.unmarshalRsaPublicKey(t);case Ue.Ed25519:return On.ed25519.unmarshalEd25519PublicKey(t);case Ue.Secp256k1:return On.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw w0(e.Type??"unknown")}}function E0(r,e){return e=(e??"rsa").toLowerCase(),b0(e),r.bytes}async function mr(r){let e=Mr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return On.rsa.unmarshalRsaPrivateKey(t);case Ue.Ed25519:return On.ed25519.unmarshalEd25519PrivateKey(t);case Ue.Secp256k1:return On.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw w0(e.Type??"RSA")}}function x0(r,e){return e=(e??"rsa").toLowerCase(),b0(e),r.bytes}async function li(r,e){try{let t=await Vm(r,e);return await mr(t)}catch{}if(!r.includes("BEGIN"))throw new g("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return l0(r,e)}var KA=ke(Qo(),1);var Pn="/",Z6=new TextEncoder().encode(Pn),pu=Z6[0],Oe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=L(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]!==pu)throw new Error("Invalid key")}toString(e="utf8"){return B(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Pn))}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=Z6),this._buf[0]!==pu){let e=new Uint8Array(this._buf.byteLength+1);e.fill(pu,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===pu;)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(Pn).slice(1)}type(){return cA(this.baseNamespace())}name(){return lA(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Pn)||(e+=Pn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Pn):new r(e.slice(0,-1).join(Pn))}child(e){return this.toString()===Pn?e:e.toString()===Pn?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(),...uA(e.map(t=>t.namespaces()))])}};function cA(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function lA(r){let e=r.split(":");return e[e.length-1]}function uA(r){return[].concat(...r)}var $A=ke(mu(),1);var J6="ERR_IPNS_EXPIRED_RECORD",gu="ERR_UNRECOGNIZED_VALIDITY";var Ln="ERR_SIGNATURE_VERIFICATION";var _0="ERR_UNDEFINED_PARAMETER",e5="ERR_INVALID_RECORD_DATA",t5="ERR_INVALID_VALUE",r5="ERR_INVALID_EMBEDDED_KEY";var n5="ERR_RECORD_TOO_LARGE";var Vt;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(Vt||(Vt={}));var dA=["string","number","bigint","symbol"],fA=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function s5(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(dA.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(hA(r))return"Buffer";let t=pA(r);return t||"Object"}function hA(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function pA(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(fA.includes(e))return e}var x=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};x.uint=new x(0,"uint",!0);x.negint=new x(1,"negint",!0);x.bytes=new x(2,"bytes",!0);x.string=new x(3,"string",!0);x.array=new x(4,"array",!1);x.map=new x(5,"map",!1);x.tag=new x(6,"tag",!1);x.float=new x(7,"float",!0);x.false=new x(7,"false",!0);x.true=new x(7,"true",!0);x.null=new x(7,"null",!0);x.undefined=new x(7,"undefined",!0);x.break=new x(7,"break",!0);var U=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var ui=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",mA=new TextDecoder,gA=new TextEncoder;function yu(r){return ui&&globalThis.Buffer.isBuffer(r)}function Ia(r){return r instanceof Uint8Array?yu(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var l5=ui?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):a5(r,e,t):(r,e,t)=>t-e>64?mA.decode(r.subarray(e,t)):a5(r,e,t),wu=ui?r=>r.length>64?globalThis.Buffer.from(r):i5(r):r=>r.length>64?gA.encode(r):i5(r),sn=r=>Uint8Array.from(r),di=ui?(r,e,t)=>yu(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),u5=ui?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Ia(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},d5=ui?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function f5(r,e){if(yu(r)&&yu(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function i5(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),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 e}function a5(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,d;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(d=(o&31)<<6|a&63,d>127&&(s=d));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(d=(o&15)<<12|(a&63)<<6|c&63,d>2047&&(d<55296||d>57343)&&(s=d));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(d=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,d>65535&&d<1114112&&(s=d))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return S0(n)}var c5=4096;function S0(r){let e=r.length;if(e<=c5)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=c5));return t}var yA=256,Da=class{constructor(e=yA){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=d5(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=di(n,0,this.cursor)}else t=u5(this.chunks,this.cursor);return e&&this.reset(),t}};var X="CBOR decode error:",fi="CBOR encode error:",Ta=[];Ta[23]=1;Ta[24]=2;Ta[25]=3;Ta[26]=5;Ta[27]=9;function Bn(r,e,t){if(r.length-e<t)throw new Error(`${X} not enough data for type`)}var ft=[24,256,65536,4294967296,BigInt("18446744073709551616")];function Qt(r,e,t){Bn(r,e,1);let n=r[e];if(t.strict===!0&&n<ft[0])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function jt(r,e,t){Bn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<ft[1])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Zt(r,e,t){Bn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<ft[2])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Jt(r,e,t){Bn(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<ft[3])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${X} integers outside of the safe integer range are not supported`)}function h5(r,e,t,n){return new U(x.uint,Qt(r,e+1,n),2)}function p5(r,e,t,n){return new U(x.uint,jt(r,e+1,n),3)}function m5(r,e,t,n){return new U(x.uint,Zt(r,e+1,n),5)}function g5(r,e,t,n){return new U(x.uint,Jt(r,e+1,n),9)}function gr(r,e){return yt(r,0,e.value)}function yt(r,e,t){if(t<ft[0]){let n=Number(t);r.push([e|n])}else if(t<ft[1]){let n=Number(t);r.push([e|24,n])}else if(t<ft[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<ft[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<ft[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${X} encountered BigInt larger than allowable range`)}}gr.encodedSize=function(e){return yt.encodedSize(e.value)};yt.encodedSize=function(e){return e<ft[0]?1:e<ft[1]?2:e<ft[2]?3:e<ft[3]?5:9};gr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function y5(r,e,t,n){return new U(x.negint,-1-Qt(r,e+1,n),2)}function w5(r,e,t,n){return new U(x.negint,-1-jt(r,e+1,n),3)}function b5(r,e,t,n){return new U(x.negint,-1-Zt(r,e+1,n),5)}var R0=BigInt(-1),E5=BigInt(1);function x5(r,e,t,n){let o=Jt(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new U(x.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${X} integers outside of the safe integer range are not supported`);return new U(x.negint,R0-BigInt(o),9)}function bu(r,e){let t=e.value,n=typeof t=="bigint"?t*R0-E5:t*-1-1;yt(r,e.type.majorEncoded,n)}bu.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*R0-E5:t*-1-1;return n<ft[0]?1:n<ft[1]?2:n<ft[2]?3:n<ft[3]?5:9};bu.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function ka(r,e,t,n){Bn(r,e,t+n);let o=di(r,e+t,e+t+n);return new U(x.bytes,o,t+n)}function v5(r,e,t,n){return ka(r,e,1,t)}function _5(r,e,t,n){return ka(r,e,2,Qt(r,e+1,n))}function S5(r,e,t,n){return ka(r,e,3,jt(r,e+1,n))}function R5(r,e,t,n){return ka(r,e,5,Zt(r,e+1,n))}function A5(r,e,t,n){let o=Jt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer bytes lengths not supported`);return ka(r,e,9,o)}function Eu(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===x.string?wu(r.value):r.value),r.encodedBytes}function hi(r,e){let t=Eu(e);yt(r,e.type.majorEncoded,t.length),r.push(t)}hi.encodedSize=function(e){let t=Eu(e);return yt.encodedSize(t.length)+t.length};hi.compareTokens=function(e,t){return bA(Eu(e),Eu(t))};function bA(r,e){return r.length<e.length?-1:r.length>e.length?1:f5(r,e)}function Ca(r,e,t,n,o){let s=t+n;Bn(r,e,s);let i=new U(x.string,l5(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=di(r,e+t,e+s)),i}function I5(r,e,t,n){return Ca(r,e,1,t,n)}function D5(r,e,t,n){return Ca(r,e,2,Qt(r,e+1,n),n)}function T5(r,e,t,n){return Ca(r,e,3,jt(r,e+1,n),n)}function k5(r,e,t,n){return Ca(r,e,5,Zt(r,e+1,n),n)}function C5(r,e,t,n){let o=Jt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer string lengths not supported`);return Ca(r,e,9,o,n)}var N5=hi;function pi(r,e,t,n){return new U(x.array,n,t)}function O5(r,e,t,n){return pi(r,e,1,t)}function P5(r,e,t,n){return pi(r,e,2,Qt(r,e+1,n))}function L5(r,e,t,n){return pi(r,e,3,jt(r,e+1,n))}function B5(r,e,t,n){return pi(r,e,5,Zt(r,e+1,n))}function M5(r,e,t,n){let o=Jt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer array lengths not supported`);return pi(r,e,9,o)}function U5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return pi(r,e,1,1/0)}function xu(r,e){yt(r,x.array.majorEncoded,e.value)}xu.compareTokens=gr.compareTokens;xu.encodedSize=function(e){return yt.encodedSize(e.value)};function mi(r,e,t,n){return new U(x.map,n,t)}function F5(r,e,t,n){return mi(r,e,1,t)}function V5(r,e,t,n){return mi(r,e,2,Qt(r,e+1,n))}function K5(r,e,t,n){return mi(r,e,3,jt(r,e+1,n))}function $5(r,e,t,n){return mi(r,e,5,Zt(r,e+1,n))}function H5(r,e,t,n){let o=Jt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer map lengths not supported`);return mi(r,e,9,o)}function q5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return mi(r,e,1,1/0)}function vu(r,e){yt(r,x.map.majorEncoded,e.value)}vu.compareTokens=gr.compareTokens;vu.encodedSize=function(e){return yt.encodedSize(e.value)};function W5(r,e,t,n){return new U(x.tag,t,1)}function z5(r,e,t,n){return new U(x.tag,Qt(r,e+1,n),2)}function G5(r,e,t,n){return new U(x.tag,jt(r,e+1,n),3)}function Y5(r,e,t,n){return new U(x.tag,Zt(r,e+1,n),5)}function X5(r,e,t,n){return new U(x.tag,Jt(r,e+1,n),9)}function _u(r,e){yt(r,x.tag.majorEncoded,e.value)}_u.compareTokens=gr.compareTokens;_u.encodedSize=function(e){return yt.encodedSize(e.value)};var RA=20,AA=21,IA=22,DA=23;function Q5(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${X} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new U(x.null,null,1):new U(x.undefined,void 0,1)}function j5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return new U(x.break,void 0,1)}function A0(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${X} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${X} Infinity values are not supported`)}return new U(x.float,r,e)}function Z5(r,e,t,n){return A0(I0(r,e+1),3,n)}function J5(r,e,t,n){return A0(D0(r,e+1),5,n)}function e7(r,e,t,n){return A0(o7(r,e+1),9,n)}function Su(r,e,t){let n=e.value;if(n===!1)r.push([x.float.majorEncoded|RA]);else if(n===!0)r.push([x.float.majorEncoded|AA]);else if(n===null)r.push([x.float.majorEncoded|IA]);else if(n===void 0)r.push([x.float.majorEncoded|DA]);else{let o,s=!1;(!t||t.float64!==!0)&&(r7(n),o=I0($r,1),n===o||Number.isNaN(n)?($r[0]=249,r.push($r.slice(0,3)),s=!0):(n7(n),o=D0($r,1),n===o&&($r[0]=250,r.push($r.slice(0,5)),s=!0))),s||(TA(n),o=o7($r,1),$r[0]=251,r.push($r.slice(0,9)))}}Su.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){r7(n);let o=I0($r,1);if(n===o||Number.isNaN(n))return 3;if(n7(n),o=D0($r,1),n===o)return 5}return 9};var t7=new ArrayBuffer(9),yr=new DataView(t7,1),$r=new Uint8Array(t7,0);function r7(r){if(r===1/0)yr.setUint16(0,31744,!1);else if(r===-1/0)yr.setUint16(0,64512,!1);else if(Number.isNaN(r))yr.setUint16(0,32256,!1);else{yr.setFloat32(0,r);let e=yr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)yr.setUint16(0,31744,!1);else if(t===0)yr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?yr.setUint16(0,0):o<-14?yr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):yr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function I0(r,e){if(r.length-e<2)throw new Error(`${X} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function n7(r){yr.setFloat32(0,r,!1)}function D0(r,e){if(r.length-e<4)throw new Error(`${X} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function TA(r){yr.setFloat64(0,r,!1)}function o7(r,e){if(r.length-e<8)throw new Error(`${X} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Su.compareTokens=gr.compareTokens;function Se(r,e,t){throw new Error(`${X} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Ru(r){return()=>{throw new Error(`${X} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=Se;K[24]=h5;K[25]=p5;K[26]=m5;K[27]=g5;K[28]=Se;K[29]=Se;K[30]=Se;K[31]=Se;for(let r=32;r<=55;r++)K[r]=Se;K[56]=y5;K[57]=w5;K[58]=b5;K[59]=x5;K[60]=Se;K[61]=Se;K[62]=Se;K[63]=Se;for(let r=64;r<=87;r++)K[r]=v5;K[88]=_5;K[89]=S5;K[90]=R5;K[91]=A5;K[92]=Se;K[93]=Se;K[94]=Se;K[95]=Ru("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=I5;K[120]=D5;K[121]=T5;K[122]=k5;K[123]=C5;K[124]=Se;K[125]=Se;K[126]=Se;K[127]=Ru("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=O5;K[152]=P5;K[153]=L5;K[154]=B5;K[155]=M5;K[156]=Se;K[157]=Se;K[158]=Se;K[159]=U5;for(let r=160;r<=183;r++)K[r]=F5;K[184]=V5;K[185]=K5;K[186]=$5;K[187]=H5;K[188]=Se;K[189]=Se;K[190]=Se;K[191]=q5;for(let r=192;r<=215;r++)K[r]=W5;K[216]=z5;K[217]=G5;K[218]=Y5;K[219]=X5;K[220]=Se;K[221]=Se;K[222]=Se;K[223]=Se;for(let r=224;r<=243;r++)K[r]=Ru("simple values are not supported");K[244]=Se;K[245]=Se;K[246]=Se;K[247]=Q5;K[248]=Ru("simple values are not supported");K[249]=Z5;K[250]=J5;K[251]=e7;K[252]=Se;K[253]=Se;K[254]=Se;K[255]=j5;var Hr=[];for(let r=0;r<24;r++)Hr[r]=new U(x.uint,r,1);for(let r=-1;r>=-24;r--)Hr[31-r]=new U(x.negint,r,1);Hr[64]=new U(x.bytes,new Uint8Array(0),1);Hr[96]=new U(x.string,"",1);Hr[128]=new U(x.array,0,1);Hr[160]=new U(x.map,0,1);Hr[244]=new U(x.false,!1,1);Hr[245]=new U(x.true,!0,1);Hr[246]=new U(x.null,null,1);function s7(r){switch(r.type){case x.false:return sn([244]);case x.true:return sn([245]);case x.null:return sn([246]);case x.bytes:return r.value.length?void 0:sn([64]);case x.string:return r.value===""?sn([96]):void 0;case x.array:return r.value===0?sn([128]):void 0;case x.map:return r.value===0?sn([160]):void 0;case x.uint:return r.value<24?sn([Number(r.value)]):void 0;case x.negint:if(r.value>=-24)return sn([31-Number(r.value)])}}var CA={float64:!1,mapSorter:PA,quickEncodeToken:s7};function NA(){let r=[];return r[x.uint.major]=gr,r[x.negint.major]=bu,r[x.bytes.major]=hi,r[x.string.major]=N5,r[x.array.major]=xu,r[x.map.major]=vu,r[x.tag.major]=_u,r[x.float.major]=Su,r}var i7=NA(),T0=new Da,Iu=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${fi} object contains circular references`);return new r(t,e)}},xo={null:new U(x.null,null),undefined:new U(x.undefined,void 0),true:new U(x.true,!0),false:new U(x.false,!1),emptyArray:new U(x.array,0),emptyMap:new U(x.map,0)},vo={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new U(x.float,r):r>=0?new U(x.uint,r):new U(x.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new U(x.uint,r):new U(x.negint,r)},Uint8Array(r,e,t,n){return new U(x.bytes,r)},string(r,e,t,n){return new U(x.string,r)},boolean(r,e,t,n){return r?xo.true:xo.false},null(r,e,t,n){return xo.null},undefined(r,e,t,n){return xo.undefined},ArrayBuffer(r,e,t,n){return new U(x.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new U(x.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[xo.emptyArray,new U(x.break)]:xo.emptyArray;n=Iu.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Au(i,t,n);return t.addBreakTokens?[new U(x.array,r.length),o,new U(x.break)]:[new U(x.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[xo.emptyMap,new U(x.break)]:xo.emptyMap;n=Iu.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Au(l,t,n),Au(o?r.get(l):r[l],t,n)];return OA(a,t),t.addBreakTokens?[new U(x.map,i),a,new U(x.break)]:[new U(x.map,i),a]}};vo.Map=vo.Object;vo.Buffer=vo.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))vo[`${r}Array`]=vo.DataView;function Au(r,e={},t){let n=s5(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||vo[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=vo[n];if(!s)throw new Error(`${fi} unsupported type: ${n}`);return s(r,n,e,t)}function OA(r,e){e.mapSorter&&r.sort(e.mapSorter)}function PA(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=i7[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function a7(r,e,t,n){if(Array.isArray(e))for(let o of e)a7(r,o,t,n);else t[e.type.major](r,e,n)}function c7(r,e,t){let n=Au(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new Da(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return Ia(a.chunks[0])}}return T0.reset(),a7(T0,n,e,t),T0.toBytes(!0)}function gi(r,e){return e=Object.assign({},CA,e),c7(r,i7,e)}var LA={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},k0=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=Hr[e];if(t===void 0){let n=K[e];if(!n)throw new Error(`${X} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Na=Symbol.for("DONE"),Du=Symbol.for("BREAK");function BA(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=Oa(e,t);if(s===Du){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed array`)}if(s===Na)throw new Error(`${X} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function MA(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=Oa(e,t);if(a===Du){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed map`)}if(a===Na)throw new Error(`${X} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${X} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${X} found repeat map key "${a}"`);let c=Oa(e,t);if(c===Na)throw new Error(`${X} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function Oa(r,e){if(r.done())return Na;let t=r.next();if(t.type===x.break)return Du;if(t.type.terminal)return t.value;if(t.type===x.array)return BA(t,r,e);if(t.type===x.map)return MA(t,r,e);if(t.type===x.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=Oa(r,e);return e.tags[t.value](n)}throw new Error(`${X} tag not supported (${t.value})`)}throw new Error("unsupported")}function C0(r,e){if(!(r instanceof Uint8Array))throw new Error(`${X} data to decode must be a Uint8Array`);e=Object.assign({},LA,e);let t=e.tokenizer||new k0(r,e),n=Oa(t,e);if(n===Na)throw new Error(`${X} did not find any content to decode`);if(n===Du)throw new Error(`${X} got unexpected break`);return[n,r.subarray(t.pos())]}function wr(r,e){let[t,n]=C0(r,e);if(n.length>0)throw new Error(`${X} too many terminals, data makes no sense`);return t}var er=ke(Qo(),1);var l7=Ct("ipns:utils"),u7=L("/ipns/"),UA=114,d7=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw l7.error(n),(0,er.default)(n,_0)}let t;if(e.pubKey!=null){try{t=Kr(e.pubKey)}catch(o){throw l7.error(o),o}if(!(await ut(e.pubKey)).equals(r))throw(0,er.default)(new Error("Embedded public key did not match PeerID"),r5)}else r.publicKey!=null&&(t=Kr(r.publicKey));if(t!=null)return t;throw(0,er.default)(new Error("no public key is available"),_0)};var f7=r=>{let e=L("ipns-signature:");return _e([e,r])},Pa=r=>"signatureV1"in r?Vt.encode({value:L(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:L(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Vt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function an(r){let e=Vt.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,er.default)(new Error("missing data or signatureV2"),Ln);let t=p7(e.data),n=FA(t.Value),o=B(t.Validity);if(e.value!=null&&e.signatureV1!=null)return VA(e),{value:n,validityType:Vt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:Vt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var N0=r=>_e([u7,r.toBytes()]),h7=r=>Ye(r.slice(u7.length));var p7=r=>{let e=wr(r);if(e.ValidityType===0)e.ValidityType=Vt.ValidityType.EOL;else throw(0,er.default)(new Error("Unknown validity type"),gu);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},FA=r=>{if(r!=null){if(Fs(r))return`/ipns/${r.toCID().toString(to)}`;if(r instanceof Uint8Array){let n=B(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=oe.asCID(r);if(t!=null)return t.code===UA?`/ipns/${t.toString(to)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${oe.decode(r).toV1().toString()}`:`/ipfs/${oe.parse(e).toV1().toString()}`}catch{}}throw(0,er.default)(new Error("Value must be a valid content path starting with /"),t5)},VA=r=>{if(r.data==null)throw(0,er.default)(new Error("Record data is missing"),e5);let e=p7(r.data);if(!j(e.Value,r.value??new Uint8Array(0)))throw(0,er.default)(new Error('Field "value" did not match between protobuf and CBOR'),Ln);if(!j(e.Validity,r.validity??new Uint8Array(0)))throw(0,er.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Ln);if(e.ValidityType!==r.validityType)throw(0,er.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Ln);if(e.Sequence!==r.sequence)throw(0,er.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Ln);if(e.TTL!==r.ttl)throw(0,er.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Ln)};var AH=Ct("ipns"),IH=cr.code,HA="/ipns/",DH=HA.length;var La=ke(Qo(),1),m7=ke(mu(),1);var ku=Ct("ipns:validator"),qA=1024*10,WA=async(r,e)=>{let t=an(e),n;try{let o=f7(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw ku.error("record signature verification failed"),(0,La.default)(new Error("record signature verification failed"),Ln);if(t.validityType===Vt.ValidityType.EOL){if(m7.default.fromString(t.validity).toDate().getTime()<Date.now())throw ku.error("record has expired"),(0,La.default)(new Error("record has expired"),J6)}else if(t.validityType!=null)throw ku.error("unrecognized validity type"),(0,La.default)(new Error("unrecognized validity type"),gu);ku("ipns record for %s is valid",t.value)};async function Cu(r,e){if(e.byteLength>qA)throw(0,La.default)(new Error("record too large"),n5);let t=h7(r),n=an(e),o=await d7(t,n);await WA(o,e)}async function*Ba(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}var P0=ke(y7(),1);var _o=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},L0=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},w7=r=>globalThis.DOMException===void 0?new L0(r):new DOMException(r),b7=r=>{let e=r.reason===void 0?w7("This operation was aborted."):r.reason;return e instanceof Error?e:w7(e)};function qr(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,d)=>{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:f}=e;f.aborted&&d(b7(f)),f.addEventListener("abort",()=>{d(b7(f))})}if(t===Number.POSITIVE_INFINITY){r.then(l,d);return}let u=new _o;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(f){d(f)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?d(o):(u.message=o??`Promise timed out after ${t} milliseconds`,d(u))},t),(async()=>{try{l(await r)}catch(f){d(f)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function B0(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 Ua=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=B0(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}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 br=class extends P0.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Ua,...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.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#c=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#a=e.autoStart===!1}get#b(){return this.#t||this.#r<this.#i}get#E(){return this.#s<this.#u}#x(){this.#s--,this.#d(),this.emit("next")}#v(){this.#w(),this.#y(),this.#l=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!0}return!1}#d(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#a){let e=!this.#_;if(this.#b&&this.#E){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#o!==void 0||(this.#o=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#e?this.#s:0,this.#f()}#f(){for(;this.#d(););}get concurrency(){return this.#u}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.#u=e,this.#f()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=qr(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof _o&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#d()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#f(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#a}};function YA(r){return r[Symbol.asyncIterator]!=null}function XA(r){if(YA(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var ps=XA;var M0=L("/ipns/");function E7(r){return j(r.subarray(0,M0.byteLength),M0)}var x7=r=>Ye(r.slice(M0.length)),Ou=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*kr(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!E7(e))return;let o=x7(e),s=an(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!E7(e))throw new g("Not found","ERR_NOT_FOUND");let n=x7(e);try{let o=await this.client.getIPNS(n,t);return Pa(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new g("Not found","ERR_NOT_FOUND"):o}}},Pu=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await ps(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var Kt=Ct("delegated-routing-v1-http-api-client"),v7={concurrentRequests:4,timeout:3e4},Lu=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal),this.httpQueue=new br({concurrency:t.concurrentRequests??v7.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??v7.timeout,this.contentRouting=new Ou(this),this.peerRouting=new Pu(this)}get[Zr](){return this.contentRouting}get[Jr](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){Kt("getProviders starts: %c",e);let n=ct([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Providers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ba(ul(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Kt.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),Kt("getProviders finished: %c",e)}}async*getPeers(e,t={}){Kt("getPeers starts: %c",e);let n=ct([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Peers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ba(ul(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Kt.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),Kt("getPeers finished: %c",e)}}async getIPNS(e,t={}){Kt("getIPNS starts: %c",e);let n=ct([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(Kt("getIPNS GET %s %d",i,c.status),c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),d=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await Cu(N0(e),d),an(d)}catch(a){throw Kt.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),Kt("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){Kt("putIPNS starts: %c",e);let o=ct([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),s=se(),i=se();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let c=Pa(t),d=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(Kt("putIPNS PUT %s %d",a,d.status),d.status!==200)throw new g("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw Kt.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),Kt("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(Q)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ge(e.ID),Addrs:n,Protocols:t}}};function _7(r,e={}){return new Lu(new URL(r),e)}var U0=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function F0(r){return new U0(r)}var yi={};me(yi,{abortedError:()=>eI,closeFailedError:()=>jA,deleteFailedError:()=>R7,getFailedError:()=>ZA,hasFailedError:()=>JA,notFoundError:()=>Fa,openFailedError:()=>QA,putFailedError:()=>S7});var Mn=ke(Qo(),1);function QA(r){return r=r??new Error("Open failed"),(0,Mn.default)(r,"ERR_OPEN_FAILED")}function jA(r){return r=r??new Error("Close failed"),(0,Mn.default)(r,"ERR_CLOSE_FAILED")}function S7(r){return r=r??new Error("Put failed"),(0,Mn.default)(r,"ERR_PUT_FAILED")}function ZA(r){return r=r??new Error("Get failed"),(0,Mn.default)(r,"ERR_GET_FAILED")}function R7(r){return r=r??new Error("Delete failed"),(0,Mn.default)(r,"ERR_DELETE_FAILED")}function JA(r){return r=r??new Error("Has failed"),(0,Mn.default)(r,"ERR_HAS_FAILED")}function Fa(r){return r=r??new Error("Not Found"),(0,Mn.default)(r,"ERR_NOT_FOUND")}function eI(r){return r=r??new Error("Aborted"),(0,Mn.default)(r,"ERR_ABORTED")}var ms=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await this.get(n,t)}}async delete(e,t){await Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Va=class extends ms{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(st.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(st.encode(e.multihash.bytes));if(t==null)throw Fa();return t}has(e){return this.data.has(st.encode(e.multihash.bytes))}async delete(e){this.data.delete(st.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:oe.createV1(Pc,Ir(st.decode(e))),block:t}}};function tI(r){return r[Symbol.asyncIterator]!=null}function rI(r,e){if(tI(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=Ls(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var Wr=rI;var Kq=Ct("blockstore:core:tiered");var Wq={...yi};var A7=ke(Qo(),1);function Bu(r){return r=r??new Error("Not Found"),(0,A7.default)(r,"ERR_NOT_FOUND")}var I7="SHARDING";function oI(r){return r[Symbol.asyncIterator]!=null}function sI(r){if(oI(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 $a=sI;function iI(r){return r[Symbol.asyncIterator]!=null}function aI(r,e){return iI(r)?async function*(){yield*(await $a(r)).sort(e)}():function*(){yield*$a(r).sort(e)}()}var Mu=aI;var Un=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 ur(this.putMany(e,n)),e=[],await ur(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=Wr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Wr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Mu(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Wr(n,()=>o++>=s)}return e.limit!=null&&(n=no(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Wr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Wr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Mu(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Wr(n,()=>s++>=o)}return e.limit!=null&&(n=no(n,e.limit)),n}};var gs=class extends Un{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw Bu();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Oe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Oe(e)}};var xW=new Oe(I7);var OW=Ct("datastore:core:tiered");var V0=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Uu(r,e,t,n){let o=new V0(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{n?.filter?.(l)!==!1&&(r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l))},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var Fu=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function $t(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Fu(t?.errorMessage,t?.errorCode));let n,o=new Fu(t?.errorMessage,t?.errorCode);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 Vu=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=se(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new Dr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function uI(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ku=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=uI(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,ve(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&this.controller.abort(new Dr)}async join(e={}){let t=new Vu(new Error("where").stack,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 $t(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.signal?.removeEventListener("abort",this.onAbort)})}};function dI(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 Fn=class extends Ce{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=dI(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new Ku(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail:s}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Dr)}),this.clear()}async onEmpty(e){this.size!==0&&await Uu(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Uu(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Uu(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=lt({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)},i=()=>{n()},a=()=>{n(new g("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var N7="/pin/",T7="/pinned-block/",K0=to,k7=1;function C7(r){return r.version===0&&(r=r.toV1()),new Oe(`${N7}${r.toString(K0)}`)}var $u=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=C7(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new Fn({concurrency:k7});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>j(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,gi(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Oe(`${T7}${K0.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=wr(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,gi(s),n),n.onProgress?.(new Ee("helia:pin:add",e))}}async*rm(e,t={}){let n=C7(e),o=await this.datastore.get(n,t),s=wr(o);await this.datastore.delete(n,t);let i=new Fn({concurrency:k7});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>j(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:N7+(e.cid!=null?`${e.cid.toString(to)}`:"")},e)){let o=oe.parse(t.toString().substring(5),to),s=wr(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Oe(`${T7}${K0.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};function wi(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}var wt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return wi(this.map.entries(),e=>[ge(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,ge(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return wi(this.map.keys(),e=>ge(e))}values(){return this.map.values()}get size(){return this.map.size}};var Je=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 wi(this.set.entries(),e=>{let t=ge(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ge(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return wi(this.set.values(),e=>ge(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 Hu=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await Qn(...this.routers)}async stop(){await jn(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new Je;for await(let o of Nt(...bi(this.routers,"findProviders").map(s=>s.findProviders(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(bi(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(bi(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(bi(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Nt(...bi(this.routers,"findPeer").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;throw new g("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new Je;for await(let o of Nt(...bi(this.routers,"getClosestPeers").map(s=>s.getClosestPeers(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}};function bi(r,e){return r.filter(t=>t[e]!=null)}var So={},Ei=r=>{r.addEventListener("message",e=>{Ei.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Ei.dispatchEvent("message",r,e)})};Ei.addEventListener=(r,e)=>{So[r]==null&&(So[r]=[]),So[r].push(e)};Ei.removeEventListener=(r,e)=>{So[r]!=null&&(So[r]=So[r].filter(t=>t===e))};Ei.dispatchEvent=function(r,e,t){So[r]!=null&&So[r].forEach(n=>n(e,t))};var $0=Ei;var H0="lock:worker:request-read",q0="lock:worker:release-read",W0="lock:master:grant-read",z0="lock:worker:request-write",G0="lock:worker:release-write",Y0="lock:master:grant-write";var O7=(r=21)=>Math.random().toString().substring(2);var P7=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=d=>{if(d==null||d.data==null)return;let u={type:d.data.type,name:d.data.name,identifier:d.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},L7=(r,e,t,n)=>async()=>{let o=O7();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},fI={singleProcess:!1},B7=r=>{if(r=Object.assign({},fI,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return $0.addEventListener("message",P7(t,"requestReadLock",H0,q0,W0)),$0.addEventListener("message",P7(t,"requestWriteLock",z0,G0,Y0)),t}return{isWorker:!0,readLock:t=>L7(t,H0,W0,q0),writeLock:t=>L7(t,z0,Y0,G0)}};var ys={},Ro;async function X0(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>qr((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var hI=(r,e)=>{if(Ro.isWorker===!0)return{readLock:Ro.readLock(r,e),writeLock:Ro.writeLock(r,e)};let t=new br({concurrency:1}),n;return{async readLock(){if(n!=null)return X0(n,e);n=new br({concurrency:e.concurrency,autoStart:!1});let o=n,s=X0(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,X0(t,e)}}},pI={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function Ha(r){let e=Object.assign({},pI,r);return Ro==null&&(Ro=B7(e),Ro.isWorker!==!0&&(Ro.addEventListener("requestReadLock",t=>{ys[t.data.name]!=null&&ys[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Ro.addEventListener("requestWriteLock",async t=>{ys[t.data.name]!=null&&ys[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),ys[e.name]==null&&(ys[e.name]=hI(e.name,e)),ys[e.name]}var qu=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=Ha({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await Qn(this.child),this.started=!0}async stop(){await jn(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany(async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Error("CID was pinned");yield s}}(),t)}finally{n()}}async has(e,t={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}};var U7=42;function mI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=oe.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new U(x.tag,U7),new U(x.bytes,t)]}function gI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function yI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var M7={float64:!0,typeEncoders:{Object:mI,undefined:gI,number:yI}},Yz={...M7,typeEncoders:{...M7.typeEncoders}};function wI(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return oe.decode(r.subarray(1))}var Q0={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Q0.tags[U7]=wI;var Xz={...Q0,tags:Q0.tags.slice()};var F7=113;var V7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===x.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===x.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[x.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[x.negint.major](e,t){this[x.uint.major](e,t)}[x.bytes.major](e,t){throw new Error(`${fi} unsupported type: Uint8Array`)}[x.string.major](e,t){this.prefix(e);let n=wu(JSON.stringify(t.value));e.push(n.length>32?Ia(n):n)}[x.array.major](e,t){this.prefix(e),this.inRecursive.push({type:x.array,elements:0}),e.push([91])}[x.map.major](e,t){this.prefix(e),this.inRecursive.push({type:x.map,elements:0}),e.push([123])}[x.tag.major](e,t){}[x.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===x.array)e.push([93]);else if(i.type===x.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${fi} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};var ws=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${X} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${X} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new U(x.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${X} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${X} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new U(x.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new U(i>=0?x.uint:x.negint,i,this._pos-e):new U(i>=0?x.uint:x.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${X} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new U(x.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${X} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${X} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${X} unexpected unicode sequence at position ${this._pos}`);let c,l,d,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],d=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(d&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|d&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${X} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${X} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new U(x.string,S0(t),this._pos-e);default:if(s<32)throw new Error(`${X} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${X} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new U(x.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new U(x.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new U(x.null,null,4);case 102:return this.expect([102,97,108,115,101]),new U(x.false,!1,5);case 116:return this.expect([116,114,117,101]),new U(x.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${X} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new U(x.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${X} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Wu(r,e){return e=Object.assign({tokenizer:new ws(r,e)},e),wr(r,e)}var xI={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};xI.tags[42]=oe.parse;var $7=297;var fG=new TextDecoder;var hG=new TextEncoder;var _I=new TextDecoder;function j0(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function zu(r,e){let t;[t,e]=j0(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function H7(r,e){let t;return[t,e]=j0(r,e),[t&7,t>>3,e]}function SI(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=H7(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=zu(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=zu(r,n),e.Name=_I.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=j0(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function q7(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=H7(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=zu(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=zu(r,t),n.push(SI(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var mG=new TextEncoder,gG=2**32,yG=2**31;var EG=new TextEncoder;var W7=112;function z7(r){let e=q7(r),t={};return e.Data&&(t.Data=e.Data),e.Links&&(t.Links=e.Links.map(n=>{let o={};try{o.Hash=oe.decode(n.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return n.Name!==void 0&&(o.Name=n.Name),n.Tsize!==void 0&&(o.Tsize=n.Tsize),o})),t}var AI={codec:W7,*walk(r){yield*z7(r).Links.map(t=>t.Hash)}},II={codec:Pc,*walk(){}},G7=42,DI={codec:F7,*walk(r){let e=[],t=[];t[G7]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=oe.decode(n.subarray(1));return e.push(o),o},wr(r,{tags:t}),yield*e}},Z0=class extends ws{tokenBuffer;constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===x.map){let t=this._next();if(t.type===x.string&&t.value==="/"){let n=this._next();if(n.type===x.string){if(this._next().type!==x.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new U(x.tag,42,0)}if(n.type===x.map){let o=this._next();if(o.type===x.string&&o.value==="bytes"){let s=this._next();if(s.type===x.string){for(let a=0;a<2;a++)if(this._next().type!==x.break)throw new Error("Invalid encoded Bytes form");let i=ir.decode(`m${s.value}`);return new U(x.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},TI={codec:$7,*walk(r){let e=[],t=[];t[G7]=n=>{let o=oe.parse(n);return e.push(o),o},Wu(r,{tags:t,tokenizer:new Z0(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},kI={codec:X4,*walk(){}};function Y7(r=[]){let e={};return[AI,II,DI,TI,kI,...r].forEach(t=>{e[t.codec]=t}),e}var J0=new Oe("/version"),X7=1;async function Q7(r){if(!await r.has(J0)){await r.put(J0,L(`${X7}`));return}let e=await r.get(J0),t=B(e);if(parseInt(t,10)!==X7)throw new Error("Unknown datastore version, a datastore migration may be required")}function j7(r=[]){let e={};return[Re,Sf,cr,...r].forEach(t=>{e[t.code]=t}),e}function CI(r){return typeof r.retrieve=="function"}function NI(r){return typeof r.announce=="function"}var Gu=class{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.child=e.blockstore,this.blockRetrievers=(e.blockBrokers??[]).filter(CI),this.blockAnnouncers=(e.blockBrokers??[]).filter(NI),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await Qn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await jn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(n.onProgress?.(new Ee("blocks:put:duplicate",e)),e):(n.onProgress?.(new Ee("blocks:put:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,t,n)}),n.onProgress?.(new Ee("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Wr(e,async({cid:s})=>{let i=await this.child.has(s);return i&&t.onProgress?.(new Ee("blocks:put-many:duplicate",s)),!i}),o=$o(n,({cid:s,block:i})=>{t.onProgress?.(new Ee("blocks:put-many:providers:notify",s)),this.blockAnnouncers.forEach(a=>{a.announce(s,i,t)})});t.onProgress?.(new Ee("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e)){t.onProgress?.(new Ee("blocks:get:providers:get",e));let n=await Z7(e,this.blockRetrievers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new Ee("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new Ee("blocks:get:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,n,t)}),n}return t.onProgress?.(new Ee("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new Ee("blocks:get-many:blockstore:get-many")),yield*this.child.getMany($o(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new Ee("blocks:get-many:providers:get",n));let o=await Z7(n,this.blockRetrievers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new Ee("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new Ee("blocks:get-many:providers:notify",n)),this.blockAnnouncers.forEach(s=>{s.announce(n,o,t)})}}))}async delete(e,t={}){t.onProgress?.(new Ee("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new Ee("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany(async function*(){for await(let n of e)yield n}(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new Ee("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},OI=(r,e)=>{if(e==null)throw new g(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!j(n.digest,r.multihash.digest))throw new g("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function Z7(r,e,t,n){let o=OI(r,t),s=new AbortController,i=ct([s.signal,n.signal]);try{return await Promise.any(e.map(async a=>{try{let c=!1,l=await a.retrieve(r,{...n,signal:i,validateFn:async d=>{await o(d),c=!0}});return c||await o(l),l}catch(c){throw n.log.error("could not retrieve verified block for %c",r,c),c}}))}finally{i.clear()}}var Yu=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;log;constructor(e){this.logger=e.logger??Zn(),this.log=this.logger.forComponent("helia"),this.hashers=j7(e.hashers),this.dagWalkers=Y7(e.dagWalkers);let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],...e.components??{}};t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new Gu(t);this.pins=new $u(e.datastore,n,this.dagWalkers),this.blockstore=new qu(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,this.routing=new Hu(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[Zr]!=null&&s.push(o[Zr]),o[Jr]!=null&&s.push(o[Jr]),s})})}async start(){await Q7(this.datastore),await Qn(this.blockstore,this.datastore,this.routing)}async stop(){await jn(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await ur(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new Ee("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new Ee("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var Xu=class extends Yu{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var e2=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=se(),this.haveNext=se()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let e=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=se(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=se(),await $t(this.needNext.promise,t?.signal,t)}};function J7(){return new e2}var Qu=class extends Error{code;constructor(e,t){super(e),this.code=t}},t2=class extends Qu{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function eg(r,e){let t=J7();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new de;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new t2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:f}=await Promise.race([n.next(),l]);return u===!0?new de:f}for(;o.byteLength<i;){let{value:u,done:f}=await Promise.race([n.next(),l]);if(f===!0)throw new Qu("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let d=o.sublist(0,i);return o.consume(i),d}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var ju=class extends Error{code;constructor(e,t){super(e),this.code=t}};function cn(r,e={}){let t=eg(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Fe(e.maxDataLength));let n=e?.lengthDecoder??Gt,o=e?.lengthEncoder??ze;return{read:async i=>{let a=-1,c=new de;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ju("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new ju("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new de(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new de(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function r2(){let r=se(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function tg(){let r=r2(),e=r2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var xi=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Vn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function rg(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var ng=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),PI=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!PI)throw new Error("Non little-endian hardware is not supported");function Zu(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Ju(r){if(typeof r=="string")r=Zu(r);else if(rg(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var LI=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function og(r,e){if(e!==void 0&&(typeof e!="object"||!LI(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function bs(r,e){if(!rg(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function sg(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}var n2=(r,e)=>(Object.assign(e,r),e);function o2(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 e1(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function s2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function BI(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function vi(r,...e){if(!BI(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function i2(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 ig(r,e){vi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var bt=(r,e)=>r[e++]&255|(r[e++]&255)<<8,a2=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=Ju(e),bs(e,32);let t=bt(e,0),n=bt(e,2),o=bt(e,4),s=bt(e,6),i=bt(e,8),a=bt(e,10),c=bt(e,12),l=bt(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=bt(e,16+2*d)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],m=i[6],h=i[7],p=i[8],y=i[9],w=bt(e,t+0),E=bt(e,t+2),b=bt(e,t+4),S=bt(e,t+6),R=bt(e,t+8),A=bt(e,t+10),D=bt(e,t+12),_=bt(e,t+14),k=s[0]+(w&8191),O=s[1]+((w>>>13|E<<3)&8191),N=s[2]+((E>>>10|b<<6)&8191),P=s[3]+((b>>>7|S<<9)&8191),F=s[4]+((S>>>4|R<<12)&8191),Y=s[5]+(R>>>1&8191),I=s[6]+((R>>>14|A<<2)&8191),C=s[7]+((A>>>11|D<<5)&8191),$=s[8]+((D>>>8|_<<8)&8191),T=s[9]+(_>>>5|o),v=0,M=v+k*a+O*(5*y)+N*(5*p)+P*(5*h)+F*(5*m);v=M>>>13,M&=8191,M+=Y*(5*f)+I*(5*u)+C*(5*d)+$*(5*l)+T*(5*c),v+=M>>>13,M&=8191;let V=v+k*c+O*a+N*(5*y)+P*(5*p)+F*(5*h);v=V>>>13,V&=8191,V+=Y*(5*m)+I*(5*f)+C*(5*u)+$*(5*d)+T*(5*l),v+=V>>>13,V&=8191;let q=v+k*l+O*c+N*a+P*(5*y)+F*(5*p);v=q>>>13,q&=8191,q+=Y*(5*h)+I*(5*m)+C*(5*f)+$*(5*u)+T*(5*d),v+=q>>>13,q&=8191;let re=v+k*d+O*l+N*c+P*a+F*(5*y);v=re>>>13,re&=8191,re+=Y*(5*p)+I*(5*h)+C*(5*m)+$*(5*f)+T*(5*u),v+=re>>>13,re&=8191;let ie=v+k*u+O*d+N*l+P*c+F*a;v=ie>>>13,ie&=8191,ie+=Y*(5*y)+I*(5*p)+C*(5*h)+$*(5*m)+T*(5*f),v+=ie>>>13,ie&=8191;let pe=v+k*f+O*u+N*d+P*l+F*c;v=pe>>>13,pe&=8191,pe+=Y*a+I*(5*y)+C*(5*p)+$*(5*h)+T*(5*m),v+=pe>>>13,pe&=8191;let le=v+k*m+O*f+N*u+P*d+F*l;v=le>>>13,le&=8191,le+=Y*c+I*a+C*(5*y)+$*(5*p)+T*(5*h),v+=le>>>13,le&=8191;let ue=v+k*h+O*m+N*f+P*u+F*d;v=ue>>>13,ue&=8191,ue+=Y*l+I*c+C*a+$*(5*y)+T*(5*p),v+=ue>>>13,ue&=8191;let Le=v+k*p+O*h+N*m+P*f+F*u;v=Le>>>13,Le&=8191,Le+=Y*d+I*l+C*c+$*a+T*(5*y),v+=Le>>>13,Le&=8191;let Te=v+k*y+O*p+N*h+P*m+F*f;v=Te>>>13,Te&=8191,Te+=Y*u+I*d+C*l+$*c+T*a,v+=Te>>>13,Te&=8191,v=(v<<2)+v|0,v=v+M|0,M=v&8191,v=v>>>13,V+=v,s[0]=M,s[1]=V,s[2]=q,s[3]=re,s[4]=ie,s[5]=pe,s[6]=le,s[7]=ue,s[8]=Le,s[9]=Te}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){i2(this);let{buffer:t,blockLen:n}=this;e=Ju(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){i2(this),ig(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function MI(r){let e=(n,o)=>r(o).update(Ju(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var ag=MI(r=>new a2(r));var UI=Zu("expand 16-byte k"),FI=Zu("expand 32-byte k"),VI=Vn(UI),KI=Vn(FI);function G(r,e){return r<<e|r>>>32-e}function c2(r){return r.byteOffset%4===0}var t1=64,$I=16,lg=2**32-1,cg=new Uint32Array;function HI(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(t1),d=Vn(l),u=c2(o)&&c2(s),f=u?Vn(o):cg,m=u?Vn(s):cg;for(let h=0;h<c;i++){if(r(e,t,n,d,i,a),i>=lg)throw new Error("arx: counter overflow");let p=Math.min(t1,c-h);if(u&&p===t1){let y=h/4;if(h%4!==0)throw new Error("arx: invalid block position");for(let w=0,E;w<$I;w++)E=y+w,m[E]=f[E]^d[w];h+=t1;continue}for(let y=0,w;y<p;y++)w=h+y,s[w]=o[w]^l[y];h+=p}}function l2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=og({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return e1(o),e1(i),s2(s),s2(t),(a,c,l,d,u=0)=>{vi(a),vi(c),vi(l);let f=l.length;if(d||(d=new Uint8Array(f)),vi(d),e1(u),u<0||u>=lg)throw new Error("arx: counter overflow");if(d.length<f)throw new Error(`arx: output (${d.length}) is shorter than data (${f})`);let m=[],h=a.length,p,y;if(h===32)p=a.slice(),m.push(p),y=KI;else if(h===16&&t)p=new Uint8Array(32),p.set(a),p.set(a,16),y=VI,m.push(p);else throw new Error(`arx: invalid 32-byte key, got length=${h}`);c2(c)||(c=c.slice(),m.push(c));let w=Vn(p);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,Vn(c.subarray(0,16)),w),c=c.subarray(16)}let E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){let S=new Uint8Array(12);S.set(c,s?0:12-c.length),c=S,m.push(c)}let b=Vn(c);for(HI(r,y,w,b,l,d,u,i);m.length>0;)m.pop().fill(0);return d}}function fg(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],d=e[0],u=e[1],f=e[2],m=e[3],h=e[4],p=e[5],y=e[6],w=e[7],E=o,b=t[0],S=t[1],R=t[2],A=i,D=a,_=c,k=l,O=d,N=u,P=f,F=m,Y=h,I=p,C=y,$=w,T=E,v=b,M=S,V=R;for(let re=0;re<s;re+=2)A=A+O|0,T=G(T^A,16),Y=Y+T|0,O=G(O^Y,12),A=A+O|0,T=G(T^A,8),Y=Y+T|0,O=G(O^Y,7),D=D+N|0,v=G(v^D,16),I=I+v|0,N=G(N^I,12),D=D+N|0,v=G(v^D,8),I=I+v|0,N=G(N^I,7),_=_+P|0,M=G(M^_,16),C=C+M|0,P=G(P^C,12),_=_+P|0,M=G(M^_,8),C=C+M|0,P=G(P^C,7),k=k+F|0,V=G(V^k,16),$=$+V|0,F=G(F^$,12),k=k+F|0,V=G(V^k,8),$=$+V|0,F=G(F^$,7),A=A+N|0,V=G(V^A,16),C=C+V|0,N=G(N^C,12),A=A+N|0,V=G(V^A,8),C=C+V|0,N=G(N^C,7),D=D+P|0,T=G(T^D,16),$=$+T|0,P=G(P^$,12),D=D+P|0,T=G(T^D,8),$=$+T|0,P=G(P^$,7),_=_+F|0,v=G(v^_,16),Y=Y+v|0,F=G(F^Y,12),_=_+F|0,v=G(v^_,8),Y=Y+v|0,F=G(F^Y,7),k=k+O|0,M=G(M^k,16),I=I+M|0,O=G(O^I,12),k=k+O|0,M=G(M^k,8),I=I+M|0,O=G(O^I,7);let q=0;n[q++]=i+A|0,n[q++]=a+D|0,n[q++]=c+_|0,n[q++]=l+k|0,n[q++]=d+O|0,n[q++]=u+N|0,n[q++]=f+P|0,n[q++]=m+F|0,n[q++]=h+Y|0,n[q++]=p+I|0,n[q++]=y+C|0,n[q++]=w+$|0,n[q++]=E+T|0,n[q++]=b+v|0,n[q++]=S+M|0,n[q++]=R+V|0}function qI(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],d=e[2],u=e[3],f=e[4],m=e[5],h=e[6],p=e[7],y=t[0],w=t[1],E=t[2],b=t[3];for(let R=0;R<20;R+=2)o=o+c|0,y=G(y^o,16),f=f+y|0,c=G(c^f,12),o=o+c|0,y=G(y^o,8),f=f+y|0,c=G(c^f,7),s=s+l|0,w=G(w^s,16),m=m+w|0,l=G(l^m,12),s=s+l|0,w=G(w^s,8),m=m+w|0,l=G(l^m,7),i=i+d|0,E=G(E^i,16),h=h+E|0,d=G(d^h,12),i=i+d|0,E=G(E^i,8),h=h+E|0,d=G(d^h,7),a=a+u|0,b=G(b^a,16),p=p+b|0,u=G(u^p,12),a=a+u|0,b=G(b^a,8),p=p+b|0,u=G(u^p,7),o=o+l|0,b=G(b^o,16),h=h+b|0,l=G(l^h,12),o=o+l|0,b=G(b^o,8),h=h+b|0,l=G(l^h,7),s=s+d|0,y=G(y^s,16),p=p+y|0,d=G(d^p,12),s=s+d|0,y=G(y^s,8),p=p+y|0,d=G(d^p,7),i=i+u|0,w=G(w^i,16),f=f+w|0,u=G(u^f,12),i=i+u|0,w=G(w^i,8),f=f+w|0,u=G(u^f,7),a=a+c|0,E=G(E^a,16),m=m+E|0,c=G(c^m,12),a=a+c|0,E=G(E^a,8),m=m+E|0,c=G(c^m,7);let S=0;n[S++]=o,n[S++]=s,n[S++]=i,n[S++]=a,n[S++]=y,n[S++]=w,n[S++]=E,n[S++]=b}var WI=l2(fg,{counterRight:!1,counterLength:4,allowShortKeys:!1}),zI=l2(fg,{counterRight:!1,counterLength:8,extendNonceFn:qI,allowShortKeys:!1});var GI=new Uint8Array(16),ug=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(GI.subarray(t))},YI=new Uint8Array(32);function dg(r,e,t,n,o){let s=r(e,t,YI),i=ag.create(s);o&&ug(i,o),ug(i,n);let a=new Uint8Array(16),c=ng(a);o2(c,0,BigInt(o?o.length:0),!0),o2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var hg=r=>(e,t,n)=>(bs(e,32),bs(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?bs(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=dg(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?bs(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),d=s.subarray(-16),u=dg(r,e,t,l,n);if(!sg(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),u2=n2({blockSize:64,nonceLength:12,tagLength:16},hg(WI)),LY=n2({blockSize:64,nonceLength:24,tagLength:16},hg(zI));function mg(r,e,t){return ts(r),t===void 0&&(t=new Uint8Array(r.outputLen)),fo(r,Nr(t),Nr(e))}var d2=new Uint8Array([0]),pg=new Uint8Array;function gg(r,e,t,n=32){if(ts(r),so(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=pg);let s=new Uint8Array(o*r.outputLen),i=fo.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)d2[0]=l+1,a.update(l===0?pg:c).update(t).update(d2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),d2.fill(0),s.slice(0,n)}var f2={hashSHA256(r){return Eo(r.subarray())},getHKDF(r,e){let t=mg(Eo,e,r),o=gg(Eo,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=ga.utils.randomPrivateKey();return{publicKey:ga.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:ga.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return ga.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return u2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return u2(n,e,t).decrypt(r.subarray(),o)}};var yg=f2;function wg(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var _i=r=>{let e=qe(2);return e[0]=r>>8,e[1]=r,e};_i.bytes=2;var qa=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};qa.bytes=2;function bg(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function h2(r,e){!e.enabled||!xi||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${B(r.privateKey,"hex")}`)):e("Missing local static keys."))}function p2(r,e){!e.enabled||!xi||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${B(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Eg(r,e){!e.enabled||!xi||e(r?`REMOTE_STATIC_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote static public key.")}function m2(r,e){!e.enabled||!xi||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function g2(r,e,t){!t.enabled||!xi||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&B(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&B(e.k,"hex")}`))}function r1(r,e){if(globalThis.Buffer!=null)return globalThis.Buffer.compare(r,e);for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function Kn(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=qe(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return tn(t)}var n1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Si=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var XI=0,QI=4294967295,jI="Cipherstate has reached maximum n, a new handshake must be performed",o1=class{n;bytes;view;constructor(e=XI){this.n=e,this.bytes=Ze(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>QI)throw new Error(jI)}};var Es=Ze(0),Ri=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new o1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},y2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=L(t,"utf-8");this.h=ZI(e,n),this.ck=this.h,this.cs=new Ri(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Ri(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new de(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,Es);return[new Ri(this.crypto,e),new Ri(this.crypto,t)]}},w2=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new y2(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},Wa=class extends w2{writeMessageA(e){return new de(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new de(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new de(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Si(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Si(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Si(`handshake stage 2 validation fail: ${t.message}`)}}};function ZI(r,e){if(e.length<=32){let t=Ze(32);return t.set(e),t}else return r.hash(e)}var s1;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(s1||(s1={}));var za;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),s1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Ze(0),identitySig:Ze(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=s1.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(za||(za={}));async function b2(r,e,t){let n=await r.sign(xg(e));return za.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function E2(r,e,t){try{let n=za.decode(r);if(t){let i=t.subarray();if(!j(i,n.identityKey))throw new Error(`Payload identity key ${B(n.identityKey,"hex")} does not match expected remote identity key ${B(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=xg(e);if(!await Kr(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new n1(n.message)}}function xg(r){let e=L("noise-libp2p-static-key:");return r instanceof Uint8Array?_e([e,r],e.length+r.length):(r.prepend(e),r)}async function vg(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await b2(o,i.publicKey,c),d=new Wa({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});h2(d.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(d.writeMessageA(Es)),e.trace("Stage 0 - Initiator finished sending first message."),p2(d.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=d.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),m2(d.re,e),Eg(d.rs,e),e.trace("Initiator going to check remote's signature...");let f=await E2(u,d.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(d.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[m,h]=d.ss.split();return g2(m,h,e),{payload:f,encrypt:p=>m.encryptWithAd(Es,p),decrypt:(p,y)=>h.decryptWithAd(Es,p,y)}}async function _g(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await b2(o,i.publicKey,c),d=new Wa({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});h2(d.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),m2(d.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(d.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),p2(d.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=d.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let f=await E2(u,d.rs,a),[m,h]=d.ss.split();return g2(m,h,e),{payload:f,encrypt:p=>h.encryptWithAd(Es,p),decrypt:(p,y)=>m.decryptWithAd(Es,p,y)}}var Rg=16;function Ag(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new de(_i(i.byteLength),i)}}}function Ig(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Rg<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Rg);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var i1=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??yg;this.crypto=wg(c),this.extensions=o,this.metrics=a?bg(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Ze(0)}async secureOutbound(e,t,n){let o=cn(t,{lengthEncoder:_i,lengthDecoder:qa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await mr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ut(a.payload.identityKey)}}async secureInbound(e,t,n){let o=cn(t,{lengthEncoder:_i,lengthDecoder:qa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await mr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ut(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await vg({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await _g({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=tg(),s=e.unwrap();return await Ge(n,Ag(t,this.metrics),s,i=>Mt(i,{lengthDecoder:qa}),Ig(t,this.metrics),n),o}};function Ai(r={}){return e=>new i1(e,r)}function a1(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Ii="ERR_INVALID_FRAME",x2="ERR_UNREQUESTED_PING",v2="ERR_NOT_MATCHING_PING",_2="ERR_STREAM_ALREADY_EXISTS",S2="ERR_DECODE_INVALID_VERSION",R2="ERR_BOTH_CLIENTS",A2="ERR_RECV_WINDOW_EXCEEDED",Dg=new Set([Ii,x2,v2,_2,S2,R2,A2]),Ao="ERR_INVALID_CONFIG",c1="ERR_MUXER_LOCAL_CLOSED",I2="ERR_MUXER_REMOTE_CLOSED";var Tg="ERR_STREAM_ABORT",kg="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Cg="ERR_DECODE_IN_PROGRESS",Ya=256*1024,Ng=16*1024*1024;var Og={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Ya,maxStreamWindowSize:Ng,maxMessageSize:64*1024};function Pg(r){if(r.keepAliveInterval<=0)throw new g("keep-alive interval must be positive",Ao);if(r.maxInboundStreams<0)throw new g("max inbound streams must be larger or equal 0",Ao);if(r.maxOutboundStreams<0)throw new g("max outbound streams must be larger or equal 0",Ao);if(r.initialStreamWindowSize<Ya)throw new g("InitialStreamWindowSize must be larger or equal 256 kB",Ao);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new g("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",Ao);if(r.maxStreamWindowSize>2**32-1)throw new g("MaxStreamWindowSize must be less than equal MAX_UINT32",Ao);if(r.maxMessageSize<1024)throw new g("MaxMessageSize must be greater than a kilobyte",Ao)}var Xe;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(Xe||(Xe={}));var He;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(He||(He={}));var dQ=Object.values(He).filter(r=>typeof r!="string"),Lg=0,Er;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Er||(Er={}));var Io=12;var Bg=2**24;function JI(r){if(r[0]!==Lg)throw new g("Invalid frame version",S2);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Bg+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Bg+(r[9]<<16)+(r[10]<<8)+r[11]}}var l1=class{source;buffer;frameInProgress;constructor(e){this.source=eD(e),this.buffer=new de,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===Xe.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new g("decoding frame already in progress",Cg);if(this.buffer.length<Io)return;let e=JI(this.buffer.subarray(0,Io));return this.buffer.consume(Io),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function eD(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function D2(r){let e=new Uint8Array(Io);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function Mg(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function u1(r,e){let t=a1(r).return?.();Mg(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var tD="ERR_STREAM_RESET",rD="ERR_SINK_INVALID_STATE",nD=5e3;function T2(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Do=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;constructor(e){this.sinkController=new AbortController,this.sinkEnd=se(),this.closed=se(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??nD,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=lt({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new g(`writable end state is "${this.writeStatus}" not "ready"`,rD);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);T2(o)&&await o}let n=()=>{u1(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new de(o):o;let s=this.sendData(o,t);T2(s)&&await s}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Promise.all([this.closeRead(e),this.closeWrite(e)]),await $t(this.closed.promise,e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await $t(this.sink([]),e.signal)),this.writeStatus==="writing"&&await new Promise((t,n)=>{queueMicrotask(()=>{this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),$t(this.sinkEnd.promise,e.signal).then(t,n)})}),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();T2(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new g("stream reset",tD);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var xr;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(xr||(xr={}));var d1=class extends Do{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=xr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Ya,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=$o(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&await this.waitForSendWindowCapacity(t),this.status!=="open")return;let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-Io,e.length),o=this.getSendFlags();this.sendFrame({type:Xe.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|He.FIN;this.sendFrame({type:Xe.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"?n(new g("stream aborted",Tg)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new g("receive window exceeded",A2,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&He.ACK)===He.ACK&&this.state===xr.SYNSent&&(this.state=xr.Established),(e&He.FIN)===He.FIN&&this.remoteCloseWrite(),(e&He.RST)===He.RST&&this.reset()}getSendFlags(){switch(this.state){case xr.Init:return this.state=xr.SYNSent,He.SYN;case xr.SYNReceived:return this.state=xr.Established,He.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:Xe.WindowUpdate,flag:e,streamID:this._id,length:o})}};var Ug="/yamux/1.0.0",oD=500,f1=class{protocol=Ug;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new k2(this._components,{...this._init,...e})}},k2=class{protocol=Ug;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Og,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Pg(this.config),this.closeController=new AbortController,ve(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=lt({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=a1(n);if(a.return!=null){let c=a.return();sD(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new l1(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=Er.NormalTermination}catch(a){let c=a.code;Dg.has(c)?(this.log?.error("protocol error in sink",a),s=Er.ProtocolError):(this.log?.error("internal error in sink",a),s=Er.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",I2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",c1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new g("max outbound streams exceeded",kg);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,xr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",I2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",c1);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new g("muxer closed locally",c1))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??Er.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(oD);ve(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??Er.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new g("Stream already exists",_2,{id:e});let s=new d1({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case Xe.Ping:{this.handlePing(e);return}case Xe.GoAway:{this.handleGoAway(s);return}default:throw new g("Invalid frame type",Ii,{header:e})}else switch(e.type){case Xe.Data:case Xe.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new g("Invalid frame type",Ii,{header:e})}}handlePing(e){if(e.flag===He.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,He.ACK);else if(e.flag===He.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new g("Invalid frame flag",Ii,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new g("ping not requested",x2);if(this.activePing.id!==e)throw new g("ping doesn't match our id",v2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Er[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&He.SYN)===He.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===Xe.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case Xe.WindowUpdate:{i.handleWindowUpdate(e);return}case Xe.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new g("both endpoints are clients",R2);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,xr.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===Xe.Data){if(t===void 0)throw new g("invalid frame",Ii);this.source.push(new de(D2(e),t))}else this.source.push(D2(e))}sendPing(e,t=He.SYN){t===He.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:Xe.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Er.NormalTermination){this.log?.("sending GoAway reason=%s",Er[e]),this.localGoAway=e,this.sendFrame({type:Xe.GoAway,flag:0,streamID:0,length:e})}};function sD(r){return r!=null&&typeof r.then=="function"}function Fg(r={}){return e=>new f1(e,r)}var h1=async()=>{let r=await Aa("Ed25519"),e=await iD(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function iD(r){return ut(E0(r.public),x0(r))}var Kg=ke(Vg(),1),aD=["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"],cD=aD.map(r=>new Kg.Netmask(r));function lD(r){for(let e of cD)if(e.contains(r))return!0;return!1}function uD(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 vr(r){return Ys(r)?lD(r):Xs(r)?uD(r):void 0}var p1=globalThis.CustomEvent??Event;async function*$n(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=se(),a=se(),c=!1,l,d=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let h of r){if(s.length===t&&(i=se(),await i.promise),d)break;let p={done:!1};s.push(p),h().then(y=>{p.done=!0,p.ok=!0,p.value=y,o.dispatchEvent(new p1("task-complete"))},y=>{p.done=!0,p.err=y,o.dispatchEvent(new p1("task-complete"))})}c=!0,o.dispatchEvent(new p1("task-complete"))}catch(h){l=h,o.dispatchEvent(new p1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(h=>h.done)}function*f(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw d=!0,i.resolve(),h.err;i.resolve()}}function*m(){for(;u();)for(let h=0;h<s.length;h++)if(s[h].done){let p=s[h];if(s.splice(h,1),h--,p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}for(;;){if(u()||(a=se(),await a.promise),l!=null)throw l;if(n?yield*f():yield*m(),c&&s.length===0)break}}var $g="libp2p",Hg="autonat",qg="1.0.0";var he;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>Ve(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>Ve(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let d;l.codec=()=>(d==null&&(d=ee((u,f,m={})=>{if(m.lengthDelimited!==!1&&f.fork(),u.id!=null&&(f.uint32(10),f.bytes(u.id)),u.addrs!=null)for(let h of u.addrs)f.uint32(18),f.bytes(h);m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={addrs:[]},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.id=u.bytes();break;case 2:m.addrs.push(u.bytes());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>J(u,l.codec()),l.decode=u=>Z(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let d;l.codec=()=>(d==null&&(d=ee((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.peer!=null&&(f.uint32(10),r.PeerInfo.codec().encode(u.peer,f)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>J(u,l.codec()),l.decode=u=>Z(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let d;l.codec=()=>(d==null&&(d=ee((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.status!=null&&(f.uint32(8),r.ResponseStatus.codec().encode(u.status,f)),u.statusText!=null&&(f.uint32(18),f.string(u.statusText)),u.addr!=null&&(f.uint32(26),f.bytes(u.addr)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.status=r.ResponseStatus.codec().decode(u);break;case 2:m.statusText=u.string();break;case 3:m.addr=u.bytes();break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>J(u,l.codec()),l.decode=u=>Z(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=ee((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.type!=null&&(d.uint32(8),r.MessageType.codec().encode(l.type,d)),l.dial!=null&&(d.uint32(18),r.Dial.codec().encode(l.dial,d)),l.dialResponse!=null&&(d.uint32(26),r.DialResponse.codec().encode(l.dialResponse,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(m&7);break}}return u})),c),r.encode=l=>J(l,r.codec()),r.decode=l=>Z(l,r.codec())})(he||(he={}));var C2=4,m1=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??$g}/${Hg}/${qg}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new g("handleIncomingAutonatStream timeout",gn))};t.addEventListener("abort",n,{once:!0}),ve(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Ge(e.stream,i=>Mt(i),async function*(i){let a=await ps(i);if(a==null){s.log("no message received"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=he.decode(a)}catch(p){s.log.error("could not decode message",p),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let d,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{d=Ye(u.id)}catch(p){s.log.error("invalid PeerId",p),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",d),!e.connection.remotePeer.equals(d)){s.log("target peer %p did not equal sending peer %p",d,e.connection.remotePeer),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let f=u.addrs.map(p=>Q(p)).filter(p=>{let y=p.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",p,e.connection.remoteAddr,y),y}).filter(p=>{let y=p.toOptions().host,w=!(vr(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(p=>{let y=p.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(p=>{let y=!!s.components.transportManager.transportForMultiaddr(p);return s.log.trace("transport for %a is supported %s",p,y),y}).map(p=>(p.getPeerId()==null&&(p=p.encapsulate(`/p2p/${d.toString()}`)),p));if(f.length===0){s.log("no valid multiaddrs for %p in message",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",f.map(p=>p.toString()).join(", "),d);let m="",h=f[0];for await(let p of f){let y;h=p;try{if(y=await s.components.connectionManager.openConnection(p,{signal:t}),!y.remoteAddr.equals(p))throw s.log.error("tried to dial %a but dialed %a",p,y.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.OK,addr:y.remoteAddr.decapsulateCode(ne("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),m=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:m,addr:h.bytes}})},i=>Bt(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!(vr(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);ve(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=he.encode({type:he.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await h1()).toBytes(),c={},l=[],d=async u=>{let f=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let m=await o.components.connectionManager.openConnection(u.id,{signal:n}),h=await m.newStream(this.protocol,{signal:n});f=()=>{h.abort(new g("verifyAddress timeout",gn))},n.addEventListener("abort",f,{once:!0});let p=await Ge([s],w=>Bt(w),h,w=>Mt(w),async w=>ps(w));if(p==null){this.log("no response received from %p",m.remotePeer);return}let y=he.decode(p);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",m.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=m.remoteAddr.toOptions(),E;if(w.family===4)E=w.host.split(".")[0];else if(w.family===6)E=w.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',w.host);return}if(l.includes(E)){this.log("already have response from network segment %d - %s",E,w.host);return}l.push(E)}return y.dialResponse}catch(m){this.log.error("error asking remote to verify multiaddr",m)}finally{n.removeEventListener("abort",f)}};for await(let u of $n(kr(this.components.peerRouting.getClosestPeers(a,{signal:n}),f=>async()=>d(f)),{concurrency:C2}))try{if(u==null)continue;let f=u.addr==null?t[0]:Q(u.addr);if(this.log("autonat response for %a is %s",f,u.status),u.status===he.ResponseStatus.E_BAD_REQUEST||u.status===he.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(h=>h.equals(f))){this.log("peer reported %a as %s but it was not in our observed address list",f,u.status);continue}let m=f.toString();if(c[m]==null&&(c[m]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[m].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[m].failure++,c[m].success===C2){this.log("%a is externally dialable",f),e.confirmObservedAddr(f);return}if(c[m].failure===C2){this.log("%a is not externally dialable",f),e.removeObservedAddr(f);return}}catch(f){this.log.error("could not verify external address",f)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function Wg(r={}){return e=>new m1(e,r)}var gD=H("dns4"),yD=H("dns6"),wD=H("dnsaddr"),ko=et(H("dns"),wD,gD,yD),g1=et(H("ip4"),H("ip6")),Di=et(te(g1,H("tcp")),te(ko,H("tcp"))),y1=te(g1,H("udp")),bD=te(y1,H("utp")),ED=te(y1,H("quic")),xD=te(y1,H("quic-v1")),N2=et(te(Di,H("ws")),te(ko,H("ws"))),Ti=et(te(N2,H("p2p")),N2),O2=et(te(Di,H("wss")),te(ko,H("wss")),te(Di,H("tls"),H("ws")),te(ko,H("tls"),H("ws"))),xs=et(te(O2,H("p2p")),O2),P2=et(te(Di,H("http")),te(g1,H("http")),te(ko,H("http"))),L2=et(te(Di,H("https")),te(g1,H("https")),te(ko,H("https"))),zg=te(y1,H("webrtc-direct"),H("certhash")),Xg=et(te(zg,H("p2p")),zg),Gg=te(xD,H("webtransport"),H("certhash"),H("certhash")),Qg=et(te(Gg,H("p2p")),Gg),jg=et(te(Ti,H("p2p-webrtc-star"),H("p2p")),te(xs,H("p2p-webrtc-star"),H("p2p")),te(Ti,H("p2p-webrtc-star")),te(xs,H("p2p-webrtc-star"))),Sj=et(te(Ti,H("p2p-websocket-star"),H("p2p")),te(xs,H("p2p-websocket-star"),H("p2p")),te(Ti,H("p2p-websocket-star")),te(xs,H("p2p-websocket-star"))),Zg=et(te(P2,H("p2p-webrtc-direct"),H("p2p")),te(L2,H("p2p-webrtc-direct"),H("p2p")),te(P2,H("p2p-webrtc-direct")),te(L2,H("p2p-webrtc-direct"))),vs=et(N2,O2,P2,L2,jg,Zg,Di,bD,ED,ko,Xg,Qg),Rj=et(te(vs,H("p2p-stardust"),H("p2p")),te(vs,H("p2p-stardust"))),To=et(te(vs,H("p2p")),jg,Zg,Xg,Qg,H("p2p")),Yg=et(te(To,H("p2p-circuit"),To),te(To,H("p2p-circuit")),te(H("p2p-circuit"),To),te(vs,H("p2p-circuit")),te(H("p2p-circuit"),vs),H("p2p-circuit")),Jg=()=>et(te(Yg,Jg),Yg),zr=Jg(),e9=et(te(zr,To,zr),te(To,zr),te(zr,To),zr,To);var Aj=et(te(zr,H("webrtc"),H("p2p")),te(zr,H("webrtc")),te(vs,H("webrtc"),H("p2p")),te(vs,H("webrtc")),H("webrtc"));function t9(r){function e(t){let n;try{n=Q(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function te(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:t9(e),partialMatch:e}}function et(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:t9(e),partialMatch:e}}function H(r){let e=r;function t(o){let s;try{s=Q(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var vD="bootstrap",_D=50,SD=12e4,RD=1e3,B2=class extends Ce{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??RD,this.list=[];for(let n of t.list){if(!e9.matches(n)){this.log.error("Invalid multiaddr");continue}let o=Q(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:ge(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[qo]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??vD]:{value:this._init.tagValue??_D,ttl:this._init.tagTTL??SD}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function n9(r){return e=>new B2(e,r)}var o9={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var Qa;(function(r){let e;r.codec=()=>(e==null&&(e=ee((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)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Qa||(Qa={}));var Gr=class r{static createFromProtobuf=async e=>{let t=Qa.decode(e),n=await ut(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=s9(n,o,s),c=await(await mr(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new g("envelope signature is not valid for the given domain",o9.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=Qa.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return j(this.marshal(),e.marshal())}async validate(e){let t=s9(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Kr(this.peerId.publicKey).verify(t.subarray(),this.signature)}},s9=(r,e,t)=>{let n=L(r),o=ze(n.byteLength),s=ze(e.length),i=ze(t.length);return new de(o,n,s,e,i,t)};function i9(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 a9="libp2p-peer-record",c9=Uint8Array.from([3,1]);var ja;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=ee((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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>J(s,n.codec()),n.decode=s=>Z(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=ee((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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>J(n,r.codec()),r.decode=n=>Z(n,r.codec())})(ja||(ja={}));var tr=class r{static createFromProtobuf=e=>{let t=ja.decode(e),n=Ye(t.peerId),o=(t.addresses??[]).map(i=>Q(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=a9;static CODEC=c9;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=ja.encode({peerId:this.peerId.toBytes(),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||!i9(this.multiaddrs,e.multiaddrs))}};function Qe(r,e){let t=cn(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var l9="/libp2p/relay";var u9="circuit-relay-relay";var sZ=BigInt(131072),_s="/libp2p/circuit/relay/0.2.0/hop",M2="/libp2p/circuit/relay/0.2.0/stop",iZ=30*1e3,aZ=30*1e3,U2=300;var F2="ERR_RELAYED_DIAL",d9="ERR_HOP_REQUEST_FAILED";var Co;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),ki.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),w1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Ci.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),Et.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=ki.codec().decode(o,o.uint32());break;case 3:i.reservation=w1.codec().decode(o,o.uint32());break;case 4:i.limit=Ci.codec().decode(o,o.uint32());break;case 5:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(Co||(Co={}));var ln;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),ki.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Ci.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),Et.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=ki.codec().decode(o,o.uint32());break;case 3:i.limit=Ci.codec().decode(o,o.uint32());break;case 4:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(ln||(ln={}));var ki;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(ki||(ki={}));var w1;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(w1||(w1={}));var Ci;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Ci||(Ci={}));var Et;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(Et||(Et={}));var V2;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(V2||(V2={}));(function(r){r.codec=()=>Ve(V2)})(Et||(Et={}));var f9;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(f9||(f9={}));async function h9(r){let e=new TextEncoder().encode(r),t=await Re.digest(e);return oe.createV0(t)}function K2(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var b1=class extends Ce{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(_s,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(_s)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await h9(l9),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var No=class extends Fn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var ID=60*1e3*10,DD=60*1e3*5,TD=30*1e3,E1=class extends Ce{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new wt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new No({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(K2(n.reservation.expire)>ID){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((d,u)=>(u.type==="discovered"&&d++,d),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=K2(i.expire),c=Math.min(Math.max(a-DD,TD),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(d=>{this.log.error("could not refresh reservation to relay %p",e,d)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[u9]:{value:1,ttl:a}}}),await this.transportManager.listen([Q(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(_s,t),s=Qe(n).pb(Co);await s.write({type:Co.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===Et.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let d of i.reservation.addrs)if(j(l,d)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function $2(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async f=>{await a(f),u(!0)};let c=e.abort.bind(e);e.abort=f=>{c(f),u(!0)};let l=e.sink.bind(e);e.sink=async f=>{try{await l(f)}catch(m){m.type!=="aborted"&&o.error("%s error in sink",t,m)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let f of e.source)f instanceof Uint8Array?yield f:yield*f}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(f){f===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var H2=class extends Ce{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new wt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new g("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>Q(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function p9(r){return new H2(r)}var CD=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Q)}catch{return!1}return!0},q2={maxInboundStopStreams:U2,maxOutboundStopStreams:U2,stopTimeout:3e4},x1=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??q2.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??q2.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??q2.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new b1(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new E1(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(M2,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(M2),this.started=!1}[en]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(h=>h===290).length!==1){let h="Invalid circuit relay address";throw this.log.error(h,e),new g(h,F2)}let n=e.toString().split("/p2p-circuit"),o=Q(n[0]),s=Q(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let h=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(h),new g(h,F2)}let c=ge(i),l=ge(a),d=!1,f=this.connectionManager.getConnections(c)[0];f==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),f=await this.connectionManager.openConnection(c,t),d=!0);let m;try{return m=await f.newStream(_s),await this.connectV2({stream:m,connection:f,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,h),m?.abort(h),d&&await f.close(),h}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=Qe(e),l=c.pb(Co);await l.write({type:Co.Type.CONNECT,peer:{id:n.toBytes(),addrs:[Q(o).bytes]}});let d=await l.read();if(d.status!==Et.OK)throw new g(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,d9);let u=$2({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return p9({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>zr.matches(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",d)}let n=AbortSignal.timeout(this.stopTimeout),o=Qe(t).pb(ln),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:ln.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==ln.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:ln.Type.STATUS,status:Et.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!CD(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:ln.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=Ye(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:ln.Type.STATUS,status:Et.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:ln.Type.STATUS,status:Et.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=$2({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function W2(r={}){return e=>new x1(e,r)}var m9=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},ND=new WeakMap;function OD({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(m9());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(m9())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,m)=>{i=()=>{d(),f(n)},a=m,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),ND.set(u,()=>{c(s),s=null,i()}),u}}var PD=OD(),v1=PD;var Yr;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(Yr||(Yr={}));var LD=r=>r.toString().split("/").slice(1),Za=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),tt=r=>({match:e=>Za(t=>t===r).match(e),pattern:r}),R1=()=>({match:r=>Za(e=>typeof e=="string").match(r),pattern:"{string}"}),g9=()=>({match:r=>Za(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),_r=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ce.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),_1=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Tf.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),un=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),dn=(...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},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),rt=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function at(...r){function e(o){let s=LD(o);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{matches:t,exactMatch:n}}var G2=rt(tt("dns4"),R1()),Y2=rt(tt("dns6"),R1()),X2=rt(tt("dnsaddr"),R1()),y9=rt(tt("dns"),R1()),sJ=at(G2),iJ=at(Y2),aJ=at(X2),w9=at(dn(y9,X2,G2,Y2)),b9=rt(tt("ip4"),Za(Ys)),E9=rt(tt("ip6"),Za(Xs)),x9=dn(b9,E9),Ja=dn(x9,y9,G2,Y2,X2),v9=at(Ja),cJ=at(b9),lJ=at(E9),_9=at(x9),A1=rt(Ja,tt("tcp"),g9()),ec=rt(Ja,tt("udp"),g9()),BD=dn(A1,ec),uJ=at(A1),dJ=at(ec),Q2=rt(ec,tt("quic")),I1=rt(ec,tt("quic-v1")),MD=dn(Q2,I1),fJ=at(Q2),hJ=at(I1),z2=dn(Ja,A1,ec,Q2,I1),S9=dn(rt(z2,tt("ws"),un(_r()))),pJ=at(S9),R9=dn(rt(z2,tt("wss"),un(_r())),rt(z2,tt("tls"),tt("ws"),un(_r()))),mJ=at(R9),A9=rt(BD,tt("webrtc-direct"),_1(),un(_1()),un(_r())),I9=at(A9),D9=rt(I1,tt("webtransport"),_1(),_1(),un(_r())),D1=at(D9),S1=dn(S9,R9,rt(A1,un(_r())),rt(MD,un(_r())),rt(Ja,un(_r())),A9,D9,_r()),gJ=at(S1),UD=rt(S1,tt("p2p-circuit"),_r()),tc=at(UD),FD=dn(rt(S1,tt("p2p-circuit"),tt("webrtc"),_r()),rt(S1,tt("webrtc"),un(_r())),tt("webrtc")),T9=at(FD);function j2(r,e){return tc.matches(r)||e.transportForMultiaddr(r)==null?!1:w9.matches(r)?!0:_9.matches(r)?vr(r.toOptions().host)===!1:!1}var k9=1024*4,C9=100,T1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},k1=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??T1.timeout,this.retries=t.retries??T1.retries,this.maxInboundStreams=t.maxInboundStreams??T1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??T1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(rc,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(rc,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(rc),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([rc],{signal:o.signal,runOnTransientConnection:!0});let s=Qe(t,{maxDataLength:k9}).pb(Yr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Yr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==Yr.Type.CONNECT)throw this.log("A sent wrong message type"),new g("DCUtR message type was incorrect",Wo);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new g("DCUtR connect message had no multiaddrs",Wo);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Yr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await v1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:C9});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,d.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>j2(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=Qe(e,{maxDataLength:k9}).pb(Yr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Yr.Type.CONNECT)throw this.log("B sent wrong message type"),new g("DCUtR message type was incorrect",Wo);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new g("DCUtR connect message had no multiaddrs",Wo);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new g("DCUtR connect message had no dialable multiaddrs",Wo);if(this.log("A sending connect"),await o.write({type:Yr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Yr.Type.SYNC)throw new g("DCUtR message type was incorrect",Wo);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:C9,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=Q(n);if(!j2(o,this.transportManager))continue;t.push(o)}catch{}return t}};var rc="/libp2p/dcutr";function N9(r={}){return e=>new k1(e,r)}var O9="0.1.0",P9="id",L9="id/push",B9="1.0.0",M9="1.0.0";var V9=ke(F9(),1),Z2=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,C1=(0,V9.default)(),N1=Z2&&!C1,K9=C1&&!Z2,$9=C1&&Z2,H9=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!C1,O1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,PJ=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",q9=typeof navigator<"u"&&navigator.product==="ReactNative";var Ss;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Ss||(Ss={}));var J2=1024*8,Sr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},P1=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??Sr.protocolPrefix}/${P9}/${B9}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Sr.protocolPrefix}/${L9}/${M9}`,this.timeout=t.timeout??Sr.timeout,this.maxInboundStreams=t.maxInboundStreams??Sr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Sr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Sr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Sr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Sr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Sr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Sr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Sr.protocolPrefix}/${O9}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Sr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(H9||K9?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(N1||O1||$9||q9)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:L(this.host.agentVersion),ProtocolVersion:L(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(d=>d.decapsulateCode(ne("p2p").code)),n=new tr({peerId:this.peerId,multiaddrs:t}),o=await Gr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=B(i.metadata.get("AgentVersion")??L(this.host.agentVersion)),c=B(i.metadata.get("ProtocolVersion")??L(this.host.protocolVersion)),l=e.map(async d=>{let u,f=AbortSignal.timeout(this.timeout);ve(1/0,f);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:f,runOnTransientConnection:this.runOnTransientConnection}),await Qe(u,{maxDataLength:this.maxIdentifyMessageSize??J2}).pb(Ss).write({listenAddrs:t.map(h=>h.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:f}),await u.close({signal:f})}catch(m){this.log.error("could not push identify update to peer",m),u?.abort(m)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==l4)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);ve(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Qe(n,{maxDataLength:this.maxIdentifyMessageSize??J2}).pb(Ss).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new g("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await ut(o);if(!e.remotePeer.equals(a))throw new g("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new g("identified peer is our own peer id?","ERR_INVALID_PEER");let c=KD(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);ve(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(ne("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new tr({peerId:this.peerId,multiaddrs:a});c=(await Gr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;v9.matches(t.remoteAddr)||(l=void 0),await Qe(n).pb(Ss).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await Qe(n,{maxDataLength:this.maxIdentifyMessageSize??J2}).pb(Ss).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new g("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:Q(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await ut(t.publicKey)).equals(e.remotePeer)))throw new g("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await Gr.openAndCertify(i,tr.DOMAIN),c=tr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new g("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new g("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let d=await Gr.createFromProtobuf(l.peerRecordEnvelope),u=tr.createFromProtobuf(d.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=L(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=L(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>Q(i)),observedAddr:t.observedAddr==null?void 0:Q(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function KD(r){if(r!=null&&r.length>0)try{return Q(r)}catch{}}function W9(r={}){return e=>new P1(e,r)}var z9="/ipfs/kad/1.0.0",G9="/dht/record",ep="/dht/provider";var Y9;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Y9||(Y9={}));var ye;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(ye||(ye={}));var L1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(L1||(L1={}));(function(r){r.codec=()=>Ve(L1)})(ye||(ye={}));var Oi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Oi||(Oi={}));var tp;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(tp||(tp={}));(function(r){r.codec=()=>Ve(tp)})(Oi||(Oi={}));var Ni;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Oi.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Ze(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Oi.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Ni||(Ni={}));var Rr;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&L1[t.type]!==0&&(n.uint32(8),ye.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Ni.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Ni.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:ye.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=ye.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(Ni.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Ni.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Rr||(Rr={}));function rp(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:ye[r.type]};return e.onProgress?.(new mt("kad-dht:query:send-query",{detail:t})),t}function nc(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new mt("kad-dht:query:peer-response",{detail:t})),t}function B1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new mt("kad-dht:query:final-peer",{detail:t})),t}function rr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new mt("kad-dht:query:query-error",{detail:t})),t}function np(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new mt("kad-dht:query:provider",{detail:t})),t}function oc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new mt("kad-dht:query:value",{detail:t})),t}function op(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new mt("kad-dht:query:dial-peer",{detail:t})),t}var sc;(function(r){let e;r.codec=()=>(e==null&&(e=ee((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.key=t.bytes();break;case 2:o.value=t.bytes();break;case 5:o.timeReceived=t.string();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(sc||(sc={}));function X9(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function Q9(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var xt=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return sc.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:X9(this.timeReceived)}}static deserialize(e){let t=sc.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=Q9(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function j9(r,e,t){if(t.length===0){let i="No records given";throw new g(i,"ERR_NO_RECORDS_RECEIVED")}let o=B(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new g(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new g(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function HD(r,e){return 0}var Z9={pk:HD};async function Pi(r,e){let t=e.key,o=B(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new g(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var qD=async(r,e)=>{if(!(r instanceof Uint8Array))throw new g('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new g("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(B(r.subarray(0,4))!=="/pk/")throw new g("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await Re.digest(e);if(!j(n,o.bytes))throw new g("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},J9={pk:qD};var WD=L("/pk/");function ey(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=vr(n);return o==null?!0:!o})}}async function Oo(r){return(await Re.digest(r)).digest}async function Xr(r){return Oo(r.toBytes())}function Hn(r){return new Oe(`${G9}/${B(r,"base32")}`,!1)}function ty(r){return _e([WD,r.toBytes()])}function ry(r){return B(r.subarray(0,4))==="/pk/"}function ny(r){return Ye(r.subarray(4))}function sp(r,e){let t=new Date;return new xt(r,e,t).serialize()}function oy(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var zD=290,GD=54,YD=55,XD=56,QD=4,jD=41;function sy(r){let e=r.stringTuples();for(let t of e)if(t[0]===zD)return!1;if(e[0][0]===GD||e[0][0]===YD||e[0][0]===XD)return!0;if(e[0][0]===QD||e[0][0]===jD){let t=vr(`${e[0][1]}`);return t==null||!t}return!1}var M1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async putLocal(e,t){let n=Hn(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=Hn(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=xt.deserialize(n);return await Pi(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=sp(e,n);for(let{value:i,from:a}of t){if(j(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=Hn(e);this.log(`Storing corrected record for key ${d.toString()}`),await this.components.datastore.put(d,s.subarray())}catch(d){this.log.error("Failed error correcting self",d)}continue}let c=!1,l={type:ye.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&j(d.record.value,xt.deserialize(s).value)&&(c=!0),yield d;c||(yield rr({from:a,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=sp(e,t),s=Hn(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Ge(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>kr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:ye.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let d of this.network.sendRequest(a.peer.id,l,n))c.push(d),d.name==="PEER_RESPONSE"&&(d.record!=null&&j(d.record.value,xt.deserialize(o).value)||c.push(rr({from:a.peer.id,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>$n(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=j9(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new g("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield oc({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield oc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function iy(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function ic(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:Ye(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>Q(e))}}var U1=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:ye.ADD_PROVIDER,key:e.multihash.bytes,providers:[iy({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(rr({from:a.peer.id,error:l},n))}return c};yield*Ge(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>kr(a,c=>i(c)),a=>$n(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let d of i.slice(0,n))try{let u=await this.components.peerStore.get(d);l.push({id:d,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",d)}yield nc({from:this.components.peerId,messageType:ye.GET_PROVIDERS,providers:l},t),yield np({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:d}){let u={type:ye.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:d})},c=new Je(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let d=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),d.push(u));if(d.length>0&&(yield np({from:l.from,providers:d},t)),c.size===n)return}}};var F1=class extends Ce{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new ca("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield op({peer:e},n),yield rp({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield nc({from:e,messageType:c.type,closer:c.closer.map(ic),providers:c.providers.map(ic),record:c.record==null?void 0:xt.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new ca("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield op({peer:e},n),yield rp({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield nc({from:e,messageType:o},n)}catch(i){yield rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=Qe(e);await o.write(t,Rr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=Qe(e);await o.write(t,Rr,n);let s=await o.read(Rr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:ic(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:ic(i)})}),s}};var cp=(r,e)=>r<<e|r>>>32-e>>>0,ZD=(r,e,t)=>r&e^~r&t,JD=(r,e,t)=>r&e^r&t^e&t,ac=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Po=new Uint32Array(80),lp=class extends io{constructor(){super(64,20,8,!1),this.A=ac[0]|0,this.B=ac[1]|0,this.C=ac[2]|0,this.D=ac[3]|0,this.E=ac[4]|0}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Po[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Po[c]=cp(Po[c-3]^Po[c-8]^Po[c-14]^Po[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=ZD(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=JD(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=cp(n,5)+l+a+d+Po[c]|0;a=i,i=s,s=cp(o,30),o=n,n=u}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,this.set(n,o,s,i,a)}roundClean(){Po.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},ay=Js(()=>new lp);var cy={sha1:ay,"sha2-256":Eo,"sha2-512":lo};function cc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(cy).join(" / ");throw new g(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=cy[o],i=Gm(s,r,e,{c:t,dkLen:n});return ir.encode(i).substring(1)}var V1=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await Xr(e),n={peerId:e,distance:Kn(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>r1(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(Xr)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Kn(this.originDhtKey,o);if(r1(s,n)<0)return!0}return!1}};var K1=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:ye.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=ty(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await ut(hu.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new g("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new g("public key missing","ERR_PUBLIC_KEY_MISSING");yield oc({from:e,value:s.publicKey},t)}throw new g(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield B1({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:ye.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let d=l.closer.find(u=>u.id.equals(e));d!=null&&(yield B1({from:l.from,peer:d},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield rr({from:this.peerId,error:new g("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Oo(e),o=this.routingTable.closestPeers(n),s=this,i=new V1(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",B(e,"base32"),c);let d={type:ye.FIND_NODE,key:e};yield*s.network.sendRequest(c,d,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield B1({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:d})=>d)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield rr({from:o.from,error:new g(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new g("invalid record received","ERR_INVALID_RECORD");await Pi(this.validators,new xt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Oo(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p",e,t),s}};var dy=ke(uy(),1);var $1=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,dy.default)(n??256),this.syncQueue=new br({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:ep});for await(let a of i)try{let{cid:c,peerId:l}=fy(a.key),d=hy(a.value).getTime(),u=Date.now(),f=u-d,m=f>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,f,this.provideValidity,m?"(expired)":""),m){n++,s.delete(a.key);let h=o.get(c)??new Set;h.add(l),o.set(c,h)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=lc(a),d=this.cache.get(l);if(d!=null){for(let u of c)d.delete(u);d.size===0?this.cache.remove(l):this.cache.set(l,d)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=lc(e),n=this.cache.get(t);return n==null&&(n=await oT(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=lc(e);this.cache.set(s,n),await nT(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ge(n))),{throwOnTimeout:!0})}};function lc(r){let e=typeof r=="string"?r:B(r.multihash.bytes,"base32");return`${ep}/${e}`}async function nT(r,e,t,n){let o=[lc(e),"/",t.toString()].join(""),s=new Oe(o),i=ze(n.getTime());await r.put(s,i)}function fy(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function oT(r,e){let t=new Map,n=r.query({prefix:lc(e)});for await(let o of n){let{peerId:s}=fy(o.key);t.set(s,hy(o.value))}return t}function hy(r){return new Date(Gt(r))}async function*py(r,e,t,n){let o=lt({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new g("Query aborted","ERR_QUERY_ABORTED"))},d=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",d);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",d)}}var sT=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*my(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:d,log:u,peersSeen:f}=r,m=new br({concurrency:i}),h=await Oo(e);function p(y,w){if(y==null)return;f.add(y);let E=BigInt("0x"+B(Kn(w,h),"base16"));m.add(async()=>{let b=[o];d!=null&&b.push(AbortSignal.timeout(d));let S=ct(b);try{for await(let R of s({key:e,peer:y,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(R.name==="PEER_RESPONSE")for(let A of R.closer){if(f.has(A.id)){u("already seen %p in query",A.id);continue}if(n.equals(A.id)){u("not querying ourselves");continue}let D=await Xr(A.id);if(BigInt("0x"+B(Kn(D,h),"base16"))>E){u("skipping %p as they are not closer to %b than %p",A.id,e,y);continue}u("querying closer peer %p",A.id),p(A.id,D)}m.emit("completed",R)}}catch(R){if(!o.aborted)return rr({from:y,error:R},r)}finally{S.clear()}},{priority:sT-E}).catch(b=>{u.error(b)})}p(t,await Xr(t)),yield*py(m,o,l,u)}var H1=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);ve(1/0,u),n={...n,signal:u}}let s=new AbortController;ve(1/0,s.signal);let i=ct([this.shutDownController.signal,s.signal,n.signal]);ve(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+B(e,"base58btc")),c=Date.now(),l=new Ce,d=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await $t(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Oo(e),f=this.routingTable.closestPeers(u),m=f.slice(0,Math.min(this.disjointPaths,f.length));if(f.length===0){a.error("Running query with no peers");return}let h=new Je,p=m.map((y,w)=>my({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:m.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:h,onProgress:n.onProgress}));for await(let y of Nt(...p))y.name==="QUERY_ERROR"&&a.error("query error",y.error),yield y;d=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{d||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new mt("cleanup")),a("query:done in %dms",Date.now()-c)}}};function iT(r){return r[Symbol.asyncIterator]!=null}function aT(r){if(iT(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var q1=aT;var cT=r=>{let e=r.on||r.addListener||r.addEventListener,t=r.off||r.removeListener||r.removeEventListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function lT(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:d}=cT(r),u=(...m)=>{let h=t.multiArgs?m:m[0];t.filter&&!t.filter(h)||(c.push(h),t.count===c.length&&(n(),s(c)))},f=m=>{n(),i(m)};n=()=>{for(let m of a)d(m,u);for(let m of t.rejectionEvents)d(m,f)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qr(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function uc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=lT(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var W1=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=se(),this.started){this.controller=new AbortController;let e=ct([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);ve(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await uc(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await Ge(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>no(o,this.count),async o=>q1(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function yy(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function up(){return{contacts:[],dontSplit:!1,left:null,right:null}}function dc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var z1=class r extends Ce{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,dc("option.localNodeId as parameter 1",this.localNodeId),this.root=up()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){dc("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(dc("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){dc("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(yy(e.contacts[n].id,t))return n;return-1}remove(e){dc("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=up(),e.right=up();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!yy(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var uT="kad-close",dT=50,wy=20,fT=1e4,hT=10,G1=class extends Ce{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??wy,this.pingTimeout=o??fT,this.pingConcurrency=i??hT,this.running=!1,this.protocol=a,this.tagName=c??uT,this.tagValue=l??dT,this.pingQueue=new No({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",d=>{this.log.error("error pinging peer",d.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new z1({localNodeId:await Xr(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new Je,n=oy(()=>{let o=new Je(e.closest(e.localNodeId,wy).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=Qe(c);await u.write({type:ye.PING},Rr,l);let f=await u.read(Rr,l);if(await u.unwrap().close(),f.type!==ye.PING)throw new g(`Incorrect message type received, expected PING got ${f.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Xr(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Xr(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Xr(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var by=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Y1=15,X1=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async start(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await q1(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>Y1&&(e=Y1);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=Ut(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return Ye(o)}async _makePeerId(e,t,n){if(n>Y1)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Y1}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=by[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,Re.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Kn(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Q1=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new g("Missing key","ERR_MISSING_KEY");let n;try{n=oe.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>Q(s).toString())),await this.providers.addProvider(n,Ye(o.id))}))}};var j1=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");j(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(ne("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:ye.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var Z1=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=oe.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:ye.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var J1=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new g("Invalid key","ERR_INVALID_KEY");let o={type:ye.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(ry(n)){this.log("is public key");let a=ny(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new g("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new xt(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Hn(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=xt.deserialize(n);if(o==null)throw new g("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var ed=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var td=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new g(o,"ERR_EMPTY_RECORD")}try{let o=xt.deserialize(t.record);await Pi(this.validators,o),o.timeReceived=new Date;let s=Hn(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var rd=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[ye.GET_VALUE.toString()]:new J1(e,{peerRouting:o,logPrefix:i}),[ye.PUT_VALUE.toString()]:new td(e,{validators:s,logPrefix:i}),[ye.FIND_NODE.toString()]:new j1(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[ye.ADD_PROVIDER.toString()]:new Q1(e,{providers:n,logPrefix:i}),[ye.GET_PROVIDERS.toString()]:new Z1(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[ye.PING.toString()]:new ed(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await Ge(t,i=>Mt(i),async function*(i){for await(let a of i){let c=Rr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield Rr.encode(l))}},i=>Bt(i),t)}).catch(t=>{this.log.error(t)})}};var nd=class extends Ce{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new mt("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var dp=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await ur(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await ur(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new g("Not found","ERR_NOT_FOUND")}},fp=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},pT=32,mT=64,od=class extends Ce{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:d,pingConcurrency:u,maxInboundStreams:f,maxOutboundStreams:m,providers:h}=t,p=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(p),this.protocol=c??z9,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=f??pT,this.maxOutboundStreams=m??mT,this.peerInfoMapper=t.peerInfoMapper??ey,this.routingTable=new G1(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:p}),this.providers=new $1(e,h??{}),this.validators={...J9,...s},this.selectors={...Z9,...i},this.network=new F1(e,{protocol:this.protocol,logPrefix:p});let y=se();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new H1(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new K1(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:p}),this.contentFetching=new M1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:p}),this.contentRouting=new U1(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:p}),this.routingTableRefresh=new X1(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:p}),this.rpc=new rd(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:p,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new nd(e,{protocol:this.protocol,logPrefix:p}),this.querySelf=new W1(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.network.addEventListener("peer",w=>{let E=w.detail;this.onPeerConnect(E).catch(b=>{this.log.error("could not add %p to routing table",E.id,b)}),this.dispatchEvent(new mt("peer",{detail:E}))}),this.topologyListener.addEventListener("peer",w=>{let E=w.detail;Promise.resolve().then(async()=>{let b=await this.components.peerStore.get(E),S={id:E,multiaddrs:b.addresses.map(({multiaddr:R})=>R),protocols:b.protocols};await this.onPeerConnect(S)}).catch(b=>{this.log.error("could not add %p to routing table",E,b)})}),this.dhtPeerRouting=new fp(this),this.dhtContentRouting=new dp(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",w=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let E=w.detail.peer.addresses.some(({multiaddr:S})=>sy(S)),b=this.getMode();E&&b==="client"?await this.setMode("server"):b==="server"&&!E&&await this.setMode("client")}).catch(E=>{this.log.error("error setting dht server mode",E)})})}get[Zr](){return this.dhtContentRouting}get[Jr](){return this.dhtPeerRouting}get[qo](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),this.querySelf.start(),await Promise.all([this.providers.start(),this.queryManager.start(),this.network.start(),this.routingTable.start(),this.topologyListener.start(),this.routingTableRefresh.start()])}async stop(){this.running=!1,this.querySelf.stop(),await Promise.all([this.providers.stop(),this.queryManager.stop(),this.network.stop(),this.routingTable.stop(),this.routingTableRefresh.stop(),this.topologyListener.stop()])}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var Ey;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(Ey||(Ey={}));var xy;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(xy||(xy={}));function vy(r){return e=>new od(e,r)}var Cy=ke(ky(),1),Mi=Cy.default;var Ky=ke(Vy(),1);var xe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(xe||(xe={}));var OT="/pkcs8/",$y="/info/",Rs=new WeakMap,As={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},pp={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function qn(r){return r==null||typeof r!="string"?!1:r===(0,Ky.default)(r.trim())&&r.length>0}async function Pe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function fn(r){return new Oe(OT+r)}function Lo(r){return new Oe($y+r)}var ad=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Mi(pp,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<As.minKeyLength)throw new Error(`dek.keyLength must be least ${As.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<As.minSaltLength)throw new Error(`dek.saltLength must be least ${As.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<As.minIterationCount)throw new Error(`dek.iterationCount must be least ${As.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?cc(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Rs.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},pp),t=Math.ceil(As.minSaltLength/3)*3;return e.dek.salt=B(Ut(t),"base64"),e}static get options(){return pp}async createKey(e,t,n=2048){if(!qn(e)||e==="self")throw await Pe(),new g("Invalid key name",xe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Pe(),new g("Invalid key type",xe.ERR_INVALID_KEY_TYPE);let o=fn(e);if(await this.components.datastore.has(o))throw await Pe(),new g("Key name already exists",xe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Pe(),new g("Invalid RSA key size",xe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await Aa(t,n),c=await a.id(),l=Rs.get(this);if(l==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let f=this.components.datastore.batch();f.put(o,L(u)),f.put(Lo(e),L(JSON.stringify(i))),await f.commit()}catch(a){throw await Pe(),a}return i}async listKeys(){let e={prefix:$y},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(B(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new g(`Key with id '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Pe(),t}}async findKeyByName(e){if(!qn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=Lo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(B(n))}catch(n){throw await Pe(),this.log.error(n),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!qn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=fn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Lo(e)),await o.commit(),n}async renameKey(e,t){if(!qn(e)||e==="self")throw await Pe(),new g(`Invalid old key name '${e}'`,xe.ERR_OLD_KEY_NAME_INVALID);if(!qn(t)||t==="self")throw await Pe(),new g(`Invalid new key name '${t}'`,xe.ERR_NEW_KEY_NAME_INVALID);let n=fn(e),o=fn(t),s=Lo(e),i=Lo(t);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${t}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(B(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,L(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Pe(),c}}async exportKey(e,t){if(!qn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("Password is required",xe.ERR_PASSWORD_REQUIRED);let n=fn(e);try{let o=await this.components.datastore.get(n),s=B(o),i=Rs.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await li(s,a)).export(t)}catch(o){throw await Pe(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await li(n,t);return ut(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!qn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("PEM encoded key is required",xe.ERR_PEM_REQUIRED);let o=fn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await li(t,n)}catch{throw await Pe(),new g("Cannot read the key, most likely the password is wrong",xe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=Rs.get(this);if(d==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let u=d.dek;t=await i.export(u)}catch(d){throw await Pe(),d}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,L(t)),l.put(Lo(e),L(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!qn(e))throw new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw new g("PeerId is required",xe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new g("PeerId.privKey is required",xe.ERR_MISSING_PRIVATE_KEY);let n=await mr(t.privateKey),o=fn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i=Rs.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},d=this.components.datastore.batch();return d.put(o,L(c)),d.put(Lo(e),L(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Pe(),n}}async getPrivateKey(e){if(!qn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);try{let t=fn(e),n=await this.components.datastore.get(t);return B(n)}catch(t){throw await Pe(),this.log.error(t),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Pe(),new g(`Invalid old pass type '${typeof e}'`,xe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Pe(),new g(`Invalid new pass type '${typeof t}'`,xe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Pe(),new g(`Invalid pass length ${t.length}`,xe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Rs.get(this);if(n==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?cc(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Rs.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(fn(a.name)),l=B(c),d=await li(l,o),u=s.toString(),f=await d.export(u),m=this.components.datastore.batch(),h={name:a.name,id:a.id};m.put(fn(a.name),L(f)),m.put(Lo(a.name),L(JSON.stringify(h))),await m.commit()}this.log("keychain reconstructed")}};function cd(r={}){return e=>new ad(e,r)}var Ui=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new mp}async 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 g("Rate limit exceeded","ERR_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 v1(a)}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)}},mp=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 be;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(be||(be={}));var fc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),gp=Object.freeze({NEW_STREAM:be.NEW_STREAM,MESSAGE:be.MESSAGE_INITIATOR,CLOSE:be.CLOSE_INITIATOR,RESET:be.RESET_INITIATOR}),Hy=Object.freeze({MESSAGE:be.MESSAGE_RECEIVER,CLOSE:be.CLOSE_RECEIVER,RESET:be.RESET_RECEIVER});var yp=1<<20,PT=4<<20,ld=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=yp,t=PT){this._buffer=new de,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===be.NEW_STREAM||o===be.MESSAGE_INITIATOR||o===be.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=Wy(e),{value:o,offset:s}=Wy(e,n),i=t&7;if(fc[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},LT=128,qy=127;function Wy(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&qy)<<n:(s&qy)*Math.pow(2,n),n+=7}while(s>=LT);return e=o-e,{value:t,offset:e}}var wp=10*1024,bp=class{_pool;_poolOffset;constructor(){this._pool=qe(wp),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;ze(e.id<<3|e.type,n,o),o+=Fe(e.id<<3|e.type),(e.type===be.NEW_STREAM||e.type===be.MESSAGE_INITIATOR||e.type===be.MESSAGE_RECEIVER)&&e.data!=null?(ze(e.data.length,n,o),o+=Fe(e.data.length)):(ze(0,n,o),o+=Fe(0));let s=n.subarray(this._poolOffset,o);wp-o<100?(this._pool=qe(wp),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===be.NEW_STREAM||e.type===be.MESSAGE_INITIATOR||e.type===be.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},BT=new bp;async function*zy(r){for await(let e of r){let t=new de;BT.write(e,t),yield t}}var Ep=class extends Do{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?gp:Hy,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:gp.NEW_STREAM,data:new de(L(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function Gy(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=yp}=r;return new Ep({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var MT=1024,UT=1024,FT=1024*1024*4,VT=5,KT=500;function Yy(r){let e={...r,type:`${fc[r.type]} (${r.type})`};return r.type===be.NEW_STREAM&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===be.MESSAGE_INITIATOR||r.type===be.MESSAGE_RECEIVER)&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var ud=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??KT,this.sink=this._createSink(),this._source=lt({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=Ge(this._source,n=>zy(n)),this.closeController=new AbortController,this.rateLimiter=new Ui({points:t.disconnectThreshold??VT,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??UT))throw new g("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=Gy({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,Yy(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{u1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new ld(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",Yy(e)),e.type===be.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??MT)){this.log("too many inbound streams open"),this._source.push({id:t,type:be.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:B(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,fc[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??FT;try{switch(n){case be.MESSAGE_INITIATOR:case be.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===be.MESSAGE_INITIATOR?be.RESET_RECEIVER:be.RESET_INITIATOR}),new g("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case be.CLOSE_INITIATOR:case be.CLOSE_RECEIVER:s.remoteCloseWrite();break;case be.RESET_INITIATOR:case be.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var xp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new ud(this.components,{...e,...this._init})}};function Xy(r={}){return e=>new xp(e,r)}var Qy="1.0.0",jy="ping",Zy="ipfs";var vp="ERR_WRONG_PING_ACK";var dd=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??Zy}/${jy}/${Qy}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();Ge(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=Ut(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new g("ping timeout",gn))},t.signal?.addEventListener("abort",a,{once:!0});let c=await Ge([o],i,async d=>ps(d)),l=Date.now()-n;if(c==null)throw new g(`Did not receive a ping ack after ${l}ms`,vp);if(!j(o,c.subarray()))throw new g(`Received wrong ping ack after ${l}ms`,vp);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function Jy(r={}){return e=>new dd(e,r)}var nr;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(nr||(nr={}));var Bo=class extends g{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var _p=class extends Bo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,nr.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function Tp(r,e){return new _p(r,e)}var Sp=class extends Bo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,nr.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function fd(r){return new Sp(r)}var Rp=class extends Bo{constructor(e){super(`There was a problem with a provided argument: ${e}`,nr.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function hc(r){return new Rp(r)}var Ap=class extends Bo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,nr.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function kp(r,e){return new Ap(r,e)}var Ip=class extends Bo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,nr.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function ew(r){return new Ip(r)}var Dp=class extends Bo{constructor(e){super(`unsupported hash algorithm: ${e}`,nr.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function tw(r){return new Dp(r)}var rw=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},zT=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var GT=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var YT=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var XT=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var QT=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var jT=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,ZT=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,nw=3,JT=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",jT]],ow=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function iw(r){return r?sw(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new QT:typeof navigator<"u"?sw(navigator.userAgent):rk()}function ek(r){return r!==""&&JT.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function sw(r){var e=ek(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new XT;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<nw&&(o=rw(rw([],o,!0),nk(nw-o.length),!0)):o=[];var s=o.join("."),i=tk(r),a=ZT.exec(r);return a&&a[1]?new YT(t,s,i,a[1]):new zT(t,s,i)}function tk(r){for(var e=0,t=ow.length;e<t;e++){var n=ow[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function rk(){var r=typeof process<"u"&&process.version;return r?new GT(process.version.slice(1)):null}function nk(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var aw=iw(),pc=aw!=null&&aw.name==="firefox",hd=async function*(){},pd=async r=>{},ok=30*1e3;function cw(r,e,t=ok,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=se(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await qr(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var Is=class{log;peerConnection;remoteAddr;timeline;metrics;source=hd();sink=pd;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var Ht;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(Ht||(Ht={}));var sk=16*1024*1024,ik=30*1e3,ak=5,ck=2,lk=16*1024,uk=5e3,dk=5e3,Cp=class extends Do{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await qr(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=lt(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??ik,this.maxBufferedAmount=e.maxBufferedAmount??sk,this.maxMessageSize=(e.maxMessageSize??lk)-ak-ck,this.receiveFinAck=se(),this.finAckTimeout=e.closeTimeout??uk,this.openTimeout=e.openTimeout??dk,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new g("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of Mt(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new de(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await uc(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof _o?new g(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new g(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await uc(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=Ht.encode({message:n}),s=Bt.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(Ht.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(Ht.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await $t(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(Ht.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=Ht.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===Ht.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Ht.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===Ht.Flag.RESET&&this.reset(),t.flag===Ht.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===Ht.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=Ht.encode({flag:e}),n=Bt.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function Fi(r){let{channel:e,direction:t}=r;return new Cp({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var lw="/webrtc",Ds=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??lw,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=Fi({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new Np(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},Np=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??lw,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=Fi({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),cw(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=hd();sink=pd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=Fi({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Vi=globalThis.RTCPeerConnection,md=globalThis.RTCSessionDescription,uw=globalThis.RTCIceCandidate;var qt;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(qt||(qt={}));var gd=async(r,e,t)=>{try{let n=se();for(hk(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==qt.Type.ICE_CANDIDATE)throw new g("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new uw(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function fk(r){return pc?r.iceConnectionState:r.connectionState}function hk(r,e){r[pc?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(fk(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new g("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function dw({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=fw(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new g("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(ge(c)),d,u=!1;l.length===0?(d=await s.dial(a,{signal:e}),u=!0):d=l[0];try{let f=await d.newStream(yd,{signal:e,runOnTransientConnection:!0}),m=Qe(f).pb(qt);try{let h=r.createDataChannel("init");r.onicecandidate=({candidate:E})=>{let b=JSON.stringify(E?.toJSON()??null);i.trace("initiator sending ICE candidate %s",b),m.write({type:qt.Type.ICE_CANDIDATE,data:b},{signal:e}).catch(S=>{i.error("error sending ICE candidate",S)})},r.onicecandidateerror=E=>{i.error("initiator ICE candidate error",E)};let p=await r.createOffer().catch(E=>{throw i.error("could not execute createOffer",E),new g("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",p.sdp),await m.write({type:qt.Type.SDP_OFFER,data:p.sdp},{signal:e}),await r.setLocalDescription(p).catch(E=>{throw i.error("could not execute setLocalDescription",E),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await m.read({signal:e});if(y.type!==qt.Type.SDP_ANSWER)throw new g("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",y.data);let w=new md({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(E=>{throw i.error("could not execute setRemoteDescription",E),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await gd(r,m,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),h.close(),i.trace("initiator closing signalling stream"),await m.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(h){throw r.close(),f.abort(h),h}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(f){d.abort(f)}}}var wd=class extends Ce{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>zr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function hw({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=Qe(e).pb(qt);try{r.onicecandidate=({candidate:d})=>{let u=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:qt.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(f=>{o.error("error sending ICE candidate",f)})};let a=await s.read({signal:t});if(a.type!==qt.Type.SDP_OFFER)throw new g(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new md({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(d=>{throw o.error("could not execute setRemoteDescription",d),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(d=>{throw o.error("could not execute createAnswer",d),new g("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:qt.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(d=>{throw o.error("could not execute setLocalDescription",d),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await gd(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=Q(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var pk="/webrtc",mk="/p2p-circuit",yd="/webrtc-signaling/0.0.1",gk=30*1e3,bd=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,ve(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(yd,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(yd),this._started=!1}createListener(e){return new wd(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[en]=!0;filter(e){return e.filter(T9.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Vi(this.init.rtcConfiguration),o=new Ds(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await dw({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new Is(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??gk),o=new Vi(this.init.rtcConfiguration),s=new Ds(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await hw({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new Is(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function fw(r){let e=r.toString().split(pk+"/");if(e.length!==2)throw new g("webrtc protocol was not present in multiaddr",nr.ERR_INVALID_MULTIADDR);if(!e[0].includes(mk))throw new g("p2p-circuit protocol was not present in multiaddr",nr.ERR_INVALID_MULTIADDR);let t=Q(e[0]),o=Q("/"+e[1]).getPeerId();if(o==null)throw new g("destination peer id was missing",nr.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new g("invalid multiaddr",nr.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ge(o)}}var Hb=ke(c3(),1);var Bb=ke(c3(),1);var l3=Object.values(lr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function Mb(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:_N(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw kp("","no fingerprint on local certificate");return n}var vN=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function _N(r){return r.match(vN)?.groups?.fingerprint}function SN(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Cd(r){let t=r.stringTuples().filter(n=>n[0]===Vb).map(n=>n[1])[0];if(t===void 0||t==="")throw fd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function u3(r){let e=l3.decode(r);return Bb.decode(e)}function RN(r){let e=u3(Cd(r)),t=d3(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw kp(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function d3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw tw(r)}}function AN(r,e){let{host:t,port:n}=r.toOptions(),o=SN(r),[s]=RN(r);return`v=0
|
|
28
23
|
o=- 0 0 IN ${o} ${t}
|
|
29
24
|
s=-
|
|
30
25
|
c=IN ${o} ${t}
|
|
@@ -39,25 +34,24 @@ a=fingerprint:${s}
|
|
|
39
34
|
a=sctp-port:5000
|
|
40
35
|
a=max-message-size:16384
|
|
41
36
|
a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host\r
|
|
42
|
-
`}function
|
|
37
|
+
`}function Ub(r,e){return{type:"answer",sdp:AN(r,e)}}function Fb(r,e){if(r.sdp===void 0)throw hc("Can't munge a missing SDP");return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
|
|
43
38
|
a=ice-ufrag:`+e+`
|
|
44
39
|
`).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
45
40
|
a=ice-pwd:`+e+`
|
|
46
|
-
`),r}var IR=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),kR=r=>[...Array(r)].map(()=>IR.at(Math.floor(Math.random()*IR.length))).join("");var HF=1e4,Jye=fe("webrtc-direct").code,AR=fe("certhash").code,gp=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw F_("WebRTCTransport.createListener")}filter(e){return e.filter(bx.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[Sn]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw Qh("we need to have the remote's PeerId");let i=Ae(s),a=W4(yp(e)),c=await Ec.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:z4(a.name)}),l=new Ec({certificates:[c]});try{let f=new Promise((A,C)=>{let U=l.createDataChannel("",{negotiated:!0,id:0}),L=setTimeout(()=>{let F=`Data channel was never opened: state: ${U.readyState}`;this.log.error(F),this.metrics?.dialerEvents.increment({open_error:!0}),C(d4("data",F))},HF);U.onopen=F=>{clearTimeout(L),A(U)},U.onerror=F=>{clearTimeout(L);let re=`Error opening a data channel for handshaking: ${F.target?.toString()??"not specified"}`;this.log.error(re),this.metrics?.dialerEvents.increment({unknown_error:!0}),C(d4("data",re))}}),u="libp2p+webrtc+v1/"+kR(32),d=await l.createOffer(),y=RR(d,u);await l.setLocalDescription(y);let p=SR(e,u);await l.setRemoteDescription(p);let m=await f,g=this.components.peerId,b=this.generateNoisePrologue(l,a.code,e),E=$a({prologueBytes:b})(this.components),w=wc({channel:m,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),_={...w,sink:w.sink.bind(w),source:async function*(){for await(let A of w.source)for(let C of A)yield C}()},I=new qi(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),k=Du?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(k,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":I.close().catch(A=>{this.log.error("error closing connection",A)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let D=new Hi(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await E.secureInbound(g,_,i),await t.upgrader.upgradeOutbound(I,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(f){throw l.close(),f}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw Tu("no local certificate");let o=_R(e,{log:this.log});if(o==null)throw Tu("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=x(s,"hex"),a=TR.encode(i,t),c=Y4.decode(yp(n)),l=x("libp2p-webrtc-noise:");return le([l,a,c])}};function DR(r){return e=>new gp(e,r)}function PR(r){return e=>new op(e,r)}function CR(r){let e;try{e=fe("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function NR(r){return r.some(([e,t])=>e===fe("tls").code)}function Ir(r,e,t){let n=BR[fe(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${fe(r).name}`);let o=n(e,t);return r===fe("ip6").code?`[${o}]`:o}var BR={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${Ir(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${Ir(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=NR(e),n=CR(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=Ir(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return Ir(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return Ir(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=Ir(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=NR(e),n=CR(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=Ir(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=Ir(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function LR(r,e){let n=se(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=fe(o[0]),i=BR[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&o[0]===fe("tcp").code&&(a=a.replace("tcp://","http://"),(o[1]==="443"||o[1]==="80")&&(o[1]==="443"&&(a=a.replace("http://","https://")),a=a.substring(0,a.lastIndexOf(":")))),a}var OR=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var KR=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await OR(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var VR=Ue(UR(),1);function FR(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var qR=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=f=>{r.removeEventListener("open",c),r.removeEventListener("error",l),f()},c=()=>{a(s)},l=f=>{a(()=>{i(f.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new VR.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let d=null;typeof u.data=="string"&&(d=x(u.data)),FR(u.data)&&(d=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(d=u.data),d!=null&&i(d)},f=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",f),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",f),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield FR(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var HR=(r,e)=>{e=e??{};let t=qR(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:KR(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var $R=WebSocket;var GF={"http:":"ws:","https:":"wss:"},GR="ws:",YR=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??GR}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??GR,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(GF))t.protocol===n&&(t.protocol=o);return t};function WR(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=YR(r,t),o=new $R(n.toString(),e.websocket);return HR(o,e)}function zR(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Qa.matches(t)||Ii.matches(t)})}function jR(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ii.matches(t)})}function XR(){throw new Error("WebSocket Servers can not be created in the browser!")}function QR(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new h("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var Q4=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[Sn]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=QR(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new en;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=he(),s=WR(LR(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new h(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new en),s.close().catch(f=>{this.log.error("error closing raw socket",f)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return XR({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):ch||lh?jR(e):zR(e)}};function JR(r={}){return e=>new Q4(e,r)}async function J4(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=r.writable.getWriter(),c=r.readable.getReader();await a.ready;function l(){let p=n.findIndex(m=>m===y);p!==-1&&(n.splice(p,1),y.timeline.close=Date.now(),o?.(y))}let f=!1,u=!1;(async function(){let p=await a.closed.catch(m=>m);if(p!=null){let m=p.message;m.includes("aborted by the remote server")||m.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${p.message}`)}f=!0,f&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let p=await c.closed.catch(m=>m);p!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${p.message}`),u=!0,f&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let d=!1,y={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(p){f||(a.abort(p).catch(m=>{i.error("could not abort stream",m)}),f=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),l()},async close(p){this.status="closing",await Promise.all([y.closeRead(p),y.closeWrite(p)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(p){if(!u){this.readStatus="closing";try{await c.cancel()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(f=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}f&&l()},async closeWrite(p){if(!f){f=!0,this.writeStatus="closing";try{await a.close()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&l()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let p=await c.read();if(p.done){u=!0,f&&l();return}yield new be(p.value)}}(),sink:async function(p){if(d)throw new Error("sink already called on stream");d=!0;try{this.writeStatus="writing";for await(let m of p)if(m instanceof Uint8Array)await a.write(m);else for(let g of m)await a.write(g);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await y.closeWrite()}},log:i};return y}function Z4(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function ZR(r,e){return e.filter(n=>!!r.find(o=>O(n,o))).length===e.length}var jF=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function XF(r){return kr.decode(jF.decode(r))}function eA(r){if(!oh.matches(r))throw new h("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===fe("certhash").code).map(([i,a])=>XF(a??"")),n=e.filter(([i,a])=>i===fe("p2p").code).map(([i,a])=>Ae(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var e8=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[Sn]=!0;async dial(e,t){t?.signal?.throwIfAborted(),this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:o,certhashes:s,remotePeer:i}=eA(e);if(i==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,l=()=>{},f=!1,u=!1,d=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let y=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(p=>({algorithm:"sha-256",value:p.digest}))});if(l=p=>{if(!f)try{this.metrics?.dialerEvents.increment({[p]:!0}),y.close()}catch(m){this.log.error("error closing wt session",m)}finally{c!=null&&(c.timeline.close=Date.now()),f=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),await Promise.race([y.closed,y.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),y.closed.catch(p=>{this.log.error("error on remote wt session close",p)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(y,n,i,s))throw new Error("Failed to authenticate webtransport");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("Closing webtransport"),l("close")},abort:p=>{this.log("aborting webtransport due to passed err",p),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...Z4()},d=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(y),skipProtection:!0})}catch(y){throw this.log.error("caught wt session err",y),l(d?"upgrade_error":u?"noise_error":"ready_error"),y}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o){let s=await e.createBidirectionalStream(),i=s.writable.getWriter(),a=s.readable.getReader();await i.ready;let c={source:async function*(){for(;;){let u=await a.read();if(u.value!=null&&(yield u.value),u.done)break}}(),sink:async function(u){for await(let d of u)d instanceof Uint8Array?await i.write(d):await i.write(d.subarray())}},l=$a()(this.components),{remoteExtensions:f}=await l.secureOutbound(t,c,n);if(i.close().catch(u=>{this.log.error(`Failed to close authentication stream writer: ${u.message}`)}),a.cancel().catch(u=>{this.log.error(`Failed to close authentication stream reader: ${u.message}`)}),!ZR(f?.webtransportCerthashes??[],o.map(u=>u.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e){let t=0,n=this.config,o=this;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let i=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:l,value:f}=await c.read();if(l)break;if(i.length>=n.maxInboundStreams)f.writable.close().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),f.readable.cancel().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await J4(f,String(t++),"inbound",i,s?.onStreamEnd,o.components.logger);i.push(u),s?.onIncomingStream?.(u)}}}().catch(()=>{this.log.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:i,newStream:async c=>{let l=await e.createBidirectionalStream(),f=await J4(l,String(t++),s?.direction??"outbound",i,s?.onStreamEnd,o.components.logger);return i.push(f),f},close:async c=>{this.log("Closing webtransport muxer"),await Promise.all(i.map(async l=>l.close(c)))},abort:c=>{this.log("Aborting webtransport muxer with err:",c);for(let l of i)l.abort(c)},...Z4()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(oh.exactMatch)}};function tA(r={}){return e=>new e8(e,r)}var t8=Ue(Kf(),1);function rA(r,e){let t=e.map((n,o)=>({record:Pn(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===ur.ValidityType.EOL&&o.record.validityType===ur.ValidityType.EOL){let a=t8.default.fromString(n.record.validity).toDate(),c=t8.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var Ep="1.2.1",xp="libp2p";var oA="4.0.0",sA="helia";var iA={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function vp(r={}){return{peerId:r.peerId,addresses:{listen:["/webrtc"]},transports:[ey({discoverRelays:1}),PR(),DR(),tA(),JR()],connectionEncryption:[$a()],streamMuxers:[Vw(),L_()],peerDiscovery:[IE(iA)],services:{autoNAT:mE(),dcutr:_x(),delegatedRouting:()=>ab("https://delegated-ipfs.dev"),dht:Fv({clientMode:!0,validators:{ipns:Zf},selectors:{ipns:rA}}),identify:Ox({agentVersion:`${sA}/${oA} ${xp}/${Ep} UserAgent=${globalThis.navigator.userAgent}`}),keychain:Yh(r.keychain),ping:U_()}}}var o8={};oe(o8,{Ed25519PrivateKey:()=>Yi,Ed25519PublicKey:()=>Uu,generateKeyPair:()=>tV,generateKeyPairFromSeed:()=>hA,unmarshalEd25519PrivateKey:()=>ZF,unmarshalEd25519PublicKey:()=>eV});function Qr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Dc=32,Go=64,_p=32;function aA(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:fA(r,e),publicKey:e}}function cA(r){if(r.length!==_p)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:fA(e,t),publicKey:t}}function lA(r,e){let t=r.subarray(0,_p);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function uA(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function fA(r,e){let t=new Uint8Array(Go);for(let n=0;n<_p;n++)t[n]=r[n],t[_p+n]=e[n];return t}var or={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var r8={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function dA(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=or.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",r8,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",r8,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",r8,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Pc(r,e){let n=await dA().encrypt(r,e);return Ge.encode(n)}var rt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(rt||(rt={}));var n8;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(n8||(n8={}));(function(r){r.codec=()=>Re(n8)})(rt||(rt={}));var to;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),rt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=rt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(to||(to={}));var ro;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),rt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=rt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(ro||(ro={}));var Uu=class{_key;constructor(e){this._key=Cc(e,Dc)}verify(e,t){return uA(this._key,t,e)}marshal(){return this._key}get bytes(){return to.encode({Type:rt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}},Yi=class{_key;_publicKey;constructor(e,t){this._key=Cc(e,Go),this._publicKey=Cc(t,Dc)}sign(e){return lA(this._key,e)}get public(){return new Uu(this._publicKey)}marshal(){return this._key}get bytes(){return ro.encode({Type:rt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Qr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function ZF(r){if(r.length>Go){r=Cc(r,Go+Dc);let n=r.subarray(0,Go),o=r.subarray(Go,r.length);return new Yi(n,o)}r=Cc(r,Go);let e=r.subarray(0,Go),t=r.subarray(Dc);return new Yi(e,t)}function eV(r){return r=Cc(r,Dc),new Uu(r)}async function tV(){let{privateKey:r,publicKey:e}=aA();return new Yi(r,e)}async function hA(r){let{privateKey:e,publicKey:t}=cA(r);return new Yi(e,t)}function Cc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var l8={};oe(l8,{MAX_RSA_KEY_SIZE:()=>qu,RsaPrivateKey:()=>Nc,RsaPublicKey:()=>Vu,fromJwk:()=>hV,generateKeyPair:()=>pV,unmarshalRsaPrivateKey:()=>a8,unmarshalRsaPublicKey:()=>dV});function Wi(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var qs={};oe(qs,{exportToPem:()=>aV,importFromPem:()=>cV,jwkToPkcs1:()=>nV,jwkToPkix:()=>sV,pkcs1ToJwk:()=>rV,pkixToJwk:()=>oV});function rV(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(no(t[1].toBigInt()),"base64url"),e:v(no(t[2].toBigInt()),"base64url"),d:v(no(t[3].toBigInt()),"base64url"),p:v(no(t[4].toBigInt()),"base64url"),q:v(no(t[5].toBigInt()),"base64url"),dp:v(no(t[6].toBigInt()),"base64url"),dq:v(no(t[7].toBigInt()),"base64url"),qi:v(no(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function nV(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(oo(x(r.n,"base64url"))),B.fromBigInt(oo(x(r.e,"base64url"))),B.fromBigInt(oo(x(r.d,"base64url"))),B.fromBigInt(oo(x(r.p,"base64url"))),B.fromBigInt(oo(x(r.q,"base64url"))),B.fromBigInt(oo(x(r.dp,"base64url"))),B.fromBigInt(oo(x(r.dq,"base64url"))),B.fromBigInt(oo(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function oV(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(no(t[0].toBigInt()),"base64url"),e:v(no(t[1].toBigInt()),"base64url")}}function sV(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(oo(x(r.n,"base64url"))),B.fromBigInt(oo(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function no(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function oo(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var iV=16,s8=32,i8=1e4;async function aV(r,e){let t=or.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Wi(iV),a=await pt(Ye,e,i,{c:i8,dkLen:s8}),c=Wi(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:i8}),new B({value:s8}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
47
|
-
`)}async function cV(r,e){let t=or.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=lV(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Fu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=pA(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=pA(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return a8(n)}function lV(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Fu(s.valueBlock.value[0].getValue()),a=i8,c=s8;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Fu(l.valueBlock.value[1].getValue());return{cipherText:Fu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function pA(r){return Fu(r.valueBlock.value[2].getValue())}function Fu(r){return new Uint8Array(r,0,r.byteLength)}async function mA(r){let e=await or.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await bA(e);return{privateKey:t[0],publicKey:t[1]}}async function c8(r){let t=[await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await uV(r)],n=await bA({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function yA(r,e){let t=await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await or.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function gA(r,e,t){let n=await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return or.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function bA(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([or.get().subtle.exportKey("jwk",r.privateKey),or.get().subtle.exportKey("jwk",r.publicKey)])}async function uV(r){return or.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Rp(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var qu=8192,Vu=class{_key;constructor(e){this._key=e}verify(e,t){return gA(this._key,t,e)}marshal(){return qs.jwkToPkix(this._key)}get bytes(){return to.encode({Type:rt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}},Nc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Wi(16)}sign(e){return yA(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Vu(this._publicKey)}marshal(){return qs.jwkToPkcs1(this._key)}get bytes(){return ro.encode({Type:rt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return qs.exportToPem(this,e);if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function a8(r){let e=qs.pkcs1ToJwk(r);if(Rp(e)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await c8(e);return new Nc(t.privateKey,t.publicKey)}function dV(r){let e=qs.pkixToJwk(r);if(Rp(e)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Vu(e)}async function hV(r){if(Rp(r)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await c8(r);return new Nc(e.privateKey,e.publicKey)}async function pV(r){if(r>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await mA(r);return new Nc(e.privateKey,e.publicKey)}var f8={};oe(f8,{Secp256k1PrivateKey:()=>$u,Secp256k1PublicKey:()=>Hu,generateKeyPair:()=>bV,unmarshalSecp256k1PrivateKey:()=>yV,unmarshalSecp256k1PublicKey:()=>gV});function wA(){return W.utils.randomPrivateKey()}function EA(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Qr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function xA(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Qr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function vA(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function _A(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function u8(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function SA(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Hu=class{_key;constructor(e){u8(e),this._key=e}verify(e,t){return xA(this._key,t,e)}marshal(){return vA(this._key)}get bytes(){return to.encode({Type:rt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Qr(e)?{bytes:t}=await e:t=e.bytes,t}},$u=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??SA(e),_A(this._key),u8(this._publicKey)}sign(e){return EA(this._key,e)}get public(){return new Hu(this._publicKey)}marshal(){return this._key}get bytes(){return ro.encode({Type:rt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function yV(r){return new $u(r)}function gV(r){return new Hu(r)}async function bV(){let r=wA();return new $u(r)}var zi={rsa:l8,ed25519:o8,secp256k1:f8};function RA(r){let e=Object.keys(zi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function AA(r){let e=to.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case rt.RSA:return zi.rsa.unmarshalRsaPublicKey(t);case rt.Ed25519:return zi.ed25519.unmarshalEd25519PublicKey(t);case rt.Secp256k1:return zi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw RA(e.Type??"unknown")}}async function IA(r){let e=ro.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case rt.RSA:return zi.rsa.unmarshalRsaPrivateKey(t);case rt.Ed25519:return zi.ed25519.unmarshalEd25519PrivateKey(t);case rt.Secp256k1:return zi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw RA(e.Type??"RSA")}}var Vt={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var Bc;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=J((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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(f&7);break}}return c})),s),o.encode=i=>Q(i,o.codec()),o.decode=i=>X(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=J((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),Ip.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:c.key=i.string();break;case 2:c.value=Ip.codec().decode(i,i.uint32());break;default:i.skipType(f&7);break}}return c})),s),o.encode=i=>Q(i,o.codec()),o.decode=i=>X(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Ap.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(Ap.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Bc||(Bc={}));var Ap;(function(r){let e;r.codec=()=>(e==null&&(e=J((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)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ap||(Ap={}));var Ip;(function(r){let e;r.codec=()=>(e==null&&(e=J((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)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ip||(Ip={}));function Lc(r,e){let t=Bc.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=F6({...r,publicKey:r.publicKey}));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:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:se(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var d8="/peers/";function Oc(r){if(!na(r)||r.type==null)throw new h("Invalid PeerId",Vt.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new qe(`${d8}${e}`)}async function kA(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=se(o.multiaddr)),!ns(o.multiaddr))throw new h("Multiaddr was invalid",Vt.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function Tp(r,e,t,n){if(e==null)throw new h("Invalid PeerData",Vt.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!O(e.publicKey,r.publicKey))throw new h("publicKey bytes do not match peer id publicKey bytes",Vt.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new h("peer id did not match existing peer id",Vt.ERR_INVALID_PARAMETERS);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(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=kp(u,{validate:TA})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=kp(u,{validate:DA,map:PA})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[d,y]of u)y==null?a.delete(d):a.set(d,y);a=kp([...a.entries()],{validate:TA})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),d=new Map(c);for(let[y,p]of u)p==null?d.delete(y):d.set(y,p);c=kp([...d.entries()],{validate:DA,map:PA})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let f={addresses:await kA(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,d)=>u.localeCompare(d)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete f.publicKey,f}function kp(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 TA(r,e){if(typeof r!="string")throw new h("Metadata key must be a string",Vt.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new h("Metadata value must be a Uint8Array",Vt.ERR_INVALID_PARAMETERS)}function DA(r,e){if(typeof r!="string")throw new h("Tag name must be a string",Vt.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new h("Tag value must be an integer",Vt.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new h("Tag value must be between 0-100",Vt.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new h("Tag ttl must be an integer",Vt.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new h("Tag ttl must be between greater than 0",Vt.ERR_INVALID_PARAMETERS)}}function PA(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function Dp(r,e,t){let n=r.toString().split("/")[2],o=vt.decode(n),s=at(o),i=t.get(s);if(i!=null)return i;let a=Lc(s,e);return t.set(s,a),a}function wV(r,e){return r==null?{}:{prefix:d8,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(Dp(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(Dp(n.key,n.value,e),Dp(o.key,o.value,e)))}}var Pp=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=Cl({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Oc(e))}async delete(e){if(this.peerId.equals(e))throw new h("Cannot delete self peer",Vt.ERR_INVALID_PARAMETERS);await this.datastore.delete(Oc(e))}async load(e){let t=await this.datastore.get(Oc(e));return Lc(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new Lt;for await(let{key:n,value:o}of this.datastore.query(wV(e??{},t))){let s=Dp(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Oc(e)),n=Lc(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=Bc.encode(t);return n!=null&&O(s,n)?{peer:Lc(e,s),previous:o,updated:!1}:(await this.datastore.put(Oc(e),s),{peer:Lc(e,s),previous:o,updated:!0})}};var Cp=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 Pp(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await Pl(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await mn.openAndCertify(e,Sr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=Sr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await mn.createFromProtobuf(s.peerRecordEnvelope),a=Sr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!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 CA(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var EV=r=>r;function h8(r,e){let t=r.getPeerId();return t!=null&&Ae(t).equals(e)&&(r=r.decapsulate(se(`/p2p/${e.toString()}`))),r}var Np=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??EV,this._updatePeerStoreAddresses=CA(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>se(t))).map(t=>t.getPeerId()===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=>se(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>se(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>se(e))}addObservedAddr(e){e=h8(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=h8(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=h8(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>se(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var p8=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=Qo())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Qu(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")}},xV=["metrics","connectionProtector"],vV=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function NA(r={}){let e=new p8(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!vV.includes(o)){let i=e.components[o];if(i==null&&!xV.includes(o))throw new h(`${o} not set`,"ERR_SERVICE_MISSING");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 BA(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!$r(`${t[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}}function m8(r){try{let{address:e}=r.nodeAddress();return!!$r(e)}catch{return!0}}function _V(r,e){let t=m8(r.multiaddr),n=m8(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function SV(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function RV(r,e){let t=cu.exactMatch(r.multiaddr),n=cu.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Kc(r,e){let t=_V(r,e);if(t!==0)return t;let n=RV(r,e);return n!==0?n:SV(r,e)}var g8=Ue(m2(),1),b8=Ue(KA(),1);function Bp(r,e,t){return`${r}?name=${e}&type=${t}`}async function MA(r,e){return await(await fetch(r,{headers:new Headers({accept:"application/dns-json"}),signal:e})).json()}function ji(r,e){return`${e}_${r}`}var y8=Object.assign((0,g8.default)("dns-over-http-resolver"),{error:(0,g8.default)("dns-over-http-resolver:error")}),w8=class{_cache;_TXTcache;_servers;_request;_abortControllers;constructor(e={}){this._cache=new b8.default({max:e?.maxCache??100}),this._TXTcache=new b8.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??MA,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>{e.abort()})}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*t),o=e[t];e[t]=e[n],e[n]=o}return e}setServers(e){this._servers=e}async resolve(e,t="A"){switch(t){case"A":return this.resolve4(e);case"AAAA":return this.resolve6(e);case"TXT":return this.resolveTxt(e);default:throw new Error(`${t} is not supported`)}}async resolve4(e){let t="A",n=this._cache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>f.data),l=Math.min(...a.Answer.map(f=>f.TTL));return this._cache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),y8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolve6(e){let t="AAAA",n=this._cache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>f.data),l=Math.min(...a.Answer.map(f=>f.TTL));return this._cache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),y8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolveTxt(e){let t="TXT",n=this._TXTcache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>[f.data.replace(/['"]+/g,"")]),l=Math.min(...a.Answer.map(f=>f.TTL));return this._TXTcache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),y8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},UA=w8;var FA=UA;var{code:DV}=fe("dnsaddr");async function Mc(r,e={}){let t=new FA;e.signal!=null&&e.signal.addEventListener("abort",()=>{t.cancel()});let n=r.getPeerId(),[,o]=r.stringTuples().find(([a])=>a===DV)??[];if(o==null)throw new Error("No hostname found in multiaddr");let i=(await t.resolveTxt(`_dnsaddr.${o}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(i=i.filter(a=>a.includes(n))),i}var Yo;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Yo||(Yo={}));var ee;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(ee||(ee={}));var PV={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Mc},addressSorter:Kc},transportManager:{faultTolerance:zo.FATAL_ALL}};async function VA(r){let e=gc(PV,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new h(Yo.ERR_PROTECTOR_REQUIRED,ee.ERR_PROTECTOR_REQUIRED);if(!(await It(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new h("Private key doesn't match peer id",ee.ERR_INVALID_KEY);return e}function Lp(r){if(na(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:Ae(t),r.forEach(n=>{if(!ns(n))throw new h("Invalid Multiaddr",ee.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new h("Multiaddrs must all have the same peer id or have no peer id",ee.ERR_INVALID_PARAMETERS)}else{let s=Ae(o);if(e==null||!e.equals(s))throw new h("Multiaddrs must all have the same peer id or have no peer id",ee.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var Op="last-dial-failure";var Kp=5,Mp=100,Up=50,qA=1e3*60*7;var Xi={minConnections:Kp,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:qA,autoDialDiscoveredPeersDebounce:10},Fp=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Xi.minConnections,this.autoDialPriority=t.autoDialPriority??Xi.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Xi.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Xi.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Xi.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Xi.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new Cs({concurrency:t.autoDialConcurrency??Xi.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new mt(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new Lt;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((f,u)=>f+u.value,0));let c=s.sort((l,f)=>{let u=i.get(l.id)??0,d=i.get(f.id)??0;return u>d?-1:u<d?1:0}).filter(l=>{let f=l.metadata.get(Op);if(f==null)return!0;let u=parseInt(v(f));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let f=this.connectionManager.getConnectionsMap().size;if(f>=this.minConnections){this.log("got enough connections now %d/%d",f,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(f=>{this.log.error("could not connect to peerStore stored peer",f)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var HA={maxConnections:Mp,allow:[]},Vp=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??HA.maxConnections,this.allow=t.allow??HA.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new Lt;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((f,u)=>f+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,f=o.get(c.remotePeer)??0;if(l>f)return 1;if(l<f)return-1;let u=a.timeline.open,d=c.timeline.open;return u<d?1:u>d?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function _8(r,e){if(!r.protoNames().includes("dnsaddr"))return[r];let n=await BV(r,e),i=(await Promise.all(n.map(async a=>_8(a,e)))).flat().reduce((a,c)=>(a.find(l=>l.equals(c))==null&&a.push(c),a),[]);return e.log("resolved %s to",r,i.map(a=>a.toString())),i}async function BV(r,e){try{return r=se(r.toString()),await r.resolve(e)}catch(t){return e.log.error(`multiaddr ${r.toString()} could not be resolved`,t),[]}}var qp={addressSorter:Kc,maxParallelDials:Up,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:Mc}},Hp=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??qp.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??qp.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??qp.dialTimeout,this.connections=t.connections??new Lt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))D1.set(n,o);this.queue=new To({concurrency:t.maxParallelDials??qp.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Lp(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),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 i.join(t)}return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:f})=>f.toString()).forEach(f=>{a?.multiaddrs.add(f)})}catch(f){throw c.clear(),f}try{let f=0,u=[];for(let d of l){if(f===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",f,n),new h("Peer had more than maxPeerAddrsToDial",ee.ERR_TOO_MANY_ADDRESSES);f++;try{let y=await this.components.transportManager.dial(d.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",d.multiaddr),y}catch(y){if(this.log.error("dial failed to %a",d.multiaddr,y),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Op]:x(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new h(y.message,ao);u.push(y)}}throw u.length===1?u[0]:new Xu(u,"All multiaddr dials failed",ee.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=Rt([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return Ce(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:se(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new h("Tried to dial self",ee.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new h("The dial request is blocked by gater.allowDialPeer",ee.ERR_PEER_DIAL_INTERCEPTED);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.code!==ee.ERR_NOT_FOUND)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);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.code!==ee.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let d=await _8(u.multiaddr,{...n,log:this.log});return d.length===1&&d[0].equals(u.multiaddr)?u:d.map(y=>({multiaddr:y,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(u),isCertified:d.isCertified}:d)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let d=u.multiaddr.getPeerId();return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let u of i){let d=u.multiaddr.toString(),y=a.get(d);if(y!=null){y.isCertified=y.isCertified||u.isCertified||!1;continue}a.set(d,u)}let c=[...a.values()];if(c.length===0)throw new h("The dial request has no valid addresses",ee.ERR_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=l.sort(this.addressSorter);if(f.length===0)throw new h("The connection gater denied all addresses in the dial request",ee.ERR_NO_VALID_ADDRESSES);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}};var KV=50,Qi={minConnections:Kp,maxConnections:Mp,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},$p=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Qi.maxConnections;let n=t.minConnections??Qi.minConnections;if(this.maxConnections<n)throw new h("Connection Manager maxConnections must be greater than minConnections",ee.ERR_INVALID_PARAMETERS);this.connections=new Lt,this.started=!1,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.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>se(o)),this.deny=(t.deny??[]).map(o=>se(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Qi.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new bc({points:t.inboundConnectionThreshold??Qi.inboundConnectionThreshold,duration:1}),this.autoDial=new Fp({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Qi.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Qi.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Qi.autoDialMaxQueueLength}),this.connectionPruner=new Vp({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new Hp(e,{addressSorter:t.addressSorter??Kc,maxParallelDials:t.maxParallelDials??Up,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:Mc},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;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.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(t5)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}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}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}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.isStarted())throw new h("Not started",ee.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Lp(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??KV}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!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=>se(n))}))}};var Gp=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}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 h("No content routers available",ee.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new mt;for await(let s of Xt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new h("No content routers available",ee.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new h(Yo.NOT_STARTED_YET,ee.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new h(Yo.NOT_STARTED_YET,ee.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var Yp=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??[]}async findPeer(e,t){if(this.routers.length===0)throw new h("No peer routers available",ee.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new h("Should not try to find self",ee.ERR_FIND_SELF);let n=this,o=Xt(...this.routers.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}),s;throw new h(Yo.NOT_FOUND,ee.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new h("No peer routers available",ee.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new mt;for await(let s of Bo(async function*(){let i=Xt(...n.routers.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}),!o.has(s.id)&&(o.add(s.id),yield s))}};var A8=32,I8=64,Wp=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,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)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new h(`No handler registered for protocol ${e}`,ee.ERR_NO_HANDLER_FOR_PROTOCOL);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))throw new h(`Handler already registered for protocol ${e}`,ee.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=gc.bind({ignoreUndefined:!0})({maxInboundStreams:A8,maxOutboundStreams:I8},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new h("invalid topology",ee.ERR_INVALID_PARAMETERS);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))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==ee.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var zp=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=new Map,this.listeners=xn({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??zo.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new h("Transport must have a valid tag",ee.ERR_INVALID_KEY);if(this.transports.has(t))throw new h(`There is already a transport with the tag ${t}`,ee.ERR_DUPLICATE_TRANSPORT);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.transportForMultiaddr(e);if(n==null)throw new h(`No transport available for address ${String(e)}`,ee.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=ee.ERR_TRANSPORT_DIAL_FAILED),o}}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()}transportForMultiaddr(e){for(let t of this.transports.values())if(t.filter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new h("Not started",ee.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.filter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let f=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(f),f.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:f})}),f.addEventListener("close",()=>{let d=u.findIndex(y=>y===f);u.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:f})}),i.push(f.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==zo.NO_FATAL)throw new h(`Transport (${n}) could not listen on any available address`,ee.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===zo.FATAL_ALL)throw new h(n,ee.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${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)}};var qt="/multistream/1.0.0";var MV=x(`
|
|
48
|
-
`)
|
|
49
|
-
`),i=
|
|
50
|
-
`)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`),
|
|
54
|
-
`),
|
|
55
|
-
`)
|
|
56
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',
|
|
57
|
-
`)
|
|
58
|
-
`))),
|
|
59
|
-
`));t.log.trace('handle: respond with "%s" for %s',e,o),await Ji(n,s,t),t.log.trace('handle: responded with "%s" for %s',e,o);continue}t.log('handle: respond with "na" for "%s"',o),await Ji(n,x(`na
|
|
60
|
-
`),t),t.log('handle: responded with "na" for "%s"',o)}}var qV=500,T8=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[e5]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new h("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new h("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new h("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(qV);Ce(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function YA(r){return new T8(r)}var HV=3e4;function $V(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==ee.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return A8}function GV(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==ee.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??I8}function WA(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var jp=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e4,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new h(`The multiaddr connection is blocked by gater.${n}`,ee.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new h("connection denied",ee.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),f=()=>{e.abort(new h("inbound upgrade timeout",ao))};l.addEventListener("abort",f,{once:!0}),Ce(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new h("The multiaddr connection is blocked by gater.acceptConnection",ee.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the inbound connection"),u=await d.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let d={...u,...o};await this.shouldBlockConnection(s,d,"denyInboundEncryptedConnection")}else{let d=e.remoteAddr.getPeerId();if(d==null)throw new h("inbound connection that skipped encryption must have a peer id",ee.ERR_INVALID_MULTIADDR);let y=Ae(d);c="native",s=y}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let d=await this._multiplexInbound({...u,...o},this.muxers);a=d.muxerFactory,i=d.stream}}catch(d){throw e.log.error("failed to upgrade inbound connection",d),d}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",f),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=Ae(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let f=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(f=await u.protect(e))}try{if(s=f,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(f,o));let u={...f,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new h("Encryption was skipped but no peer id was passed",ee.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...f,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,f,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:p=>{u!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),{stream:g,protocol:b}=await Yu(p,m,{log:p.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",b);let E=$V(b,this.components.registrar);if(WA(b,"inbound",u)===E){let _=new h(`Too many inbound protocol streams for protocol "${b}" - limit ${E}`,ee.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw p.abort(_),_}p.source=g.source,p.sink=g.sink,p.protocol=b,g.closeWrite!=null&&(p.closeWrite=g.closeWrite),g.closeRead!=null&&(p.closeRead=g.closeRead),g.close!=null&&(p.close=g.close),await this.components.peerStore.merge(i,{protocols:[b]}),this.components.metrics?.trackProtocolStream(p,u),this._onStream({connection:u,stream:p,protocol:b})}).catch(async m=>{u.log.error("error handling incoming stream id %s",p.id,m.message,m.code,m.stack),p.timeline.close==null&&await p.close()})}}),f=async(p,m={})=>{if(l==null)throw new h("Stream is not multiplexed",ee.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",p);let g=await l.newStream();u.log.trace("started new stream %s for protocols %s",g.id,p);try{if(m.signal==null){g.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let I=AbortSignal.timeout(HV);Ce(1/0,I),m={...m,signal:I}}g.log.trace("selecting protocol from protocols %s",p);let{stream:b,protocol:E}=await Gu(g,p,{...m,log:g.log,yieldBytes:!0});g.log("selected protocol %s",E);let w=GV(E,this.components.registrar,m);if(WA(E,"outbound",u)>=w){let I=new h(`Too many outbound protocol streams for protocol "${E}" - limit ${w}`,ee.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw g.abort(I),I}return await this.components.peerStore.merge(i,{protocols:[E]}),g.source=b.source,g.sink=b.sink,g.protocol=E,b.closeWrite!=null&&(g.closeWrite=b.closeWrite),b.closeRead!=null&&(g.closeRead=b.closeRead),b.close!=null&&(g.close=b.close),this.components.metrics?.trackProtocolStream(g,u),g}catch(b){throw u.log.error("could not create new stream for protocols %s",p,b),g.timeline.close==null&&g.abort(b),b.code!=null?b:new h(String(b),ee.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(p=>{u.log.error("error piping data through muxer",p)}));let d=o.timeline;o.timeline=new Proxy(d,{set:(...p)=>(u!=null&&p[1]==="close"&&p[2]!=null&&d.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(m){u.log.error("error closing connection after timeline close",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(m=>{u.log.error("error thrown while dispatching connection:close event",m)}),Reflect.set(...p))}),o.timeline.upgraded=Date.now();let y=()=>{throw new h("connection is not multiplexed",ee.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=YA({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:f??y,getStreams:()=>l!=null?l.streams:[],close:async p=>{l!=null&&(u.log.trace("close muxer"),await l.close(p)),u.log.trace("close maconn"),await o.close(p),u.log.trace("closed maconn")},abort:p=>{o.abort(p),l?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new h("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await Yu(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new h(n.message,ee.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await Gu(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %p",t),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new h(o.message,ee.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await Gu(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new h(String(o),ee.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await Yu(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new h(String(o),ee.ERR_MUXER_UNAVAILABLE)}}};var D8=class extends Fe{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Fe,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new Ct(a.type,{detail:a.detail}));return c||l},Ce(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Qo(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=NA({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:xp,version:Ep},logger:this.logger,events:t,datastore:e.datastore??new gi,connectionGater:BA(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new Cp(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new jp(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new zp(this.components,e.transportManager)),this.configureComponent("connectionManager",new $p(this.components,e.connectionManager)),this.configureComponent("registrar",new Wp(this.components)),this.configureComponent("addressManager",new Np(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Yp(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Gp(this.components,{routers:i})),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[vn]!=null&&(this.log("registering service %s for content routing",a),i.push(l[vn])),l[_n]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[_n])),l[zs]!=null&&(this.log("registering service %s for peer discovery",a),l[zs].addEventListener?.("peer",f=>{this.#e(f)}))}}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")}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 mt;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 h("no protocols were provided to open a stream",ee.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new h("no protocols were provided to open a stream",ee.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){ns(e)&&(e=Ae(e.getPeerId()??"")),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 s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==ee.ERR_NOT_FOUND)throw s}let n=le([x("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return AA(o),await this.peerStore.patch(e,{publicKey:o}),o}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){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error(new Error(ee.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function zA(r={}){let e=r.peerId??=await Fd();if(e.privateKey==null)throw new h("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await IA(e.privateKey),new D8(await VA(r))}async function jA(r={}){let e=await zA(r);return r.start!==!1&&await e.start(),e}async function XA(r){let e=r.libp2p?.peerId,t=r.logger??Qo(),n=new qe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=Yh(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=vp(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await jA({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function YV(r={}){let e=r.datastore??new gi,t=r.blockstore??new Tl,n;WV(r.libp2p)?n=r.libp2p:n=await XA({...r,libp2p:{...r.libp2p,start:void 0},datastore:e});let o=new gd({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[o0(),n0()],routers:[ym(n)]});return r.start!==!1&&await o.start(),o}function WV(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return zu(zV);})();
|
|
41
|
+
`),r}var Kb=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),$b=r=>[...Array(r)].map(()=>Kb.at(Math.floor(Math.random()*Kb.length))).join("");var DN=1e4,xae=ne("webrtc-direct").code,Vb=ne("certhash").code,Nd=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw ew("WebRTCTransport.createListener")}filter(e){return e.filter(I9.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[en]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw fd("we need to have the remote's PeerId");let i=ge(s),a=u3(Cd(e)),c=await Vi.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:d3(a.name)}),l=new Vi({certificates:[c]});try{let d=new Promise((_,k)=>{let O=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let P=`Data channel was never opened: state: ${O.readyState}`;this.log.error(P),this.metrics?.dialerEvents.increment({open_error:!0}),k(Tp("data",P))},DN);O.onopen=P=>{clearTimeout(N),_(O)},O.onerror=P=>{clearTimeout(N);let Y=`Error opening a data channel for handshaking: ${P.target?.toString()??"not specified"}`;this.log.error(Y),this.metrics?.dialerEvents.increment({unknown_error:!0}),k(Tp("data",Y))}}),u="libp2p+webrtc+v1/"+$b(32),f=await l.createOffer(),m=Fb(f,u);await l.setLocalDescription(m);let h=Ub(e,u);await l.setRemoteDescription(h);let p=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),E=Ai({prologueBytes:w})(this.components),b=Fi({channel:p,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),S={...b,sink:b.sink.bind(b),source:async function*(){for await(let _ of b.source)for(let k of _)yield k}()},R=new Is(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),A=pc?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(A,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":R.close().catch(_=>{this.log.error("error closing connection",_)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let D=new Ds(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await E.secureInbound(y,S,i),await t.upgrader.upgradeOutbound(R,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw hc("no local certificate");let o=Mb(e,{log:this.log});if(o==null)throw hc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=L(s,"hex"),a=Hb.encode(i,t),c=l3.decode(Cd(n)),l=L("libp2p-webrtc-noise:");return _e([l,a,c])}};function qb(r){return e=>new Nd(e,r)}function Wb(r){return e=>new bd(e,r)}function zb(r){let e;try{e=ne("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function Gb(r){return r.some(([e,t])=>e===ne("tls").code)}function or(r,e,t){let n=Yb[ne(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${ne(r).name}`);let o=n(e,t);return r===ne("ip6").code?`[${o}]`:o}var Yb={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${or(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${or(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${or(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${or(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=Gb(e),n=zb(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=or(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return or(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return or(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=or(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=Gb(e),n=zb(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=or(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=or(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${or(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${or(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${or(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function Xb(r,e){let n=Q(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=ne(o[0]),i=Yb[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&o[0]===ne("tcp").code&&(a=a.replace("tcp://","http://"),(o[1]==="443"||o[1]==="80")&&(o[1]==="443"&&(a=a.replace("http://","https://")),a=a.substring(0,a.lastIndexOf(":")))),a}var Qb=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var jb=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await Qb(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var tE=ke(Jb(),1);function eE(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var rE=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=d=>{r.removeEventListener("open",c),r.removeEventListener("error",l),d()},c=()=>{a(s)},l=d=>{a(()=>{i(d.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new tE.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let f=null;typeof u.data=="string"&&(f=L(u.data)),eE(u.data)&&(f=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(f=u.data),f!=null&&i(f)},d=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",d),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",d),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield eE(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var nE=(r,e)=>{e=e??{};let t=rE(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:jb(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var oE=WebSocket;var kN={"http:":"ws:","https:":"wss:"},sE="ws:",iE=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??sE}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??sE,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(kN))t.protocol===n&&(t.protocol=o);return t};function aE(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=iE(r,t),o=new oE(n.toString(),e.websocket);return nE(o,e)}function cE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ti.matches(t)||xs.matches(t)})}function lE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return xs.matches(t)})}function uE(){throw new Error("WebSocket Servers can not be created in the browser!")}function dE(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new g("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var p3=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[en]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=dE(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new Dr;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=se(),s=aE(Xb(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new g(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new Dr),s.close().catch(d=>{this.log.error("error closing raw socket",d)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return uE({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):N1||O1?lE(e):cE(e)}};function fE(r={}){return e=>new p3(e,r)}async function m3(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=r.writable.getWriter(),c=r.readable.getReader();await a.ready;function l(){let h=n.findIndex(p=>p===m);h!==-1&&(n.splice(h,1),m.timeline.close=Date.now(),o?.(m))}let d=!1,u=!1;(async function(){let h=await a.closed.catch(p=>p);if(h!=null){let p=h.message;p.includes("aborted by the remote server")||p.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}d=!0,d&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await c.closed.catch(p=>p);h!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,d&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let f=!1,m={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){d||(a.abort(h).catch(p=>{i.error("could not abort stream",p)}),d=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),l()},async close(h){this.status="closing",await Promise.all([m.closeRead(h),m.closeWrite(h)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await c.cancel()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(d=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}d&&l()},async closeWrite(h){if(!d){d=!0,this.writeStatus="closing";try{await a.close()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&l()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let h=await c.read();if(h.done){u=!0,d&&l();return}yield new de(h.value)}}(),sink:async function(h){if(f)throw new Error("sink already called on stream");f=!0;try{this.writeStatus="writing";for await(let p of h)if(p instanceof Uint8Array)await a.write(p);else for(let y of p)await a.write(y);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await m.closeWrite()}},log:i};return m}function g3(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function hE(r,e){return e.filter(n=>!!r.find(o=>j(n,o))).length===e.length}var PN=Object.values(lr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function LN(r){return sr.decode(PN.decode(r))}function pE(r){if(!D1.matches(r))throw new g("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===ne("certhash").code).map(([i,a])=>LN(a??"")),n=e.filter(([i,a])=>i===ne("p2p").code).map(([i,a])=>ge(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var y3=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[en]=!0;async dial(e,t){t?.signal?.throwIfAborted(),this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:o,certhashes:s,remotePeer:i}=pE(e);if(i==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,l=()=>{},d=!1,u=!1,f=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let m=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(l=h=>{if(!d)try{this.metrics?.dialerEvents.increment({[h]:!0}),m.close()}catch(p){this.log.error("error closing wt session",p)}finally{c!=null&&(c.timeline.close=Date.now()),d=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),await Promise.race([m.closed,m.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),m.closed.catch(h=>{this.log.error("error on remote wt session close",h)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(m,n,i,s))throw new Error("Failed to authenticate webtransport");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("Closing webtransport"),l("close")},abort:h=>{this.log("aborting webtransport due to passed err",h),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...g3()},f=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(m),skipProtection:!0})}catch(m){throw this.log.error("caught wt session err",m),l(f?"upgrade_error":u?"noise_error":"ready_error"),m}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o){let s=await e.createBidirectionalStream(),i=s.writable.getWriter(),a=s.readable.getReader();await i.ready;let c={source:async function*(){for(;;){let u=await a.read();if(u.value!=null&&(yield u.value),u.done)break}}(),sink:async function(u){for await(let f of u)f instanceof Uint8Array?await i.write(f):await i.write(f.subarray())}},l=Ai()(this.components),{remoteExtensions:d}=await l.secureOutbound(t,c,n);if(i.close().catch(u=>{this.log.error(`Failed to close authentication stream writer: ${u.message}`)}),a.cancel().catch(u=>{this.log.error(`Failed to close authentication stream reader: ${u.message}`)}),!hE(d?.webtransportCerthashes??[],o.map(u=>u.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e){let t=0,n=this.config,o=this;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let i=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:l,value:d}=await c.read();if(l)break;if(i.length>=n.maxInboundStreams)d.writable.close().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),d.readable.cancel().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await m3(d,String(t++),"inbound",i,s?.onStreamEnd,o.components.logger);i.push(u),s?.onIncomingStream?.(u)}}}().catch(()=>{this.log.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:i,newStream:async c=>{let l=await e.createBidirectionalStream(),d=await m3(l,String(t++),s?.direction??"outbound",i,s?.onStreamEnd,o.components.logger);return i.push(d),d},close:async c=>{this.log("Closing webtransport muxer"),await Promise.all(i.map(async l=>l.close(c)))},abort:c=>{this.log("Aborting webtransport muxer with err:",c);for(let l of i)l.abort(c)},...g3()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(D1.exactMatch)}};function mE(r={}){return e=>new y3(e,r)}var w3=ke(mu(),1);function gE(r,e){let t=e.map((n,o)=>({record:an(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===Vt.ValidityType.EOL&&o.record.validityType===Vt.ValidityType.EOL){let a=w3.default.fromString(n.record.validity).toDate(),c=w3.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var Ld="1.2.1",Bd="libp2p";var wE="4.0.1-8a5bc6f",bE="helia";var EE={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Md(r={}){return{peerId:r.peerId,addresses:{listen:["/webrtc"]},transports:[W2({discoverRelays:1}),Wb(),qb(),mE(),fE()],connectionEncryption:[Ai()],streamMuxers:[Fg(),Xy()],peerDiscovery:[n9(EE)],services:{autoNAT:Wg(),dcutr:N9(),delegatedRouting:()=>_7("https://delegated-ipfs.dev"),dht:vy({clientMode:!0,validators:{ipns:Cu},selectors:{ipns:gE}}),identify:W9({agentVersion:`${bE}/${wE} ${Bd}/${Ld} UserAgent=${globalThis.navigator.userAgent}`}),keychain:cd(r.keychain),ping:Jy()}}}var _t={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var Qi;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=ee((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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>J(i,o.codec()),o.decode=i=>Z(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=ee((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),Fd.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=Fd.codec().decode(i,i.uint32());break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>J(i,o.codec()),o.decode=i=>Z(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=ee((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Ud.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(Ud.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>J(o,r.codec()),r.decode=o=>Z(o,r.codec())})(Qi||(Qi={}));var Ud;(function(r){let e;r.codec=()=>(e==null&&(e=ee((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)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Ud||(Ud={}));var Fd;(function(r){let e;r.codec=()=>(e==null&&(e=ee((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)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>J(t,r.codec()),r.decode=t=>Z(t,r.codec())})(Fd||(Fd={}));function ji(r,e){let t=Qi.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=G8({...r,publicKey:r.publicKey}));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:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:Q(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var b3="/peers/";function Zi(r){if(!Fs(r)||r.type==null)throw new g("Invalid PeerId",_t.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Oe(`${b3}${e}`)}async function xE(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=Q(o.multiaddr)),!oo(o.multiaddr))throw new g("Multiaddr was invalid",_t.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function Kd(r,e,t,n){if(e==null)throw new g("Invalid PeerData",_t.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!j(e.publicKey,r.publicKey))throw new g("publicKey bytes do not match peer id publicKey bytes",_t.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new g("peer id did not match existing peer id",_t.ERR_INVALID_PARAMETERS);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(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Vd(u,{validate:vE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Vd(u,{validate:_E,map:SE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[f,m]of u)m==null?a.delete(f):a.set(f,m);a=Vd([...a.entries()],{validate:vE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),f=new Map(c);for(let[m,h]of u)h==null?f.delete(m):f.set(m,h);c=Vd([...f.entries()],{validate:_E,map:SE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await xE(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,f)=>u.localeCompare(f)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function Vd(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 vE(r,e){if(typeof r!="string")throw new g("Metadata key must be a string",_t.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new g("Metadata value must be a Uint8Array",_t.ERR_INVALID_PARAMETERS)}function _E(r,e){if(typeof r!="string")throw new g("Tag name must be a string",_t.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new g("Tag value must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new g("Tag value must be between 0-100",_t.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new g("Tag ttl must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new g("Tag ttl must be between greater than 0",_t.ERR_INVALID_PARAMETERS)}}function SE(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function $d(r,e,t){let n=r.toString().split("/")[2],o=st.decode(n),s=Ye(o),i=t.get(s);if(i!=null)return i;let a=ji(s,e);return t.set(s,a),a}function BN(r,e){return r==null?{}:{prefix:b3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t($d(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t($d(n.key,n.value,e),$d(o.key,o.value,e)))}}var Hd=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=Ha({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Zi(e))}async delete(e){if(this.peerId.equals(e))throw new g("Cannot delete self peer",_t.ERR_INVALID_PARAMETERS);await this.datastore.delete(Zi(e))}async load(e){let t=await this.datastore.get(Zi(e));return ji(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Kd(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Kd(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Kd(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new wt;for await(let{key:n,value:o}of this.datastore.query(BN(e??{},t))){let s=$d(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Zi(e)),n=ji(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=Qi.encode(t);return n!=null&&j(s,n)?{peer:ji(e,s),previous:o,updated:!1}:(await this.datastore.put(Zi(e),s),{peer:ji(e,s),previous:o,updated:!0})}};var qd=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 Hd(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await $a(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await Gr.openAndCertify(e,tr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=tr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await Gr.createFromProtobuf(s.peerRecordEnvelope),a=tr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!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 RE(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var MN=r=>r;function E3(r,e){let t=r.getPeerId();return t!=null&&ge(t).equals(e)&&(r=r.decapsulate(Q(`/p2p/${e.toString()}`))),r}var Wd=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??MN,this._updatePeerStoreAddresses=RE(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>Q(t))).map(t=>t.getPeerId()===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=>Q(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>Q(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>Q(e))}addObservedAddr(e){e=E3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=E3(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=E3(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>Q(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var x3=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=Zn())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Tc(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")}},UN=["metrics","connectionProtector"],FN=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function AE(r={}){let e=new x3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!FN.includes(o)){let i=e.components[o];if(i==null&&!UN.includes(o))throw new g(`${o} not set`,"ERR_SERVICE_MISSING");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 IE(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!vr(`${t[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}}function v3(r){try{let{address:e}=r.nodeAddress();return!!vr(e)}catch{return!0}}function VN(r,e){let t=v3(r.multiaddr),n=v3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function KN(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function $N(r,e){let t=tc.exactMatch(r.multiaddr),n=tc.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Ji(r,e){let t=VN(r,e);if(t!==0)return t;let n=$N(r,e);return n!==0?n:KN(r,e)}var S3=ke(Df(),1),R3=ke(kE(),1);function zd(r,e,t){return`${r}?name=${e}&type=${t}`}async function CE(r,e){return await(await fetch(r,{headers:new Headers({accept:"application/dns-json"}),signal:e})).json()}function Cs(r,e){return`${e}_${r}`}var _3=Object.assign((0,S3.default)("dns-over-http-resolver"),{error:(0,S3.default)("dns-over-http-resolver:error")}),A3=class{_cache;_TXTcache;_servers;_request;_abortControllers;constructor(e={}){this._cache=new R3.default({max:e?.maxCache??100}),this._TXTcache=new R3.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??CE,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>{e.abort()})}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*t),o=e[t];e[t]=e[n],e[n]=o}return e}setServers(e){this._servers=e}async resolve(e,t="A"){switch(t){case"A":return this.resolve4(e);case"AAAA":return this.resolve6(e);case"TXT":return this.resolveTxt(e);default:throw new Error(`${t} is not supported`)}}async resolve4(e){let t="A",n=this._cache.get(Cs(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(zd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Cs(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),_3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolve6(e){let t="AAAA",n=this._cache.get(Cs(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(zd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Cs(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),_3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolveTxt(e){let t="TXT",n=this._TXTcache.get(Cs(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(zd(s,e,t),i.signal),c=a.Answer.map(d=>[d.data.replace(/['"]+/g,"")]),l=Math.min(...a.Answer.map(d=>d.TTL));return this._TXTcache.set(Cs(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),_3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},NE=A3;var OE=NE;var{code:GN}=ne("dnsaddr");async function ea(r,e={}){let t=new OE;e.signal!=null&&e.signal.addEventListener("abort",()=>{t.cancel()});let n=r.getPeerId(),[,o]=r.stringTuples().find(([a])=>a===GN)??[];if(o==null)throw new Error("No hostname found in multiaddr");let i=(await t.resolveTxt(`_dnsaddr.${o}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(i=i.filter(a=>a.includes(n))),i}var Gn;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Gn||(Gn={}));var z;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(z||(z={}));var YN={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:ea},addressSorter:Ji},transportManager:{faultTolerance:Xn.FATAL_ALL}};async function PE(r){let e=Mi(YN,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new g(Gn.ERR_PROTECTOR_REQUIRED,z.ERR_PROTECTOR_REQUIRED);if(!(await ut(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new g("Private key doesn't match peer id",z.ERR_INVALID_KEY);return e}function Gd(r){if(Fs(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:ge(t),r.forEach(n=>{if(!oo(n))throw new g("Invalid Multiaddr",z.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}else{let s=ge(o);if(e==null||!e.equals(s))throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var Yd="last-dial-failure";var Xd=5,Qd=100,jd=50,LE=1e3*60*7;var Ns={minConnections:Xd,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:LE,autoDialDiscoveredPeersDebounce:10},Zd=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Ns.minConnections,this.autoDialPriority=t.autoDialPriority??Ns.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ns.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ns.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ns.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ns.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new No({concurrency:t.autoDialConcurrency??Ns.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new Je(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new wt;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((d,u)=>d+u.value,0));let c=s.sort((l,d)=>{let u=i.get(l.id)??0,f=i.get(d.id)??0;return u>f?-1:u<f?1:0}).filter(l=>{let d=l.metadata.get(Yd);if(d==null)return!0;let u=parseInt(B(d));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let d=this.connectionManager.getConnectionsMap().size;if(d>=this.minConnections){this.log("got enough connections now %d/%d",d,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(d=>{this.log.error("could not connect to peerStore stored peer",d)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var BE={maxConnections:Qd,allow:[]},Jd=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??BE.maxConnections,this.allow=t.allow??BE.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new wt;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((d,u)=>d+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,d=o.get(c.remotePeer)??0;if(l>d)return 1;if(l<d)return-1;let u=a.timeline.open,f=c.timeline.open;return u<f?1:u>f?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function k3(r,e){if(!r.protoNames().includes("dnsaddr"))return[r];let n=await jN(r,e),i=(await Promise.all(n.map(async a=>k3(a,e)))).flat().reduce((a,c)=>(a.find(l=>l.equals(c))==null&&a.push(c),a),[]);return e.log("resolved %s to",r,i.map(a=>a.toString())),i}async function jN(r,e){try{return r=Q(r.toString()),await r.resolve(e)}catch(t){return e.log.error(`multiaddr ${r.toString()} could not be resolved`,t),[]}}var ef={addressSorter:Ji,maxParallelDials:jd,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:ea}},tf=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??ef.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??ef.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??ef.dialTimeout,this.connections=t.connections??new wt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))ll.set(n,o);this.queue=new Fn({concurrency:t.maxParallelDials??ef.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Gd(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),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 i.join(t)}return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:d})=>d.toString()).forEach(d=>{a?.multiaddrs.add(d)})}catch(d){throw c.clear(),d}try{let d=0,u=[];for(let f of l){if(d===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",d,n),new g("Peer had more than maxPeerAddrsToDial",z.ERR_TOO_MANY_ADDRESSES);d++;try{let m=await this.components.transportManager.dial(f.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",f.multiaddr),m}catch(m){if(this.log.error("dial failed to %a",f.multiaddr,m),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Yd]:L(Date.now().toString())}})}catch(h){this.log.error("could not update last dial failure key for %p",n,h)}if(c.aborted)throw new g(m.message,gn);u.push(m)}}throw u.length===1?u[0]:new Dc(u,"All multiaddr dials failed",z.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=ct([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return ve(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:Q(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new g("Tried to dial self",z.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new g("The dial request is blocked by gater.allowDialPeer",z.ERR_PEER_DIAL_INTERCEPTED);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:f})=>f.toString()))}catch(u){if(u.code!==z.ERR_NOT_FOUND)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);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(u){u.code!==z.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let f=await k3(u.multiaddr,{...n,log:this.log});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(m=>({multiaddr:m,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.protos().pop()?.path===!0?f:f.multiaddr.getPeerId()==null?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getPeerId();return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),m=a.get(f);if(m!=null){m.isCertified=m.isCertified||u.isCertified||!1;continue}a.set(f,u)}let c=[...a.values()];if(c.length===0)throw new g("The dial request has no valid addresses",z.ERR_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 d=l.sort(this.addressSorter);if(d.length===0)throw new g("The connection gater denied all addresses in the dial request",z.ERR_NO_VALID_ADDRESSES);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",d.map(({multiaddr:u})=>u.toString())),d}};var eO=50,Os={minConnections:Xd,maxConnections:Qd,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},rf=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Os.maxConnections;let n=t.minConnections??Os.minConnections;if(this.maxConnections<n)throw new g("Connection Manager maxConnections must be greater than minConnections",z.ERR_INVALID_PARAMETERS);this.connections=new wt,this.started=!1,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.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>Q(o)),this.deny=(t.deny??[]).map(o=>Q(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Os.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Ui({points:t.inboundConnectionThreshold??Os.inboundConnectionThreshold,duration:1}),this.autoDial=new Zd({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Os.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Os.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Os.autoDialMaxQueueLength}),this.connectionPruner=new Jd({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new tf(e,{addressSorter:t.addressSorter??Ji,maxParallelDials:t.maxParallelDials??jd,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:ea},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;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.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(c4)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}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}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}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.isStarted())throw new g("Not started",z.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Gd(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??eO}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!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=>Q(n))}))}};var nf=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}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 g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Je;for await(let s of Nt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new g(Gn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new g(Gn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var of=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??[]}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new g("Should not try to find self",z.ERR_FIND_SELF);let n=this,o=Nt(...this.routers.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}),s;throw new g(Gn.NOT_FOUND,z.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Je;for await(let s of $n(async function*(){let i=Nt(...n.routers.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}),!o.has(s.id)&&(o.add(s.id),yield s))}};var O3=32,P3=64,sf=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,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)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new g(`No handler registered for protocol ${e}`,z.ERR_NO_HANDLER_FOR_PROTOCOL);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))throw new g(`Handler already registered for protocol ${e}`,z.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=Mi.bind({ignoreUndefined:!0})({maxInboundStreams:O3,maxOutboundStreams:P3},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new g("invalid topology",z.ERR_INVALID_PARAMETERS);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))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==z.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var af=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=new Map,this.listeners=jr({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Xn.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new g("Transport must have a valid tag",z.ERR_INVALID_KEY);if(this.transports.has(t))throw new g(`There is already a transport with the tag ${t}`,z.ERR_DUPLICATE_TRANSPORT);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.transportForMultiaddr(e);if(n==null)throw new g(`No transport available for address ${String(e)}`,z.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=z.ERR_TRANSPORT_DIAL_FAILED),o}}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()}transportForMultiaddr(e){for(let t of this.transports.values())if(t.filter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new g("Not started",z.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.filter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let d=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(d),d.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:d})}),d.addEventListener("close",()=>{let f=u.findIndex(m=>m===d);u.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:d})}),i.push(d.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==Xn.NO_FATAL)throw new g(`Transport (${n}) could not listen on any available address`,z.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===Xn.FATAL_ALL)throw new g(n,z.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${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)}};var St="/multistream/1.0.0";var tO=L(`
|
|
42
|
+
`);async function Ps(r,e,t){await r.write(e,t)}async function ME(r,e,t){await r.writeV(e,t)}async function rO(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==tO[0])throw e.log.error("Invalid mss message - missing newline",t),new g("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function Vo(r,e){let t=await rO(r,e);return B(t.subarray())}async function _c(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return nO(r,e[0],t);let n=cn(r,{...t,maxDataLength:1024}),o=e.shift();if(o==null)throw new Error("At least one protocol must be specified");t.log.trace('select: write ["%s", "%s"]',St,o);let s=L(`${St}
|
|
43
|
+
`),i=L(`${o}
|
|
44
|
+
`);await ME(n,[s,i],t),t.log.trace("select: reading multistream-select header");let a=await Vo(n,t);if(t.log.trace('select: read "%s"',a),a===St&&(t.log.trace("select: reading protocol response"),a=await Vo(n,t),t.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of e){t.log.trace('select: write "%s"',c),await Ps(n,L(`${c}
|
|
45
|
+
`),t),t.log.trace("select: reading protocol response");let l=await Vo(n,t);if(t.log.trace('select: read "%s" for "%s"',l,c),l===c)return{stream:n.unwrap(),protocol:c}}throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function nO(r,e,t){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=se(),c=!1,l=!1,d=se(),u=!1,f=!1,m=se(),h=cn({sink:n,source:o},{...t,maxDataLength:1024});r.sink=async E=>{let{sink:b}=h.unwrap();await b(async function*(){let S=!1;for await(let R of E){if(l&&await d.promise,c)yield R;else{l=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',St,e,R.byteLength);let A=`${e}
|
|
46
|
+
`;yield new de(Uint8Array.from([19]),L(`${St}
|
|
47
|
+
`),ze(A.length),L(A),R).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',St,e,R.byteLength),c=!0,l=!1,d.resolve(),p().catch(D=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,D)})}S=!0}S||await p()}())};async function p(){if(i){t.log.trace("optimistic: already negotiating %s stream",e),await a.promise;return}i=!0;try{c||(t.log.trace("optimistic: doing send protocol for %s stream",e),await y()),u||(t.log.trace("optimistic: doing read protocol for %s stream",e),await w())}finally{i=!1,s=!0,a.resolve()}}async function y(){if(l){await d.promise;return}l=!0;try{t.log.trace('optimistic: write ["%s", "%s", data] in source',St,e),await h.writeV([L(`${St}
|
|
48
|
+
`),L(`${e}
|
|
49
|
+
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',St,e)}finally{c=!0,l=!1,d.resolve()}}async function w(){if(f){await m.promise;return}f=!0;try{t.log.trace("optimistic: reading multistream select header");let E=await Vo(h,t);if(t.log.trace('optimistic: read multistream select header "%s"',E),E===St&&(E=await Vo(h,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',E,e),E!==e)throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{u=!0,f=!1,m.resolve()}}if(r.source=async function*(){await p(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*h.unwrap().source}(),r.closeRead!=null){let E=r.closeRead.bind(r);r.closeRead=async b=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close read",S)}),await E(b)}}if(r.closeWrite!=null){let E=r.closeWrite.bind(r);r.closeWrite=async b=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close write",S)}),await E(b)}}if(r.close!=null){let E=r.close.bind(r);r.close=async b=>{let S=[];l&&S.push(d.promise),f&&S.push(m.promise),S.length>0?await $t(Promise.all(S),b?.signal):(s=!0,i=!1,a.resolve()),await E(b)}}return{stream:r,protocol:e}}async function Sc(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=cn(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let o=await Vo(n,t);if(t.log.trace('handle: read "%s"',o),o===St){t.log.trace('handle: respond with "%s" for "%s"',St,o),await Ps(n,L(`${St}
|
|
50
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',St,o);continue}if(e.includes(o))return t.log.trace('handle: respond with "%s" for "%s"',o,o),await Ps(n,L(`${o}
|
|
51
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new de(...e.map(i=>Bt.single(L(`${i}
|
|
52
|
+
`))),L(`
|
|
53
|
+
`));t.log.trace('handle: respond with "%s" for %s',e,o),await Ps(n,s,t),t.log.trace('handle: responded with "%s" for %s',e,o);continue}t.log('handle: respond with "na" for "%s"',o),await Ps(n,L(`na
|
|
54
|
+
`),t),t.log('handle: responded with "na" for "%s"',o)}}var sO=500,B3=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[a4]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new g("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new g("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(sO);ve(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function FE(r){return new B3(r)}var iO=3e4;function aO(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return O3}function cO(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??P3}function VE(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var cf=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e4,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new g(`The multiaddr connection is blocked by gater.${n}`,z.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new g("connection denied",z.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),d=()=>{e.abort(new g("inbound upgrade timeout",gn))};l.addEventListener("abort",d,{once:!0}),ve(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new g("The multiaddr connection is blocked by gater.acceptConnection",z.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(e.log("protecting the inbound connection"),u=await f.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let f={...u,...o};await this.shouldBlockConnection(s,f,"denyInboundEncryptedConnection")}else{let f=e.remoteAddr.getPeerId();if(f==null)throw new g("inbound connection that skipped encryption must have a peer id",z.ERR_INVALID_MULTIADDR);let m=ge(f);c="native",s=m}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let f=await this._multiplexInbound({...u,...o},this.muxers);a=f.muxerFactory,i=f.stream}}catch(f){throw e.log.error("failed to upgrade inbound connection",f),f}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",d),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=ge(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let d=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(d=await u.protect(e))}try{if(s=d,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(d,o));let u={...d,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new g("Encryption was skipped but no peer id was passed",z.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...d,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,d,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:h=>{u!=null&&Promise.resolve().then(async()=>{let p=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await Sc(h,p,{log:h.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let E=aO(w,this.components.registrar);if(VE(w,"inbound",u)===E){let S=new g(`Too many inbound protocol streams for protocol "${w}" - limit ${E}`,z.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw h.abort(S),S}h.source=y.source,h.sink=y.sink,h.protocol=w,y.closeWrite!=null&&(h.closeWrite=y.closeWrite),y.closeRead!=null&&(h.closeRead=y.closeRead),y.close!=null&&(h.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(h,u),this._onStream({connection:u,stream:h,protocol:w})}).catch(async p=>{u.log.error("error handling incoming stream id %s",h.id,p.message,p.code,p.stack),h.timeline.close==null&&await h.close()})}}),d=async(h,p={})=>{if(l==null)throw new g("Stream is not multiplexed",z.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",h);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,h);try{if(p.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let R=AbortSignal.timeout(iO);ve(1/0,R),p={...p,signal:R}}y.log.trace("selecting protocol from protocols %s",h);let{stream:w,protocol:E}=await _c(y,h,{...p,log:y.log,yieldBytes:!0});y.log("selected protocol %s",E);let b=cO(E,this.components.registrar,p);if(VE(E,"outbound",u)>=b){let R=new g(`Too many outbound protocol streams for protocol "${E}" - limit ${b}`,z.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(R),R}return await this.components.peerStore.merge(i,{protocols:[E]}),y.source=w.source,y.sink=w.sink,y.protocol=E,w.closeWrite!=null&&(y.closeWrite=w.closeWrite),w.closeRead!=null&&(y.closeRead=w.closeRead),w.close!=null&&(y.close=w.close),this.components.metrics?.trackProtocolStream(y,u),y}catch(w){throw u.log.error("could not create new stream for protocols %s",h,w),y.timeline.close==null&&y.abort(w),w.code!=null?w:new g(String(w),z.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(h=>{u.log.error("error piping data through muxer",h)}));let f=o.timeline;o.timeline=new Proxy(f,{set:(...h)=>(u!=null&&h[1]==="close"&&h[2]!=null&&f.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(p){u.log.error("error closing connection after timeline close",p)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(p=>{u.log.error("error thrown while dispatching connection:close event",p)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let m=()=>{throw new g("connection is not multiplexed",z.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=FE({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:d??m,getStreams:()=>l!=null?l.streams:[],close:async h=>{l!=null&&(u.log.trace("close muxer"),await l.close(h)),u.log.trace("close maconn"),await o.close(h),u.log.trace("closed maconn")},abort:h=>{o.abort(h),l?.abort(h)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await Sc(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new g(n.message,z.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await _c(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %p",t),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new g(o.message,z.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await _c(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await Sc(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}};var M3=class extends Ce{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Ce,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new mt(a.type,{detail:a.detail}));return c||l},ve(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Zn(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=AE({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:Bd,version:Ld},logger:this.logger,events:t,datastore:e.datastore??new gs,connectionGater:IE(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new qd(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new cf(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new af(this.components,e.transportManager)),this.configureComponent("connectionManager",new rf(this.components,e.connectionManager)),this.configureComponent("registrar",new sf(this.components)),this.configureComponent("addressManager",new Wd(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new of(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new nf(this.components,{routers:i})),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[Zr]!=null&&(this.log("registering service %s for content routing",a),i.push(l[Zr])),l[Jr]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[Jr])),l[qo]!=null&&(this.log("registering service %s for peer discovery",a),l[qo].addEventListener?.("peer",d=>{this.#e(d)}))}}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")}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 Je;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 g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){oo(e)&&(e=ge(e.getPeerId()??"")),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 s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==z.ERR_NOT_FOUND)throw s}let n=_e([L("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return Kr(o),await this.peerStore.patch(e,{publicKey:o}),o}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){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error(new Error(z.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function KE(r={}){let e=r.peerId??=await h1();if(e.privateKey==null)throw new g("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await mr(e.privateKey),new M3(await PE(r))}async function $E(r={}){let e=await KE(r);return r.start!==!1&&await e.start(),e}async function HE(r){let e=r.libp2p?.peerId,t=r.logger??Zn(),n=new Oe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=cd(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=Md(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await $E({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function lO(r={}){let e=r.datastore??new gs,t=r.blockstore??new Va,n;uO(r.libp2p)?n=r.libp2p:n=await HE({...r,libp2p:{...r.libp2p,start:void 0},datastore:e});let o=new Xu({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[bh(),wh()],routers:[F0(n)]});return r.start!==!1&&await o.start(),o}function uO(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Ac(dO);})();
|
|
61
55
|
/*! Bundled license information:
|
|
62
56
|
|
|
63
57
|
pvtsutils/build/index.js:
|