@libp2p/multistream-select 4.0.6 → 4.0.7-273d8177c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)
2
2
  [![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)
3
3
  [![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)
4
- [![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)
4
+ [![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=main\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amain)
5
5
 
6
6
  > JavaScript implementation of multistream-select
7
7
 
package/dist/index.min.js CHANGED
@@ -1,4 +1,16 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PMultistreamSelect = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PMultistreamSelect=(()=>{var or=Object.create;var be=Object.defineProperty;var sr=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames;var ar=Object.getPrototypeOf,cr=Object.prototype.hasOwnProperty;var ge=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),S=(r,t)=>{for(var e in t)be(r,e,{get:t[e],enumerable:!0})},ct=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ir(t))!cr.call(r,o)&&o!==e&&be(r,o,{get:()=>t[o],enumerable:!(n=sr(t,o))||n.enumerable});return r};var ut=(r,t,e)=>(e=r!=null?or(ar(r)):{},ct(t||!r||!r.__esModule?be(e,"default",{value:r,enumerable:!0}):e,r)),ur=r=>ct(be({},"__esModule",{value:!0}),r);var lt=ge((ro,ft)=>{var Y=1e3,W=Y*60,Z=W*60,G=Z*24,fr=G*7,lr=G*365.25;ft.exports=function(r,t){t=t||{};var e=typeof r;if(e==="string"&&r.length>0)return hr(r);if(e==="number"&&isFinite(r))return t.long?pr(r):dr(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function hr(r){if(r=String(r),!(r.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(t){var e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*lr;case"weeks":case"week":case"w":return e*fr;case"days":case"day":case"d":return e*G;case"hours":case"hour":case"hrs":case"hr":case"h":return e*Z;case"minutes":case"minute":case"mins":case"min":case"m":return e*W;case"seconds":case"second":case"secs":case"sec":case"s":return e*Y;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function dr(r){var t=Math.abs(r);return t>=G?Math.round(r/G)+"d":t>=Z?Math.round(r/Z)+"h":t>=W?Math.round(r/W)+"m":t>=Y?Math.round(r/Y)+"s":r+"ms"}function pr(r){var t=Math.abs(r);return t>=G?we(r,t,G,"day"):t>=Z?we(r,t,Z,"hour"):t>=W?we(r,t,W,"minute"):t>=Y?we(r,t,Y,"second"):r+" ms"}function we(r,t,e,n){var o=t>=e*1.5;return Math.round(r/e)+" "+n+(o?"s":"")}});var dt=ge((no,ht)=>{function mr(r){e.debug=e,e.default=e,e.coerce=h,e.disable=s,e.enable=o,e.enabled=i,e.humanize=lt(),e.destroy=d,Object.keys(r).forEach(u=>{e[u]=r[u]}),e.names=[],e.skips=[],e.formatters={};function t(u){let c=0;for(let l=0;l<u.length;l++)c=(c<<5)-c+u.charCodeAt(l),c|=0;return e.colors[Math.abs(c)%e.colors.length]}e.selectColor=t;function e(u){let c,l=null,L,m;function p(...f){if(!p.enabled)return;let g=p,y=Number(new Date),x=y-(c||y);g.diff=x,g.prev=c,g.curr=y,c=y,f[0]=e.coerce(f[0]),typeof f[0]!="string"&&f.unshift("%O");let C=0;f[0]=f[0].replace(/%([a-zA-Z%])/g,(O,v)=>{if(O==="%%")return"%";C++;let I=e.formatters[v];if(typeof I=="function"){let Q=f[C];O=I.call(g,Q),f.splice(C,1),C--}return O}),e.formatArgs.call(g,f),(g.log||e.log).apply(g,f)}return p.namespace=u,p.useColors=e.useColors(),p.color=e.selectColor(u),p.extend=n,p.destroy=e.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>l!==null?l:(L!==e.namespaces&&(L=e.namespaces,m=e.enabled(u)),m),set:f=>{l=f}}),typeof e.init=="function"&&e.init(p),p}function n(u,c){let l=e(this.namespace+(typeof c>"u"?":":c)+u);return l.log=this.log,l}function o(u){e.save(u),e.namespaces=u,e.names=[],e.skips=[];let c,l=(typeof u=="string"?u:"").split(/[\s,]+/),L=l.length;for(c=0;c<L;c++)l[c]&&(u=l[c].replace(/\*/g,".*?"),u[0]==="-"?e.skips.push(new RegExp("^"+u.slice(1)+"$")):e.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...e.names.map(a),...e.skips.map(a).map(c=>"-"+c)].join(",");return e.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let c,l;for(c=0,l=e.skips.length;c<l;c++)if(e.skips[c].test(u))return!1;for(c=0,l=e.names.length;c<l;c++)if(e.names[c].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function h(u){return u instanceof Error?u.stack||u.message:u}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.enable(e.load()),e}ht.exports=mr});var pt=ge((U,ye)=>{U.formatArgs=gr;U.save=wr;U.load=yr;U.useColors=br;U.storage=xr();U.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`."))}})();U.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 br(){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 gr(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+ye.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}U.log=console.debug||console.log||(()=>{});function wr(r){try{r?U.storage.setItem("debug",r):U.storage.removeItem("debug")}catch{}}function yr(){let r;try{r=U.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function xr(){try{return localStorage}catch{}}ye.exports=dt()(U);var{formatters:Cr}=ye.exports;Cr.j=function(r){try{return JSON.stringify(r)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var Xt=ge((ks,Ht)=>{"use strict";function qt(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function Gn(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return qt(r,e)}catch{e.message=r.message,e.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),qt(new o,e)}}Ht.exports=Gn});var Wn={};S(Wn,{PROTOCOL_ID:()=>R,handle:()=>nr,lazySelect:()=>rr,select:()=>tr});var R="/multistream/1.0.0";var B=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var D=ut(pt(),1);var ke={};S(ke,{base32:()=>V,base32hex:()=>Tr,base32hexpad:()=>Ir,base32hexpadupper:()=>Rr,base32hexupper:()=>Or,base32pad:()=>Ur,base32padupper:()=>Dr,base32upper:()=>Sr,base32z:()=>Nr});function Er(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,h=r.charAt(0),d=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function c(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 p=0,f=0,g=0,y=m.length;g!==y&&m[g]===0;)g++,p++;for(var x=(y-g)*u+1>>>0,C=new Uint8Array(x);g!==y;){for(var F=m[g],O=0,v=x-1;(F!==0||O<f)&&v!==-1;v--,O++)F+=256*C[v]>>>0,C[v]=F%a>>>0,F=F/a>>>0;if(F!==0)throw new Error("Non-zero carry");f=O,g++}for(var I=x-f;I!==x&&C[I]===0;)I++;for(var Q=h.repeat(p);I<x;++I)Q+=r.charAt(C[I]);return Q}function l(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var p=0;if(m[p]!==" "){for(var f=0,g=0;m[p]===h;)f++,p++;for(var y=(m.length-p)*d+1>>>0,x=new Uint8Array(y);m[p];){var C=e[m.charCodeAt(p)];if(C===255)return;for(var F=0,O=y-1;(C!==0||F<g)&&O!==-1;O--,F++)C+=a*x[O]>>>0,x[O]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");g=F,p++}if(m[p]!==" "){for(var v=y-g;v!==y&&x[v]===0;)v++;for(var I=new Uint8Array(f+(y-v)),Q=f;v!==y;)I[Q++]=x[v++];return I}}}function L(m){var p=l(m);if(p)return p;throw new Error(`Non-${t} character`)}return{encode:c,decodeUnsafe:l,decode:L}}var Ar=Er,Lr=Ar,mt=Lr;var so=new Uint8Array(0);var bt=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},M=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")};var gt=r=>new TextEncoder().encode(r),wt=r=>new TextDecoder().decode(r);var Oe=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Ie=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return xt(this,t)}},Re=class{constructor(t){this.decoders=t}or(t){return xt(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},xt=(r,t)=>new Re({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),Ne=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new Oe(t,e,n),this.decoder=new Ie(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},ee=({name:r,prefix:t,encode:e,decode:n})=>new Ne(r,t,e,n),_=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=mt(e,t);return ee({prefix:r,name:t,encode:n,decode:s=>M(o(s))})},Fr=(r,t,e,n)=>{let o={};for(let u=0;u<t.length;++u)o[t[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*e/8|0),a=0,h=0,d=0;for(let u=0;u<s;++u){let c=o[r[u]];if(c===void 0)throw new SyntaxError(`Non-${n} character`);h=h<<e|c,a+=e,a>=8&&(a-=8,i[d++]=255&h>>a)}if(a>=e||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return i},vr=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let h=0;h<r.length;++h)for(a=a<<8|r[h],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i&&(s+=t[o&a<<e-i]),n)for(;s.length*e&7;)s+="=";return s},w=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>ee({prefix:t,name:r,encode(o){return vr(o,n,e)},decode(o){return Fr(o,n,e,r)}});var V=w({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Sr=w({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ur=w({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Dr=w({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Tr=w({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Or=w({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Ir=w({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Rr=w({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Nr=w({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Me={};S(Me,{base58btc:()=>N,base58flickr:()=>kr});var N=_({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),kr=_({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Be={};S(Be,{base64:()=>Pe,base64pad:()=>Mr,base64url:()=>Pr,base64urlpad:()=>Br});var Pe=w({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Mr=w({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Pr=w({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Br=w({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});D.default.formatters.b=r=>r==null?"undefined":N.baseEncode(r);D.default.formatters.t=r=>r==null?"undefined":V.baseEncode(r);D.default.formatters.m=r=>r==null?"undefined":Pe.baseEncode(r);D.default.formatters.p=r=>r==null?"undefined":r.toString();D.default.formatters.c=r=>r==null?"undefined":r.toString();D.default.formatters.k=r=>r==null?"undefined":r.toString();D.default.formatters.a=r=>r==null?"undefined":r.toString();function _r(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function te(r){let t=_r(`${r}:trace`);return D.default.enabled(`${r}:trace`)&&D.default.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=(0,D.default)(`${r}:trace`)),Object.assign((0,D.default)(r),{error:(0,D.default)(`${r}:error`),trace:t})}function j(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function P(r=0){return globalThis.Buffer?.alloc!=null?j(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function k(r=0){return globalThis.Buffer?.allocUnsafe!=null?j(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function _e(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=k(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return j(e)}function Ct(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var At=Symbol.for("@achingbrain/uint8arraylist");function Et(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function xe(r){return!!r?.[At]}var E=class r{constructor(...t){Object.defineProperty(this,At,{value:!0}),this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(xe(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(xe(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Et(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Et(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(xe(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return _e(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:_e(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=n,s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,h=a+i.byteLength;if(o=h,t>=h)continue;let d=t>=a&&t<h,u=e>a&&e<=h;if(d&&u){if(t===a&&e===h){n.push(i);break}let c=t-a;n.push(i.subarray(c,c+(e-t)));break}if(d){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(u){if(e===h){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!xe(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let c=0;c<s;c++)i[c]=-1;for(let c=0;c<o;c++)i[n[c]]=c;let a=i,h=this.byteLength-n.byteLength,d=n.byteLength-1,u;for(let c=e;c<=h;c+=u){u=0;for(let l=d;l>=0;l--){let L=this.get(c+l);if(n[l]!==L){u=Math.max(1,l-a[L]);break}}if(u===0)return c}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=k(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=P(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=k(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=P(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Ct(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};function Ce(r){let t=async function*(){let e=yield,n=new E;for await(let o of r){if(e==null){n.append(o),e=yield n,n=new E;continue}for(n.append(o);n.length>=e;){let s=n.sublist(0,e);if(n.consume(e),e=yield s,e==null){n.length>0&&(e=yield n,n=new E);break}}}if(e!=null)throw Object.assign(new Error(`stream ended before ${e} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return t.next(),t}function re(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ee=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},ne=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new Ee(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new Ee(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var Ve=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function z(r={}){return Vr(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Vr(r,t){t=t??{};let e=t.onEnd,n=new ne,o,s,i,a=re(),h=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((f,g)=>{s=y=>{s=null,n.push(y);try{f(r(n))}catch(x){g(x)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=re()})}},d=f=>s!=null?s(f):(n.push(f),o),u=f=>(n=new ne,s!=null?s({error:f}):(n.push({error:f}),o)),c=f=>{if(i)return o;if(t?.objectMode!==!0&&f?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return d({done:!1,value:f})},l=f=>i?o:(i=!0,f!=null?u(f):d({done:!0})),L=()=>(n=new ne,l(),{done:!0}),m=f=>(l(f),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:h,return:L,throw:m,push:c,end:l,get readableLength(){return n.size},onEmpty:async f=>{let g=f?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let y,x;g!=null&&(y=new Promise((C,F)=>{x=()=>{F(new Ve)},g.addEventListener("abort",x)}));try{await Promise.race([a.promise,y])}finally{x!=null&&g!=null&&g?.removeEventListener("abort",x)}}},e==null)return o;let p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(f){return p.throw(f),e!=null&&(e(f),e=void 0),{done:!0}},return(){return p.return(),e!=null&&(e(),e=void 0),{done:!0}},push:c,end(f){return p.end(f),e!=null&&(e(f),e=void 0),o},get readableLength(){return p.readableLength}},o}function Ae(r){let t=z(),e=Ce(r.source),n=re(),o,s=r.sink(async function*(){yield*t,yield*await n.promise}());return s.catch(a=>{o=a}),{reader:e,writer:t,stream:{sink:async a=>{if(o!=null){await Promise.reject(o);return}n.resolve(a),await s},source:e},rest:()=>t.end(),write:t.push,read:async()=>{let a=await e.next();if(a.value!=null)return a.value}}}function zr(r){return r[Symbol.asyncIterator]!=null}function $r(...r){let t=[];for(let e of r)zr(e)||t.push(e);return t.length===r.length?function*(){for(let e of t)yield*e}():async function*(){let e=z({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)e.push(o)})),e.end()}catch(n){e.end(n)}}),yield*e}()}var Le=$r;var ze={};S(ze,{base10:()=>Gr});var Gr=_({prefix:"9",name:"base10",alphabet:"0123456789"});var $e={};S($e,{base16:()=>jr,base16upper:()=>qr});var jr=w({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),qr=w({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Ge={};S(Ge,{base2:()=>Hr});var Hr=w({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var je={};S(je,{base256emoji:()=>Yr});var Lt=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}"),Xr=Lt.reduce((r,t,e)=>(r[e]=t,r),[]),Jr=Lt.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function Kr(r){return r.reduce((t,e)=>(t+=Xr[e],t),"")}function Qr(r){let t=[];for(let e of r){let n=Jr[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var Yr=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Kr,decode:Qr});var qe={};S(qe,{base36:()=>Wr,base36upper:()=>Zr});var Wr=_({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Zr=_({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var He={};S(He,{base8:()=>en});var en=w({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Xe={};S(Xe,{identity:()=>tn});var tn=ee({prefix:"\0",name:"identity",encode:r=>wt(r),decode:r=>gt(r)});var Wo=new TextEncoder,Zo=new TextDecoder;var Ke={};S(Ke,{identity:()=>Fn});var on=St,Ft=128,sn=127,an=~sn,cn=Math.pow(2,31);function St(r,t,e){t=t||[],e=e||0;for(var n=e;r>=cn;)t[e++]=r&255|Ft,r/=128;for(;r&an;)t[e++]=r&255|Ft,r>>>=7;return t[e]=r|0,St.bytes=e-n+1,t}var un=Je,fn=128,vt=127;function Je(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Je.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&vt)<<o:(i&vt)*Math.pow(2,o),o+=7}while(i>=fn);return Je.bytes=s-n,e}var ln=Math.pow(2,7),hn=Math.pow(2,14),dn=Math.pow(2,21),pn=Math.pow(2,28),mn=Math.pow(2,35),bn=Math.pow(2,42),gn=Math.pow(2,49),wn=Math.pow(2,56),yn=Math.pow(2,63),xn=function(r){return r<ln?1:r<hn?2:r<dn?3:r<pn?4:r<mn?5:r<bn?6:r<gn?7:r<wn?8:r<yn?9:10},Cn={encode:on,decode:un,encodingLength:xn},En=Cn,ce=En;var ue=(r,t=0)=>[ce.decode(r,t),ce.decode.bytes],oe=(r,t,e=0)=>(ce.encode(r,t,e),t),se=r=>ce.encodingLength(r);var q=(r,t)=>{let e=t.byteLength,n=se(r),o=n+se(e),s=new Uint8Array(o+e);return oe(r,s,0),oe(e,s,n),s.set(t,o),new ie(r,e,t,s)},Ut=r=>{let t=M(r),[e,n]=ue(t),[o,s]=ue(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ie(e,o,i,t)},Dt=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&bt(r.bytes,e.bytes)}},ie=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var Tt=0,An="identity",Ot=M,Ln=r=>q(Tt,Ot(r)),Fn={code:Tt,name:An,encode:Ot,digest:Ln};var We={};S(We,{sha256:()=>vn,sha512:()=>Sn});var Ye=({name:r,code:t,encode:e})=>new Qe(r,t,e),Qe=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?q(this.code,e):e.then(n=>q(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Rt=r=>async t=>new Uint8Array(await crypto.subtle.digest(r,t)),vn=Ye({name:"sha2-256",code:18,encode:Rt("SHA-256")}),Sn=Ye({name:"sha2-512",code:19,encode:Rt("SHA-512")});var Nt=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return Dn(e,Ze(r),t||N.encoder);default:return Tn(e,Ze(r),t||V.encoder)}};var kt=new WeakMap,Ze=r=>{let t=kt.get(r);if(t==null){let e=new Map;return kt.set(r,e),e}return t},ve=class r{constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==le)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==On)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=q(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Dt(t.multihash,n.multihash)}toString(t){return Nt(this,t)}toJSON(){return{"/":Nt(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i||Mt(n,o,s.bytes))}else if(e[In]===!0){let{version:n,multihash:o,code:s}=e,i=Ut(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==le)throw new Error(`Version 0 CID must use dag-pb (code: ${le}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Mt(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,le,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=M(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new ie(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[c,l]=ue(t.subarray(e));return e+=l,c},o=n(),s=le;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),h=n(),d=e+h,u=d-i;return{version:o,codec:s,multihashCode:a,digestSize:h,multihashSize:u,size:d}}static parse(t,e){let[n,o]=Un(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ze(s).set(n,t),s}},Un=(r,t)=>{switch(r[0]){case"Q":{let e=t||N;return[N.prefix,e.decode(`${N.prefix}${r}`)]}case N.prefix:{let e=t||N;return[N.prefix,e.decode(r)]}case V.prefix:{let e=t||V;return[V.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},Dn=(r,t,e)=>{let{prefix:n}=e;if(n!==N.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o},Tn=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o},le=112,On=18,Mt=(r,t,e)=>{let n=se(r),o=n+se(t),s=new Uint8Array(o+e.byteLength);return oe(r,s,0),oe(t,s,n),s.set(e,o),s},In=Symbol.for("@ipld/js-cid/CID");var et={...Xe,...Ge,...He,...ze,...$e,...ke,...qe,...Me,...Be,...je},ms={...We,...Ke};function Bt(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Pt=Bt("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),tt=Bt("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=k(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Rn={utf8:Pt,"utf-8":Pt,hex:et.base16,latin1:tt,ascii:tt,binary:tt,...et},Se=Rn;function T(r,t="utf8"){let e=Se[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?j(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}var he=class extends Error{constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function _t(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function Vt(r,t,e){let n=e??{},o=_t(r);async function*s(){let i,a=()=>{i?.()};for(t.addEventListener("abort",a);;){let h;try{if(t.aborted){let{abortMessage:u,abortCode:c}=n;throw new he(u,c)}let d=new Promise((u,c)=>{i=()=>{let{abortMessage:l,abortCode:L}=n;c(new he(l,L))}});h=await Promise.race([d,o.next()]),i=null}catch(d){t.removeEventListener("abort",a);let u=d.type==="aborted"&&t.aborted;if(u&&n.onAbort!=null&&n.onAbort(r),typeof o.return=="function")try{let c=o.return();c instanceof Promise&&c.catch(l=>{n.onReturnError!=null&&n.onReturnError(l)})}catch(c){n.onReturnError!=null&&n.onReturnError(c)}if(u&&n.returnOnAbort===!0)return;throw d}if(h.done===!0)break;yield h.value}t.removeEventListener("abort",a)}return s()}function Nn(r){return r[Symbol.asyncIterator]!=null}function kn(r){if(Nn(r))return(async()=>{for await(let t of r)return t})();for(let t of r)return t}var zt=kn;var Mn=Math.pow(2,7),Pn=Math.pow(2,14),Bn=Math.pow(2,21),rt=Math.pow(2,28),nt=Math.pow(2,35),ot=Math.pow(2,42),st=Math.pow(2,49),b=128,A=127;function H(r){if(r<Mn)return 1;if(r<Pn)return 2;if(r<Bn)return 3;if(r<rt)return 4;if(r<nt)return 5;if(r<ot)return 6;if(r<st)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function _n(r,t,e=0){switch(H(r)){case 8:t[e++]=r&255|b,r/=128;case 7:t[e++]=r&255|b,r/=128;case 6:t[e++]=r&255|b,r/=128;case 5:t[e++]=r&255|b,r/=128;case 4:t[e++]=r&255|b,r>>>=7;case 3:t[e++]=r&255|b,r>>>=7;case 2:t[e++]=r&255|b,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function Vn(r,t,e=0){switch(H(r)){case 8:t.set(e++,r&255|b),r/=128;case 7:t.set(e++,r&255|b),r/=128;case 6:t.set(e++,r&255|b),r/=128;case 5:t.set(e++,r&255|b),r/=128;case 4:t.set(e++,r&255|b),r>>>=7;case 3:t.set(e++,r&255|b),r>>>=7;case 2:t.set(e++,r&255|b),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function zn(r,t){let e=r[t],n=0;if(n+=e&A,e<b||(e=r[t+1],n+=(e&A)<<7,e<b)||(e=r[t+2],n+=(e&A)<<14,e<b)||(e=r[t+3],n+=(e&A)<<21,e<b)||(e=r[t+4],n+=(e&A)*rt,e<b)||(e=r[t+5],n+=(e&A)*nt,e<b)||(e=r[t+6],n+=(e&A)*ot,e<b)||(e=r[t+7],n+=(e&A)*st,e<b))return n;throw new RangeError("Could not decode varint")}function $n(r,t){let e=r.get(t),n=0;if(n+=e&A,e<b||(e=r.get(t+1),n+=(e&A)<<7,e<b)||(e=r.get(t+2),n+=(e&A)<<14,e<b)||(e=r.get(t+3),n+=(e&A)<<21,e<b)||(e=r.get(t+4),n+=(e&A)*rt,e<b)||(e=r.get(t+5),n+=(e&A)*nt,e<b)||(e=r.get(t+6),n+=(e&A)*ot,e<b)||(e=r.get(t+7),n+=(e&A)*st,e<b))return n;throw new RangeError("Could not decode varint")}function $t(r,t,e=0){return t==null&&(t=k(H(r))),t instanceof Uint8Array?_n(r,t,e):Vn(r,t,e)}function Gt(r,t=0){return r instanceof Uint8Array?zn(r,t):$n(r,t)}function Ue(r){return r[Symbol.asyncIterator]!=null}var De=r=>{let t=H(r),e=k(t);return $t(r,e),De.bytes=t,e};De.bytes=0;function Te(r,t){t=t??{};let e=t.lengthEncoder??De;function*n(o){let s=e(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Ue(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Te.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??De;return new E(e(r.byteLength),r)};var ae=ut(Xt(),1);var jn=8,qn=1024*1024*4,X;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(X||(X={}));var it=r=>{let t=Gt(r);return it.bytes=H(t),t};it.bytes=0;function de(r,t){let e=new E,n=X.LENGTH,o=-1,s=t?.lengthDecoder??it,i=t?.maxLengthLength??jn,a=t?.maxDataLength??qn;function*h(){for(;e.byteLength>0;){if(n===X.LENGTH)try{if(o=s(e),o<0)throw(0,ae.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,ae.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let d=s.bytes;e.consume(d),t?.onLength!=null&&t.onLength(o),n=X.DATA}catch(d){if(d instanceof RangeError){if(e.byteLength>i)throw(0,ae.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw d}if(n===X.DATA){if(e.byteLength<o)break;let d=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(d),yield d,n=X.LENGTH}}}return Ue(r)?async function*(){for await(let d of r)e.append(d),yield*h();if(e.byteLength>0)throw(0,ae.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let d of r)e.append(d),yield*h();if(e.byteLength>0)throw(0,ae.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}de.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return de(n,{...t??{},onLength:s=>{e=s}})};function Jt(r,...t){if(r==null)throw new Error("Empty pipeline");if(at(r)){let n=r;r=()=>n.source}else if(Qt(r)||Kt(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&at(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)at(e[n])&&(e[n]=Jn(e[n]));return Xn(...e)}var Xn=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},Kt=r=>r?.[Symbol.asyncIterator]!=null,Qt=r=>r?.[Symbol.iterator]!=null,at=r=>r==null?!1:r.sink!=null&&r.source!=null,Jn=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=z({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(Kt(s))o=async function*(){yield*s,n.end()};else if(Qt(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Le(n,o())}return r.source};function Yt(r,t="utf8"){let e=Se[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var Qn=te("libp2p:mss"),Wt=T(`
3
- `);function J(r){let t=new E(r,Wt);return Te.single(t)}function K(r,t,e={}){let n=J(t);e.writeBytes===!0?r.push(n.subarray()):r.push(n)}function Zt(r,t,e={}){let n=new E;for(let o of t)n.append(J(o));e.writeBytes===!0?r.push(n.subarray()):r.push(n)}async function Yn(r,t){let e=1,n={[Symbol.asyncIterator]:()=>n,next:async()=>r.next(e)},o=n;t?.signal!=null&&(o=Vt(n,t.signal));let s=a=>{e=a},i=await Jt(o,a=>de(a,{onLength:s,maxDataLength:1024}),async a=>zt(a));if(i==null||i.length===0)throw new B("no buffer returned","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");if(i.get(i.byteLength-1)!==Wt[0])throw Qn.error("Invalid mss message - missing newline - %s",i.subarray()),new B("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return i.sublist(0,-1)}async function $(r,t){let e=await Yn(r,t);return Yt(e.subarray())}var pe=te("libp2p:mss:select");async function tr(r,t,e={}){t=Array.isArray(t)?[...t]:[t];let{reader:n,writer:o,rest:s,stream:i}=Ae(r),a=t.shift();if(a==null)throw new Error("At least one protocol must be specified");pe.trace('select: write ["%s", "%s"]',R,a);let h=T(R),d=T(a);Zt(o,[h,d],e);let u=await $(n,e);if(pe.trace('select: read "%s"',u),u===R&&(u=await $(n,e),pe.trace('select: read "%s"',u)),u===a)return s(),{stream:i,protocol:a};for(let c of t){pe.trace('select: write "%s"',c),K(o,T(c),e);let l=await $(n,e);if(pe.trace('select: read "%s" for "%s"',l,c),l===c)return s(),{stream:i,protocol:c}}throw s(),new B("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function rr(r,t){let e=z(),n=!1;return{stream:{sink:async o=>{await r.sink(async function*(){let s=!0;for await(let i of Le(o,e))if(s){s=!1,n=!0,e.end();let a=T(R),h=T(t),d=new E(J(a),J(h));i.length>0&&d.append(i),yield*d}else yield i}())},source:async function*(){n||e.push(new Uint8Array);let o=Ce(r.source),s=await $(o);if(s===R&&(s=await $(o)),s!==t)throw new B("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL");for await(let i of o)yield*i}()},protocol:t}}var me=te("libp2p:mss:handle");async function nr(r,t,e){t=Array.isArray(t)?t:[t];let{writer:n,reader:o,rest:s,stream:i}=Ae(r);for(;;){let a=await $(o,e);if(me.trace('read "%s"',a),a===R){me.trace('respond with "%s" for "%s"',R,a),K(n,T(R),e);continue}if(t.includes(a))return K(n,T(a),e),me.trace('respond with "%s" for "%s"',a,a),s(),{stream:i,protocol:a};if(a==="ls"){K(n,new E(...t.map(h=>J(T(h)))),e),me.trace('respond with "%s" for %s',t,a);continue}K(n,T("na"),e),me('respond with "na" for "%s"',a)}}return ur(Wn);})();
2
+ "use strict";var Libp2PMultistreamSelect=(()=>{var Ft=Object.create;var oe=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var Mt=Object.getOwnPropertyNames;var Bt=Object.getPrototypeOf,Vt=Object.prototype.hasOwnProperty;var kt=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),R=(r,t)=>{for(var e in t)oe(r,e,{get:t[e],enumerable:!0})},Ke=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Mt(t))!Vt.call(r,o)&&o!==e&&oe(r,o,{get:()=>t[o],enumerable:!(n=Pt(t,o))||n.enumerable});return r};var Gt=(r,t,e)=>(e=r!=null?Ft(Bt(r)):{},Ke(t||!r||!r.__esModule?oe(e,"default",{value:r,enumerable:!0}):e,r)),zt=r=>Ke(oe({},"__esModule",{value:!0}),r);var at=kt((Co,st)=>{"use strict";function it(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function Kt(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return it(r,e)}catch{e.message=r.message,e.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),it(new o,e)}}st.exports=Kt});var un={};R(un,{PROTOCOL_ID:()=>x,handle:()=>_t,select:()=>It});var x="/multistream/1.0.0";var mn=Symbol.for("@libp2p/connection");var wn=Symbol.for("@libp2p/content-routing");var xn=Symbol.for("@libp2p/peer-discovery");var En=Symbol.for("@libp2p/peer-id");var Sn=Symbol.for("@libp2p/peer-routing");var Ye;(function(r){r.Accept="accept",r.Ignore="ignore",r.Reject="reject"})(Ye||(Ye={}));var Dn=Symbol.for("@libp2p/transport");var Qe;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Qe||(Qe={}));var G=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var be=class extends Event{detail;constructor(t,e){super(t,e),this.detail=e?.detail}},_n=globalThis.CustomEvent??be;function M(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function _(r=0){return globalThis.Buffer?.alloc!=null?M(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function T(r=0){return globalThis.Buffer?.allocUnsafe!=null?M(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function ye(r,t){if(globalThis.Buffer!=null)return M(globalThis.Buffer.concat(r,t));t==null&&(t=r.reduce((o,i)=>o+i.length,0));let e=T(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return M(e)}function Ze(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var tt=Symbol.for("@achingbrain/uint8arraylist");function et(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function ie(r){return!!r?.[tt]}var L=class r{bufs;length;[tt]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(ie(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(ie(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=et(this.bufs,t);return e.buf[e.index]}set(t,e){let n=et(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(ie(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return ye(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:ye(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),i=new r;return i.length=o,i.bufs=[...n],i}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let i=0;i<this.bufs.length;i++){let s=this.bufs[i],a=o,c=a+s.byteLength;if(o=c,t>=c)continue;let f=t>=a&&t<c,d=e>a&&e<=c;if(f&&d){if(t===a&&e===c){n.push(s);break}let l=t-a;n.push(s.subarray(l,l+(e-t)));break}if(f){if(t===0){n.push(s);continue}n.push(s.subarray(t-a));continue}if(d){if(e===c){n.push(s);break}n.push(s.subarray(0,e-a));break}n.push(s)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!ie(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let i=256,s=new Int32Array(i);for(let l=0;l<i;l++)s[l]=-1;for(let l=0;l<o;l++)s[n[l]]=l;let a=s,c=this.byteLength-n.byteLength,f=n.byteLength-1,d;for(let l=e;l<=c;l+=d){d=0;for(let b=f;b>=0;b--){let k=this.get(l+b);if(n[b]!==k){d=Math.max(1,b-a[k]);break}}if(d===0)return l}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=T(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=_(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=_(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=_(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=T(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=_(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=_(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=_(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=_(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=_(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Ze(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,i)=>o+i.byteLength,0)),n.length=e,n}};function N(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var se=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function rt(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new se(e?.errorMessage,e?.errorCode));let n,o=new se(e?.errorMessage,e?.errorCode);try{return await Promise.race([r,new Promise((i,s)=>{n=()=>{s(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var xe=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=N(),this.needNext.resolve(),this.haveNext=N()}[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 t=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=N(),t}async throw(t){return this.ended=!0,t!=null&&this.haveNext.reject(t),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=N(),await rt(this.needNext.promise,e?.signal,e)}};function nt(){return new xe}var ae=class extends Error{code;constructor(t,e){super(t),this.code=e}},Le=class extends ae{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted"}};function ot(r,t){let e=nt();r.sink(e).catch(async s=>{await e.end(s)}),r.sink=async s=>{for await(let a of s)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new L;return{read:async(s,a)=>{a?.signal?.throwIfAborted();let c,f=new Promise((d,l)=>{c=()=>{l(new Le("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(s==null){let{done:l,value:b}=await Promise.race([n.next(),f]);return l===!0?new L:b}for(;o.byteLength<s;){let{value:l,done:b}=await Promise.race([n.next(),f]);if(b===!0)throw new ae("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(l)}let d=o.sublist(0,s);return o.consume(s),d}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(s,a)=>{a?.signal?.throwIfAborted(),s instanceof Uint8Array?await e.push(s,a):await e.push(s.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let s=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*s}()}return r}}}var $t=Math.pow(2,7),jt=Math.pow(2,14),Ht=Math.pow(2,21),Ee=Math.pow(2,28),Ae=Math.pow(2,35),Se=Math.pow(2,42),ve=Math.pow(2,49),u=128,E=127;function F(r){if(r<$t)return 1;if(r<jt)return 2;if(r<Ht)return 3;if(r<Ee)return 4;if(r<Ae)return 5;if(r<Se)return 6;if(r<ve)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Xt(r,t,e=0){switch(F(r)){case 8:t[e++]=r&255|u,r/=128;case 7:t[e++]=r&255|u,r/=128;case 6:t[e++]=r&255|u,r/=128;case 5:t[e++]=r&255|u,r/=128;case 4:t[e++]=r&255|u,r>>>=7;case 3:t[e++]=r&255|u,r>>>=7;case 2:t[e++]=r&255|u,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function qt(r,t,e=0){switch(F(r)){case 8:t.set(e++,r&255|u),r/=128;case 7:t.set(e++,r&255|u),r/=128;case 6:t.set(e++,r&255|u),r/=128;case 5:t.set(e++,r&255|u),r/=128;case 4:t.set(e++,r&255|u),r>>>=7;case 3:t.set(e++,r&255|u),r>>>=7;case 2:t.set(e++,r&255|u),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Jt(r,t){let e=r[t],n=0;if(n+=e&E,e<u||(e=r[t+1],n+=(e&E)<<7,e<u)||(e=r[t+2],n+=(e&E)<<14,e<u)||(e=r[t+3],n+=(e&E)<<21,e<u)||(e=r[t+4],n+=(e&E)*Ee,e<u)||(e=r[t+5],n+=(e&E)*Ae,e<u)||(e=r[t+6],n+=(e&E)*Se,e<u)||(e=r[t+7],n+=(e&E)*ve,e<u))return n;throw new RangeError("Could not decode varint")}function Wt(r,t){let e=r.get(t),n=0;if(n+=e&E,e<u||(e=r.get(t+1),n+=(e&E)<<7,e<u)||(e=r.get(t+2),n+=(e&E)<<14,e<u)||(e=r.get(t+3),n+=(e&E)<<21,e<u)||(e=r.get(t+4),n+=(e&E)*Ee,e<u)||(e=r.get(t+5),n+=(e&E)*Ae,e<u)||(e=r.get(t+6),n+=(e&E)*Se,e<u)||(e=r.get(t+7),n+=(e&E)*ve,e<u))return n;throw new RangeError("Could not decode varint")}function ce(r,t,e=0){return t==null&&(t=T(F(r))),t instanceof Uint8Array?Xt(r,t,e):qt(r,t,e)}function fe(r,t=0){return r instanceof Uint8Array?Jt(r,t):Wt(r,t)}function he(r){return r[Symbol.asyncIterator]!=null}var ue=r=>{let t=F(r),e=T(t);return ce(r,e),ue.bytes=t,e};ue.bytes=0;function z(r,t){t=t??{};let e=t.lengthEncoder??ue;function*n(o){let i=e(o.byteLength);i instanceof Uint8Array?yield i:yield*i,o instanceof Uint8Array?yield o:yield*o}return he(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}z.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??ue;return new L(e(r.byteLength),r)};var X=Gt(at(),1);var Yt=8,Qt=1024*1024*4,$;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})($||($={}));var Ue=r=>{let t=fe(r);return Ue.bytes=F(t),t};Ue.bytes=0;function Re(r,t){let e=new L,n=$.LENGTH,o=-1,i=t?.lengthDecoder??Ue,s=t?.maxLengthLength??Yt,a=t?.maxDataLength??Qt;function*c(){for(;e.byteLength>0;){if(n===$.LENGTH)try{if(o=i(e),o<0)throw(0,X.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,X.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let f=i.bytes;e.consume(f),t?.onLength!=null&&t.onLength(o),n=$.DATA}catch(f){if(f instanceof RangeError){if(e.byteLength>s)throw(0,X.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw f}if(n===$.DATA){if(e.byteLength<o)break;let f=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(f),yield f,n=$.LENGTH}}}return he(r)?async function*(){for await(let f of r)e.append(f),yield*c();if(e.byteLength>0)throw(0,X.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let f of r)e.append(f),yield*c();if(e.byteLength>0)throw(0,X.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Re.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:i,value:s}=await r.next(e);if(i===!0)return;s!=null&&(yield s)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{e=1}}();return Re(n,{...t??{},onLength:i=>{e=i}})};var de=class extends Error{code;constructor(t,e){super(t),this.code=e}},ct=r=>fe(r);ct.bytes=0;function Q(r,t={}){let e=ot(r,t);return t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=F(t.maxDataLength)),{read:async o=>{let i=-1,s=new L,a=t?.lengthDecoder??ct;for(;;){s.append(await e.read(1,o));try{i=a(s)}catch(c){if(c instanceof RangeError)continue;throw c}if(t?.maxLengthLength!=null&&s.byteLength>t.maxLengthLength)throw new de("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(i>-1)break}if(t?.maxDataLength!=null&&i>t.maxDataLength)throw new de("message length too long","ERR_MSG_DATA_TOO_LONG");return e.read(i,o)},write:async(o,i)=>{await e.write(z.single(o,t),i)},writeV:async(o,i)=>{let s=new L(...o.map(a=>z.single(a,t)));await e.write(s,i)},unwrap:()=>e.unwrap()}}var Ce={};R(Ce,{base10:()=>ir});function er(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var i=r.charAt(o),s=i.charCodeAt(0);if(e[s]!==255)throw new TypeError(i+" is ambiguous");e[s]=o}var a=r.length,c=r.charAt(0),f=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function l(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 g=0,C=0,v=0,p=h.length;v!==p&&h[v]===0;)v++,g++;for(var y=(p-v)*d+1>>>0,w=new Uint8Array(y);v!==p;){for(var S=h[v],U=0,D=y-1;(S!==0||U<C)&&D!==-1;D--,U++)S+=256*w[D]>>>0,w[D]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");C=U,v++}for(var I=y-C;I!==y&&w[I]===0;)I++;for(var ne=c.repeat(g);I<y;++I)ne+=r.charAt(w[I]);return ne}function b(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var g=0;if(h[g]!==" "){for(var C=0,v=0;h[g]===c;)C++,g++;for(var p=(h.length-g)*f+1>>>0,y=new Uint8Array(p);h[g];){var w=e[h.charCodeAt(g)];if(w===255)return;for(var S=0,U=p-1;(w!==0||S<v)&&U!==-1;U--,S++)w+=a*y[U]>>>0,y[U]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");v=S,g++}if(h[g]!==" "){for(var D=p-v;D!==p&&y[D]===0;)D++;for(var I=new Uint8Array(C+(p-D)),ne=C;D!==p;)I[ne++]=y[D++];return I}}}function k(h){var g=b(h);if(g)return g;throw new Error(`Non-${t} character`)}return{encode:l,decodeUnsafe:b,decode:k}}var tr=er,rr=tr,ft=rr;var zo=new Uint8Array(0);var lt=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},P=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")};var ht=r=>new TextEncoder().encode(r),ut=r=>new TextDecoder().decode(r);var De=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Te=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return pt(this,t)}},Ne=class{constructor(t){this.decoders=t}or(t){return pt(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},pt=(r,t)=>new Ne({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),Oe=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new De(t,e,n),this.decoder=new Te(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},q=({name:r,prefix:t,encode:e,decode:n})=>new Oe(r,t,e,n),B=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=ft(e,t);return q({prefix:r,name:t,encode:n,decode:i=>P(o(i))})},nr=(r,t,e,n)=>{let o={};for(let d=0;d<t.length;++d)o[t[d]]=d;let i=r.length;for(;r[i-1]==="=";)--i;let s=new Uint8Array(i*e/8|0),a=0,c=0,f=0;for(let d=0;d<i;++d){let l=o[r[d]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<e|l,a+=e,a>=8&&(a-=8,s[f++]=255&c>>a)}if(a>=e||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return s},or=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,i="",s=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],s+=8;s>e;)s-=e,i+=t[o&a>>s];if(s&&(i+=t[o&a<<e-s]),n)for(;i.length*e&7;)i+="=";return i},m=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>q({prefix:t,name:r,encode(o){return or(o,n,e)},decode(o){return nr(o,n,e,r)}});var ir=B({prefix:"9",name:"base10",alphabet:"0123456789"});var Ie={};R(Ie,{base16:()=>sr,base16upper:()=>ar});var sr=m({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ar=m({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var _e={};R(_e,{base2:()=>cr});var cr=m({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Fe={};R(Fe,{base256emoji:()=>dr});var mt=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}"),fr=mt.reduce((r,t,e)=>(r[e]=t,r),[]),lr=mt.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function hr(r){return r.reduce((t,e)=>(t+=fr[e],t),"")}function ur(r){let t=[];for(let e of r){let n=lr[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var dr=q({prefix:"\u{1F680}",name:"base256emoji",encode:hr,decode:ur});var Pe={};R(Pe,{base32:()=>J,base32hex:()=>wr,base32hexpad:()=>yr,base32hexpadupper:()=>xr,base32hexupper:()=>br,base32pad:()=>mr,base32padupper:()=>gr,base32upper:()=>pr,base32z:()=>Lr});var J=m({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),pr=m({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),mr=m({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),gr=m({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),wr=m({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),br=m({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),yr=m({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),xr=m({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Lr=m({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Me={};R(Me,{base36:()=>Er,base36upper:()=>Ar});var Er=B({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ar=B({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Be={};R(Be,{base58btc:()=>O,base58flickr:()=>Sr});var O=B({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Sr=B({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ve={};R(Ve,{base64:()=>vr,base64pad:()=>Rr,base64url:()=>Ur,base64urlpad:()=>Dr});var vr=m({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Rr=m({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ur=m({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Dr=m({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var ke={};R(ke,{base8:()=>Tr});var Tr=m({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Ge={};R(Ge,{identity:()=>Nr});var Nr=q({prefix:"\0",name:"identity",encode:r=>ut(r),decode:r=>ht(r)});var ni=new TextEncoder,oi=new TextDecoder;var $e={};R($e,{identity:()=>Zr});var Ir=bt,gt=128,_r=127,Fr=~_r,Pr=Math.pow(2,31);function bt(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Pr;)t[e++]=r&255|gt,r/=128;for(;r&Fr;)t[e++]=r&255|gt,r>>>=7;return t[e]=r|0,bt.bytes=e-n+1,t}var Mr=ze,Br=128,wt=127;function ze(r,n){var e=0,n=n||0,o=0,i=n,s,a=r.length;do{if(i>=a)throw ze.bytes=0,new RangeError("Could not decode varint");s=r[i++],e+=o<28?(s&wt)<<o:(s&wt)*Math.pow(2,o),o+=7}while(s>=Br);return ze.bytes=i-n,e}var Vr=Math.pow(2,7),kr=Math.pow(2,14),Gr=Math.pow(2,21),zr=Math.pow(2,28),$r=Math.pow(2,35),jr=Math.pow(2,42),Hr=Math.pow(2,49),Xr=Math.pow(2,56),qr=Math.pow(2,63),Jr=function(r){return r<Vr?1:r<kr?2:r<Gr?3:r<zr?4:r<$r?5:r<jr?6:r<Hr?7:r<Xr?8:r<qr?9:10},Wr={encode:Ir,decode:Mr,encodingLength:Jr},Kr=Wr,Z=Kr;var ee=(r,t=0)=>[Z.decode(r,t),Z.decode.bytes],W=(r,t,e=0)=>(Z.encode(r,t,e),t),K=r=>Z.encodingLength(r);var j=(r,t)=>{let e=t.byteLength,n=K(r),o=n+K(e),i=new Uint8Array(o+e);return W(r,i,0),W(e,i,n),i.set(t,o),new Y(r,e,t,i)},yt=r=>{let t=P(r),[e,n]=ee(t),[o,i]=ee(t.subarray(n)),s=t.subarray(n+i);if(s.byteLength!==o)throw new Error("Incorrect length");return new Y(e,o,s,t)},xt=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&lt(r.bytes,e.bytes)}},Y=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var Lt=0,Yr="identity",Et=P,Qr=r=>j(Lt,Et(r)),Zr={code:Lt,name:Yr,encode:Et,digest:Qr};var Xe={};R(Xe,{sha256:()=>en,sha512:()=>tn});var He=({name:r,code:t,encode:e})=>new je(r,t,e),je=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?j(this.code,e):e.then(n=>j(this.code,n))}else throw Error("Unknown type, must be binary type")}};var St=r=>async t=>new Uint8Array(await crypto.subtle.digest(r,t)),en=He({name:"sha2-256",code:18,encode:St("SHA-256")}),tn=He({name:"sha2-512",code:19,encode:St("SHA-512")});var vt=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return nn(e,qe(r),t||O.encoder);default:return on(e,qe(r),t||J.encoder)}};var Rt=new WeakMap,qe=r=>{let t=Rt.get(r);if(t==null){let e=new Map;return Rt.set(r,e),e}return t},me=class r{constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==re)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==sn)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=j(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&xt(t.multihash,n.multihash)}toString(t){return vt(this,t)}toJSON(){return{"/":vt(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:i,bytes:s}=e;return new r(n,o,i,s||Ut(n,o,i.bytes))}else if(e[an]===!0){let{version:n,multihash:o,code:i}=e,s=yt(o);return r.create(n,i,s)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==re)throw new Error(`Version 0 CID must use dag-pb (code: ${re}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Ut(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,re,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=P(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let i=o.subarray(e.multihashSize-e.digestSize),s=new Y(e.multihashCode,e.digestSize,i,o);return[e.version===0?r.createV0(s):r.createV1(e.codec,s),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[l,b]=ee(t.subarray(e));return e+=b,l},o=n(),i=re;if(o===18?(o=0,e=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let s=e,a=n(),c=n(),f=e+c,d=f-s;return{version:o,codec:i,multihashCode:a,digestSize:c,multihashSize:d,size:f}}static parse(t,e){let[n,o]=rn(t,e),i=r.decode(o);if(i.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return qe(i).set(n,t),i}},rn=(r,t)=>{switch(r[0]){case"Q":{let e=t||O;return[O.prefix,e.decode(`${O.prefix}${r}`)]}case O.prefix:{let e=t||O;return[O.prefix,e.decode(r)]}case J.prefix:{let e=t||J;return[J.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},nn=(r,t,e)=>{let{prefix:n}=e;if(n!==O.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let i=e.encode(r).slice(1);return t.set(n,i),i}else return o},on=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let i=e.encode(r);return t.set(n,i),i}else return o},re=112,sn=18,Ut=(r,t,e)=>{let n=K(r),o=n+K(t),i=new Uint8Array(o+e.byteLength);return W(r,i,0),W(t,i,n),i.set(e,o),i},an=Symbol.for("@ipld/js-cid/CID");var Je={...Ge,..._e,...ke,...Ce,...Ie,...Pe,...Me,...Be,...Ve,...Fe},xi={...Xe,...$e};function Tt(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Dt=Tt("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),We=Tt("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=T(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),cn={utf8:Dt,"utf-8":Dt,hex:Je.base16,latin1:We,ascii:We,binary:We,...Je},ge=cn;function A(r,t="utf8"){let e=ge[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?M(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}function Nt(r,t="utf8"){let e=ge[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var fn=A(`
3
+ `);async function H(r,t,e){await r.write(t,e)}async function Ot(r,t,e){await r.writeV(t,e)}async function ln(r,t){let e=await r.read(t);if(e.byteLength===0||e.get(e.byteLength-1)!==fn[0])throw t?.log.error("Invalid mss message - missing newline",e),new G("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return e.sublist(0,-1)}async function V(r,t){let e=await ln(r,t);return Nt(e.subarray())}async function It(r,t,e){if(t=Array.isArray(t)?[...t]:[t],t.length===1)return hn(r,t[0],e);let n=Q(r,{...e,maxDataLength:1024}),o=t.shift();if(o==null)throw new Error("At least one protocol must be specified");e?.log.trace('select: write ["%s", "%s"]',x,o);let i=A(`${x}
4
+ `),s=A(`${o}
5
+ `);await Ot(n,[i,s],e),e?.log.trace("select: reading multistream-select header");let a=await V(n,e);if(e?.log.trace('select: read "%s"',a),a===x&&(e?.log.trace("select: reading protocol response"),a=await V(n,e),e?.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of t){e?.log.trace('select: write "%s"',c),await H(n,A(`${c}
6
+ `),e),e?.log.trace("select: reading protocol response");let f=await V(n,e);if(e?.log.trace('select: read "%s" for "%s"',f,c),f===c)return{stream:n.unwrap(),protocol:c}}throw new G("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function hn(r,t,e){let n=r.sink.bind(r),o=r.source,i=!1,s=!1,a=N(),c=!1,f=!1,d=N(),l=!1,b=!1,k=N(),h=Q({sink:n,source:o},{...e,maxDataLength:1024});r.sink=async p=>{let{sink:y}=h.unwrap();await y(async function*(){let w=!1;for await(let S of p){if(f&&await d.promise,c)yield S;else{f=!0,e?.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',x,t,S.byteLength);let U=`${t}
7
+ `;yield new L(Uint8Array.from([19]),A(`${x}
8
+ `),ce(U.length),A(U),S).subarray(),e?.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',x,t,S.byteLength),c=!0,f=!1,d.resolve()}w=!0}w||await g()}())};async function g(){if(s){e?.log.trace("optimistic: already negotiating %s stream",t),await a.promise;return}s=!0;try{c||(e?.log.trace("optimistic: doing send protocol for %s stream",t),await C()),l||(e?.log.trace("optimistic: doing read protocol for %s stream",t),await v())}finally{s=!1,i=!0,a.resolve()}}async function C(){if(f){await d.promise;return}f=!0;try{e?.log.trace('optimistic: write ["%s", "%s", data] in source',x,t),await h.writeV([A(`${x}
9
+ `),A(`${t}
10
+ `)]),e?.log.trace('optimistic: wrote ["%s", "%s", data] in source',x,t)}finally{c=!0,f=!1,d.resolve()}}async function v(){if(b){await k.promise;return}b=!0;try{e?.log.trace("optimistic: reading multistream select header");let p=await V(h,e);if(e?.log.trace('optimistic: read multistream select header "%s"',p),p===x&&(p=await V(h,e)),e?.log.trace('optimistic: read protocol "%s", expecting "%s"',p,t),p!==t)throw new G("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{l=!0,b=!1,k.resolve()}}if(r.source=async function*(){await g(),e?.log.trace('optimistic: reading data from "%s" stream',t),yield*h.unwrap().source}(),r.closeRead!=null){let p=r.closeRead.bind(r);r.closeRead=async y=>{i||await g().catch(w=>{e?.log.error("could not negotiate protocol before close read",w)}),await p(y)}}if(r.closeWrite!=null){let p=r.closeWrite.bind(r);r.closeWrite=async y=>{i||await g().catch(w=>{e?.log.error("could not negotiate protocol before close write",w)}),await p(y)}}if(r.close!=null){let p=r.close.bind(r);r.close=async y=>{i||(i=!0,s=!1,a.resolve()),await p(y)}}return{stream:r,protocol:t}}async function _t(r,t,e){t=Array.isArray(t)?t:[t],e.log.trace("handle: available protocols %s",t);let n=Q(r,{...e,maxDataLength:1024,maxLengthLength:2});for(;;){e?.log.trace("handle: reading incoming string");let o=await V(n,e);if(e.log.trace('handle: read "%s"',o),o===x){e.log.trace('handle: respond with "%s" for "%s"',x,o),await H(n,A(`${x}
11
+ `),e),e.log.trace('handle: responded with "%s" for "%s"',x,o);continue}if(t.includes(o))return e.log.trace('handle: respond with "%s" for "%s"',o,o),await H(n,A(`${o}
12
+ `),e),e.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let i=new L(...t.map(s=>z.single(A(`${s}
13
+ `))),A(`
14
+ `));e.log.trace('handle: respond with "%s" for %s',t,o),await H(n,i,e),e.log.trace('handle: responded with "%s" for %s',t,o);continue}e.log('handle: respond with "na" for "%s"',o),await H(n,A(`na
15
+ `),e),e.log('handle: responded with "na" for "%s"',o)}}return zt(un);})();
4
16
  return Libp2PMultistreamSelect}));
@@ -1,6 +1,5 @@
1
- import { Uint8ArrayList } from 'uint8arraylist';
2
- import type { ByteArrayInit, ByteListInit, ProtocolStream } from './index.js';
3
- import type { Duplex, Source } from 'it-stream-types';
1
+ import type { MultistreamSelectInit, ProtocolStream } from './index.js';
2
+ import type { Duplex } from 'it-stream-types';
4
3
  /**
5
4
  * Handle multistream protocol selections for the given list of protocols.
6
5
  *
@@ -47,6 +46,5 @@ import type { Duplex, Source } from 'it-stream-types';
47
46
  * })
48
47
  * ```
49
48
  */
50
- export declare function handle(stream: Duplex<Source<Uint8Array>, Source<Uint8Array>>, protocols: string | string[], options: ByteArrayInit): Promise<ProtocolStream<Uint8Array>>;
51
- export declare function handle(stream: Duplex<Source<Uint8ArrayList | Uint8Array>, Source<Uint8ArrayList | Uint8Array>>, protocols: string | string[], options?: ByteListInit): Promise<ProtocolStream<Uint8ArrayList, Uint8ArrayList | Uint8Array>>;
49
+ export declare function handle<Stream extends Duplex<any, any, any>>(stream: Stream, protocols: string | string[], options: MultistreamSelectInit): Promise<ProtocolStream<Stream>>;
52
50
  //# sourceMappingURL=handle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAyB,cAAc,EAAE,MAAM,YAAY,CAAA;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAChL,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,MAAM,CAAE,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CA+ClL"}
@@ -1,36 +1,90 @@
1
- import { logger } from '@libp2p/logger';
2
- import { handshake } from 'it-handshake';
1
+ import { encode } from 'it-length-prefixed';
2
+ import { lpStream } from 'it-length-prefixed-stream';
3
3
  import { Uint8ArrayList } from 'uint8arraylist';
4
4
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
5
- import { PROTOCOL_ID } from './constants.js';
5
+ import { MAX_PROTOCOL_LENGTH, PROTOCOL_ID } from './constants.js';
6
6
  import * as multistream from './multistream.js';
7
- const log = logger('libp2p:mss:handle');
7
+ /**
8
+ * Handle multistream protocol selections for the given list of protocols.
9
+ *
10
+ * Note that after a protocol is handled `listener` can no longer be used.
11
+ *
12
+ * @param stream - A duplex iterable stream to listen on
13
+ * @param protocols - A list of protocols (or single protocol) that this listener is able to speak.
14
+ * @param options - an options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will
15
+ * @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`
16
+ * @example
17
+ *
18
+ * ```js
19
+ * import { pipe } from 'it-pipe'
20
+ * import * as mss from '@libp2p/multistream-select'
21
+ * import { Mplex } from '@libp2p/mplex'
22
+ *
23
+ * const muxer = new Mplex({
24
+ * async onStream (muxedStream) {
25
+ * // mss.handle(handledProtocols)
26
+ * // Returns selected stream and protocol
27
+ * const { stream, protocol } = await mss.handle(muxedStream, [
28
+ * '/ipfs-dht/1.0.0',
29
+ * '/ipfs-bitswap/1.0.0'
30
+ * ])
31
+ *
32
+ * // Typically here we'd call the handler function that was registered in
33
+ * // libp2p for the given protocol:
34
+ * // e.g. handlers[protocol].handler(stream)
35
+ * //
36
+ * // If protocol was /ipfs-dht/1.0.0 it might do something like this:
37
+ * // try {
38
+ * // await pipe(
39
+ * // dhtStream,
40
+ * // source => (async function * () {
41
+ * // for await (const chunk of source)
42
+ * // // Incoming DHT data -> process and yield to respond
43
+ * // })(),
44
+ * // dhtStream
45
+ * // )
46
+ * // } catch (err) {
47
+ * // // Error in stream
48
+ * // }
49
+ * }
50
+ * })
51
+ * ```
52
+ */
8
53
  export async function handle(stream, protocols, options) {
9
54
  protocols = Array.isArray(protocols) ? protocols : [protocols];
10
- const { writer, reader, rest, stream: shakeStream } = handshake(stream);
55
+ options.log.trace('handle: available protocols %s', protocols);
56
+ const lp = lpStream(stream, {
57
+ ...options,
58
+ maxDataLength: MAX_PROTOCOL_LENGTH,
59
+ maxLengthLength: 2 // 2 bytes is enough to length-prefix MAX_PROTOCOL_LENGTH
60
+ });
11
61
  while (true) {
12
- const protocol = await multistream.readString(reader, options);
13
- log.trace('read "%s"', protocol);
62
+ options?.log.trace('handle: reading incoming string');
63
+ const protocol = await multistream.readString(lp, options);
64
+ options.log.trace('handle: read "%s"', protocol);
14
65
  if (protocol === PROTOCOL_ID) {
15
- log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol);
16
- multistream.write(writer, uint8ArrayFromString(PROTOCOL_ID), options);
66
+ options.log.trace('handle: respond with "%s" for "%s"', PROTOCOL_ID, protocol);
67
+ await multistream.write(lp, uint8ArrayFromString(`${PROTOCOL_ID}\n`), options);
68
+ options.log.trace('handle: responded with "%s" for "%s"', PROTOCOL_ID, protocol);
17
69
  continue;
18
70
  }
19
71
  if (protocols.includes(protocol)) {
20
- multistream.write(writer, uint8ArrayFromString(protocol), options);
21
- log.trace('respond with "%s" for "%s"', protocol, protocol);
22
- rest();
23
- return { stream: shakeStream, protocol };
72
+ options.log.trace('handle: respond with "%s" for "%s"', protocol, protocol);
73
+ await multistream.write(lp, uint8ArrayFromString(`${protocol}\n`), options);
74
+ options.log.trace('handle: responded with "%s" for "%s"', protocol, protocol);
75
+ return { stream: lp.unwrap(), protocol };
24
76
  }
25
77
  if (protocol === 'ls') {
26
78
  // <varint-msg-len><varint-proto-name-len><proto-name>\n<varint-proto-name-len><proto-name>\n\n
27
- multistream.write(writer, new Uint8ArrayList(...protocols.map(p => multistream.encode(uint8ArrayFromString(p)))), options);
28
- // multistream.writeAll(writer, protocols.map(p => uint8ArrayFromString(p)))
29
- log.trace('respond with "%s" for %s', protocols, protocol);
79
+ const protos = new Uint8ArrayList(...protocols.map(p => encode.single(uint8ArrayFromString(`${p}\n`))), uint8ArrayFromString('\n'));
80
+ options.log.trace('handle: respond with "%s" for %s', protocols, protocol);
81
+ await multistream.write(lp, protos, options);
82
+ options.log.trace('handle: responded with "%s" for %s', protocols, protocol);
30
83
  continue;
31
84
  }
32
- multistream.write(writer, uint8ArrayFromString('na'), options);
33
- log('respond with "na" for "%s"', protocol);
85
+ options.log('handle: respond with "na" for "%s"', protocol);
86
+ await multistream.write(lp, uint8ArrayFromString('na\n'), options);
87
+ options.log('handle: responded with "na" for "%s"', protocol);
34
88
  }
35
89
  }
36
90
  //# sourceMappingURL=handle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAI/C,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAkDvC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAE,MAAW,EAAE,SAA4B,EAAE,OAA+B;IACtG,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAEvE,OAAO,IAAI,EAAE;QACX,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9D,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAEhC,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC9D,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;YACrE,SAAQ;SACT;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;YAClE,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC3D,IAAI,EAAE,CAAA;YACN,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;SACzC;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,+FAA+F;YAC/F,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAC1H,4EAA4E;YAC5E,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC1D,SAAQ;SACT;QAED,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAC9D,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;KAC5C;AACH,CAAC"}
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"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"}
@@ -20,22 +20,15 @@
20
20
  * ```
21
21
  */
22
22
  import { PROTOCOL_ID } from './constants.js';
23
- import type { AbortOptions } from '@libp2p/interface';
24
- import type { Duplex, Source } from 'it-stream-types';
23
+ import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
24
+ import type { LengthPrefixedStreamOpts } from 'it-length-prefixed-stream';
25
25
  export { PROTOCOL_ID };
26
- export interface ProtocolStream<TSource, TSink = TSource, RSink = Promise<void>> {
27
- stream: Duplex<AsyncGenerator<TSource>, Source<TSink>, RSink>;
26
+ export interface ProtocolStream<Stream> {
27
+ stream: Stream;
28
28
  protocol: string;
29
29
  }
30
- export interface ByteArrayInit extends AbortOptions {
31
- writeBytes: true;
30
+ export interface MultistreamSelectInit extends AbortOptions, LoggerOptions, Partial<LengthPrefixedStreamOpts> {
32
31
  }
33
- export interface ByteListInit extends AbortOptions {
34
- writeBytes?: false;
35
- }
36
- export interface MultistreamSelectInit extends AbortOptions {
37
- writeBytes?: boolean;
38
- }
39
- export { select, lazySelect } from './select.js';
32
+ export { select } from './select.js';
40
33
  export { handle } from './handle.js';
41
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,WAAW,cAAc,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7E,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;IAC7D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,WAAW,cAAc,CAAC,MAAM;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,wBAAwB,CAAC;CAE5G;AAED,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
package/dist/src/index.js CHANGED
@@ -21,6 +21,6 @@
21
21
  */
22
22
  import { PROTOCOL_ID } from './constants.js';
23
23
  export { PROTOCOL_ID };
24
- export { select, lazySelect } from './select.js';
24
+ export { select } from './select.js';
25
25
  export { handle } from './handle.js';
26
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,OAAO,EAAE,WAAW,EAAE,CAAA;AAmBtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,OAAO,EAAE,WAAW,EAAE,CAAA;AAWtB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
@@ -1,17 +1,22 @@
1
- import { Uint8ArrayList } from 'uint8arraylist';
1
+ import { type Uint8ArrayList } from 'uint8arraylist';
2
2
  import type { MultistreamSelectInit } from '.';
3
- import type { AbortOptions } from '@libp2p/interface';
4
- import type { Pushable } from 'it-pushable';
5
- import type { Reader } from 'it-reader';
6
- export declare function encode(buffer: Uint8Array | Uint8ArrayList): Uint8ArrayList;
3
+ import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
4
+ import type { LengthPrefixedStream } from 'it-length-prefixed-stream';
5
+ import type { Duplex, Source } from 'it-stream-types';
7
6
  /**
8
7
  * `write` encodes and writes a single buffer
9
8
  */
10
- export declare function write(writer: Pushable<any>, buffer: Uint8Array | Uint8ArrayList, options?: MultistreamSelectInit): void;
9
+ export declare function write(writer: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, buffer: Uint8Array | Uint8ArrayList, options?: MultistreamSelectInit): Promise<void>;
11
10
  /**
12
11
  * `writeAll` behaves like `write`, except it encodes an array of items as a single write
13
12
  */
14
- export declare function writeAll(writer: Pushable<any>, buffers: Uint8Array[], options?: MultistreamSelectInit): void;
15
- export declare function read(reader: Reader, options?: AbortOptions): Promise<Uint8ArrayList>;
16
- export declare function readString(reader: Reader, options?: AbortOptions): Promise<string>;
13
+ export declare function writeAll(writer: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, buffers: Uint8Array[], options?: MultistreamSelectInit): Promise<void>;
14
+ /**
15
+ * Read a length-prefixed buffer from the passed stream, stripping the final newline character
16
+ */
17
+ export declare function read(reader: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, options?: AbortOptions & LoggerOptions): Promise<Uint8ArrayList>;
18
+ /**
19
+ * Read a length-prefixed string from the passed stream, stripping the final newline character
20
+ */
21
+ export declare function readString(reader: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, options?: AbortOptions & LoggerOptions): Promise<string>;
17
22
  //# sourceMappingURL=multistream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multistream.d.ts","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAOvC,wBAAgB,MAAM,CAAE,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,CAI3E;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI,CAQ5H;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI,CAYjH;AAED,wBAAsB,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAoC3F;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAIzF"}
1
+ {"version":3,"file":"multistream.d.ts","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIrD;;GAEG;AACH,wBAAsB,KAAK,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvN;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5M;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CASlM;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAIhM"}
@@ -1,72 +1,34 @@
1
- import { CodeError } from '@libp2p/interface/errors';
2
- import { logger } from '@libp2p/logger';
3
- import { abortableSource } from 'abortable-iterator';
4
- import first from 'it-first';
5
- import * as lp from 'it-length-prefixed';
6
- import { pipe } from 'it-pipe';
7
- import { Uint8ArrayList } from 'uint8arraylist';
1
+ import { CodeError } from '@libp2p/interface';
2
+ import {} from 'uint8arraylist';
8
3
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
4
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
10
- import { MAX_PROTOCOL_LENGTH } from './constants.js';
11
- const log = logger('libp2p:mss');
12
5
  const NewLine = uint8ArrayFromString('\n');
13
- export function encode(buffer) {
14
- const list = new Uint8ArrayList(buffer, NewLine);
15
- return lp.encode.single(list);
16
- }
17
6
  /**
18
7
  * `write` encodes and writes a single buffer
19
8
  */
20
- export function write(writer, buffer, options = {}) {
21
- const encoded = encode(buffer);
22
- if (options.writeBytes === true) {
23
- writer.push(encoded.subarray());
24
- }
25
- else {
26
- writer.push(encoded);
27
- }
9
+ export async function write(writer, buffer, options) {
10
+ await writer.write(buffer, options);
28
11
  }
29
12
  /**
30
13
  * `writeAll` behaves like `write`, except it encodes an array of items as a single write
31
14
  */
32
- export function writeAll(writer, buffers, options = {}) {
33
- const list = new Uint8ArrayList();
34
- for (const buf of buffers) {
35
- list.append(encode(buf));
36
- }
37
- if (options.writeBytes === true) {
38
- writer.push(list.subarray());
39
- }
40
- else {
41
- writer.push(list);
42
- }
15
+ export async function writeAll(writer, buffers, options) {
16
+ await writer.writeV(buffers, options);
43
17
  }
18
+ /**
19
+ * Read a length-prefixed buffer from the passed stream, stripping the final newline character
20
+ */
44
21
  export async function read(reader, options) {
45
- let byteLength = 1; // Read single byte chunks until the length is known
46
- const varByteSource = {
47
- [Symbol.asyncIterator]: () => varByteSource,
48
- next: async () => reader.next(byteLength)
49
- };
50
- let input = varByteSource;
51
- // If we have been passed an abort signal, wrap the input source in an abortable
52
- // iterator that will throw if the operation is aborted
53
- if (options?.signal != null) {
54
- input = abortableSource(varByteSource, options.signal);
55
- }
56
- // Once the length has been parsed, read chunk for that length
57
- const onLength = (l) => {
58
- byteLength = l;
59
- };
60
- const buf = await pipe(input, (source) => lp.decode(source, { onLength, maxDataLength: MAX_PROTOCOL_LENGTH }), async (source) => first(source));
61
- if (buf == null || buf.length === 0) {
62
- throw new CodeError('no buffer returned', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
63
- }
64
- if (buf.get(buf.byteLength - 1) !== NewLine[0]) {
65
- log.error('Invalid mss message - missing newline - %s', buf.subarray());
22
+ const buf = await reader.read(options);
23
+ if (buf.byteLength === 0 || buf.get(buf.byteLength - 1) !== NewLine[0]) {
24
+ options?.log.error('Invalid mss message - missing newline', buf);
66
25
  throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
67
26
  }
68
27
  return buf.sublist(0, -1); // Remove newline
69
28
  }
29
+ /**
30
+ * Read a length-prefixed string from the passed stream, stripping the final newline character
31
+ */
70
32
  export async function readString(reader, options) {
71
33
  const buf = await read(reader, options);
72
34
  return uint8ArrayToString(buf.subarray());
@@ -1 +1 @@
1
- {"version":3,"file":"multistream.js","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multistream.js","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAuB,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAMtE,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAE1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAE,MAAqG,EAAE,MAAmC,EAAE,OAA+B;IACtM,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAE,MAAqG,EAAE,OAAqB,EAAE,OAA+B;IAC3L,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAE,MAAqG,EAAE,OAAsC;IACvK,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEtC,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;QAChE,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,iBAAiB;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,MAAqG,EAAE,OAAsC;IAC7K,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEvC,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC3C,CAAC"}